Expand | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||
Oppgave a)Skriv en metode removeVowels, som tar inn et String-parameter og returnerer en String, hvor alle vokalene fra parameteret er fjernet. F.eks. skal removeVowels(”Java”) returnere ”Jv”. Dersom parameteret ikke inneholder noen vokaler så skal parameteret returneres og ikke en ny/annen String.
Oppgave b)
Oppgave c)
Oppgave d)
Oppgave e)
Oppgave f)
|
Expand | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||
Oppgave a)
Oppgave b)
Oppgave c)
Oppgave d)
Oppgave e)
Oppgave f)
|
Expand | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||
Oppgave a)
Oppgave b)
Oppgave c)
Oppgave d)
Oppgave e)
Oppgave f)
|
Oppgave b)Beskriv den generelle testeteknikken som JUnit-testing (og JExercise) baserer seg på. Skriv en testmetode som tester om removeVowels tilfredsstiller kravene som er beskrevet over. Testmetoden trenger ikke være skrevet iht. JUnit-rammeverket sine regler og konvensjoner.
Oppgave c)Skriv en metode findSequence, som tar inn en char-tabell med ’x’er og ’o’er og en posisjon (int). Anta at tegnet på den angitte posisjonen er en ’x’. Da skal metoden returnere antall ’o’er som kommer etter, før en ny ’x’. Dersom det ikke er noen ’x’ før enden på tabellen, skal -1 returneres. Dersom tegnet på den angitte posisjonen er en ’o’, så er logikken den sammen, men med rollene til ’x’ og ’o’ byttet om. Gitt at charArray er {’x’,’x’,’o’,’o’,’x’,’o’}, så skal findSequence(charArray, 0) returnere 0, findSequence(charArray, 1) returnere 2, findSequence(charArray, 2) returnere 0, findSequence(charArray, 3) returnere 1, findSequence(charArray, 4) returnere -1 og findSequence(charArray, 5) returnere -1.
Oppgave d)Gitt følgende Iterator-implementasjon og testmetode:
assertTrue-metoden sjekker om argumentet er true, mens assertEquals-metoden sjekker om de to argumentene er like. Klassen Illegal123Iterator er ment å generere tallene 1, 2, 3 og testmetoden testIllegal123Iterator er ment å teste dette. Ved første øyekast virker begge riktige, siden testmetoden tester at sekvensen som returneres er 1, 2, 3 og ikke gir noen feil ved kjøring. Imidlertid inneholder både klassen og testmetoden logiske feil. Vis først hvordan testmetoden burde vært skrevet for å finne feilen i Illegal123Iterator-klassen. Vis deretter hvordan Illegal123Iterator-klassen burde vært skrevet for å tilfredsstille kravene til en Iterator-implementasjon.
|
Expand | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Othello-spillet, også kalt Reversi, spilles av to spillere på et spillebrett med 8x8 ruter. Hver spiller har hvert sitt sett med brikker, hhv. sorte og hvite. Spillet starter med 4 brikker lagt på brettet slik figuren under til venstre viser (bilder tatt fra http://en.wikipedia.org/wiki/Reversi):
Spillerne veksler på å plassere én brikke om gangen på brettet, og sort starter. En brikke må plasseres slik at minst én sekvens av motstanderbrikke fanges mellom egne brikker. Sekvenser kan være vertikale, horisontale eller diagonale. I figuren over i midten er fire mulige plasseringer av en sort brikke angitt. I alle tilfellene vil én sekvens av én hvit brikke bli fanget. Når en brikke er plassert, erstattes motstanderbrikkene som er fanget, med brikker av egen farge. Dette er vist i figuren til høyre, hvor en sort brikke er plassert på d3 og den hvite brikken på d4 er fanget og erstattet med en sort en. Det er nå hvit sin tur, og det er tre mulige plasseringer, som vist i figuren under til venstre. Dersom hvit velger alternativet c5, fanges den sorte brikken på d5 og blir erstattet med en hvit, slik figuren under i midten viser.
Merk at brikker kan fanges i mer enn én retning. Dette er illustrert i figuren over til høyre, hvor en sort brikke plassert på h5 vil fange de hvite brikkene på g5 og g4. De andre mulighetene er her angitt med lysere farge. Det er også mulig å fange mer enn én brikke i hver retning (dette er ikke vist her). Dersom en spiller ikke har noen lovlige plasseringer, så går turen videre til den andre spilleren. Spillet fortsetter inntil ingen av spillerne har noen lovlige plasseringer, f.eks. fordi brettet er fullt eller alle brikkene har samme farge. Spilleren med flest brikker på brettet vinner. Oppgave a)Forklar hvordan du vil representere brett og (plasserte) brikker med Java-klasser og hvordan du vil innkapsle tilstanden med metoder.
Oppgave b)Gitt følgende enum-klasse og klassene du har beskrevet:
Deklarer og implementer metoder i brettklassen din for å:
Definer gjerne ekstra metoder for å gjøre implementasjonen enklere å skrive og forstå. Dersom en metode er vanskelig å skrive, så deklarer den og forklar hva den er ment å gjøre.
Oppgave c)Beskriv med tekst og kode hvordan du vil implementere et spill som kommuniserer med spillerne vha. System.in og System.out, og som styrer spillet iht. reglene angitt over. Eksempel på interaksjon med brukeren, hvor øverst rad tilsvarer System.out og nederste System.in:
Bruk metodene definert tidligere i oppgaven, også om du ikke har implementert dem. Besvarelsen blir vurdert etter hvor logisk og strukturert løsningen er, om innkapsling er brukt, hvorvidt Java er godt og riktig brukt og om koden er logisk riktig.
|
Expand | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||
En highscore-liste brukes for å rangere ulike spilleres resultater. For eksempel kan en ha en highscore-liste med antall flytt/dytt som en har brukt på et bestemt Sokoban-nivå eller tiden en har brukt på en bestemt Sudoku. Merk at det ikke bør tillates å ha ulike typer spill i samme highscore-liste, hvis det ikke gir mening å sammenligne resultatene.Du skal implementere en slik liste og vise hvordan den skal brukes for et bestemt spill. Du står fritt til å definere klasser og metoder som du synes er nødvendige. Vi ønsker en generell løsning, slik at mange typer spill kan håndteres. Begrens evt. problemet og løsningen for å gjøre det enklere og mindre tidkrevende, heller enn å lage en halvveis løsning. Skisse til løsning, som du kan velge å jobbe videre med:
Besvarelsen blir vurdert etter hvor logisk og strukturert løsningen er, om innkapsling er brukt, hvorvidt Java er godt og riktig brukt og om koden er logisk riktig.
|
Expand | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||
Oppgave a)Forklar den generelle virkemåten til observatør-observert-teknikken.
Oppgave b)Beskriv med tekst og kode hvordan du vil gjøre din highscore-liste-implementasjon over observerbar vha. denne teknikken.
|
...