Excerpt |
---|
Denne oppgaven er en videreføring av de tidligere spilloppgavene TicTacToe, Sokoban, Sudoku og Battleship, hvor en skal gjøre rutenettet observerbart og implementere et par grensesnitt, så spillogikken kan kobles til et ferdig skrevet grafisk brukergrensesnitt. I tillegg skal spillet utvides med ekstra funksjonalitet. |
...
Filene som er nødvendig for å knytte ditt spill opp mot vårt GUI er tilgjengelig i Del 2 av denne oppgaven.
ObservableGrid- og GridListener-grensesnittene
Det første grensesnittet er knyttet til rutenettdata og heter ObservableGrid. Tanken er at GUI-et må kunne registrere seg som lytter, slik at det holdes oppdatert når rutenettet endres. Dette er observert-delen av observatør-observert-teknikken. Observatør-delen av observatør-observert-teknikken utgjøres av GridListener-grensesnittet, og siden det er GUI-et som skal holdes oppdatert, så er det den ferdigimplementerte GUI-klassen som må implementere GridListener. GUI-klassen utdelt i Del 2 av denne oppgaven implementerer allerede GridListener, så det er kun nødvendig å la din spillklasse implementere ObservableGrid og samt skrive logikken for å varsle registrerte GridListener-objekter når det skjer endringer i rutenettet.
| ObservableGrid har følgende metoder for lytterhåndtering:
Lytterne må implementere GridListener og dermed følgende metode:
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).
|
For denne delen av oppgaven trenger du følgende filer: imagegrid/GridListener.java og imagegrid/ObservableGrid.java
Del 2: Utvidelse av spillet
I denne deloppgaven skal spillet utvides med ny funksjonalitet. Hva denne funksjonaliteten består i avhenger av hvilket spill du har valgt å implementere. Dette er beskrevet på egne sider for hvert spill:
- Sokoban - Del 3
- Sudoku - Del 3
- TicTacToe - Del 3
- Battleship - Del 3
- Selvvalgt spill - Del 3: gjør en utvidelse av spillet ditt med en arbeidsmengde omtrent tilsvarende utvidelsen av de andre spillene.
Filene som er nødvendige for å kjøre det forhåndsskrevne GUI-et er tilgjengelig på disse ulike oppgavesidene. Siden det er GUI-et som styrer showet, så er det klassen <spill>FX.java som skal startes ved kjøring av spillet ditt.