You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

I Memory-eksempel versjon 1 laget vi en enkel tekstbasert versjon av et hukommelsesspill, hvor brukeren skulle prøve å huske og gjenta en så lang sekvens med tall som mulig. Koden var delt i to klasser, Memory og MemoryProgram, hvor Memory implementerte logikk som var ment å være uavhengig av om spillet var tekstlig eller grafisk, og ble brukt av MemoryProgram som håndterte kommunikasjonen med brukeren. Før vi prøver oss på en grafisk versjon basert på JavaFX så er det lurt å se om Memory-klassen kan gjøres litt mer generell og fleksibel. Dette kan både gjøre det enklere å lage neste versjon og gi mulighet til variasjoner i spillet.

versjon 1 inneholdt sekvensen tall mellom 1 og 9, men det er ikke noe i veien for å tillatte flere enn disse ni verdiene. Verdiene trenger egentlig ikke være tall heller, det kan være hva som helst bare en kan sjekke dem mot det brukeren gjentar. I en grafisk versjon kan det f.eks. være aktuelt å klikke på figurer med ulike fasonger, farger og/eller motiver. Logikken i Memory-objektet blir essensielt den samme. Forskjellen er hovedsaklig at når en skal utvide sekvensen, så genereres et tilfeldig tall (som før) som brukes til å plukke et element fra en liste med alle mulige verdier. Denne lista er det naturlig å oppgi når Memory-objekter opprettes. Klassediagrammet for Memory under, viser hva som er endret:

MemoryList<?> possibleItemsList<?> expectedItemsint acceptedCountMemory(Collection<?>)? nextItem()Boolean acceptItem(?)

Vi ser at Memory-objekter nå vil inneholde en liste over alle mulige verdier kalt possibleItems, som elementene i expectedItems er plukket fra. Vi har også lagt til en konstruktør, som krever at en oppgir samlingen av mulig verdier, når objektet opprettes.

 

  • No labels