I denne oppgaven skal spillogikken og rutenettet fra tidligere spill kobles til et forbedret grensesnitt med bilder. Det vil være en del ferdige og nesten ferdige filer fra før av, alle i pakken patterns.observable.gridgame. Spillklassen din skal implementere grensesnittet GenericGridGame. Koden i brukergrensesnittet er dokumentert godt, les denne for å finne ut nøyaktig hva de påkrevde metodene skal gjøre.
I GenericGameController må du instansiere spillet ditt på indikert sted (se kommentaren i koden).
Den ferdigskrevne GenericGameController implementerer GridListener-grensesnittet, som gjør GenericGameController til en observatør av spillklassen din og krever metoden:
Hvis f.eks. metoden kalles med x=1, y=2, w=2 og h=1, så angir det at rutene 1,2 og 2,2 er endret. Det er opp til rutenett-klassen å avgjøre om endringer av flere ruter rapporteres med ett eller flere kall til gridChanged-metoden. Så endringer i rutene 1,2 og 2,2 kan også rapporteres med to kall, ett hvor x=1, y=2 og ett hvor x=2, y=2, med w=1 og h=1 for begge. Så selv om en kaller denne metoden, så er det ikke dermed sagt at alle rutene i det angitte rektangelet er endret (strengt tatt trenger ingen å være det).
Grensesnittet GenericGridGame inkluderer følgende metoder for lytterhåndtering:
Tanken er at lyttere skal kunne registrere seg selv som lytter til spillet ditt. Spillklassen din må da holde styr på sine lyttere, og bør bruke de to sistnevnte metodene til dette. Dette er observert-delen av observatør-observert-teknikken.
GenericGridGame har også metodene
Disse kan være vanskelige å skjønne - tanken er at t er innholdet i en celle, av klasse T. Ved å inspisere controller-koden kan du se at getImages direkte bruker resultatet fra getCell. T kan være så enkelt som en char, eller det kan være et objekt av en klasse du har definert selv for innhold i en rute. Selve metoden getImages skal returnere et array av strenger som inneholder enten:
Logikken for å gå fra T til String[] skrives i spillklassen i metoden getImages. Et array skal returneres fordi du får da muligheten til å legge flere bilder over hverandre hvis bildene du bruker har gjennomsiktighet. Dersom du kun vil bruke ett enkelt bilde per rute, eller velger å bruke en streng (alternativ 2 over) skal du kun returnere et array av lengde 1, hvor det ene elementet er bildefilnavnet eller strengen som beskrevet over. Dersom du velger å bruke bilder skal de ligge i pakken patterns.observable.gridgame, sammen med resten av .java-filene. |
For å kjøre spillet ditt i JavaFX kan du høyreklikke på GenericGame.fxml > Run As > FXML Application.