Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

GUI-et har tre deler, fra øverst til nederst:

  • Øverst: En kan angi et nivå/bret e.l. og starte spiller ved å trykke "init and run"-knappen
  • I midten: Rutenettet vises, og hvis det har fokus, så kan en trykke piltastene eller klikke på en rute
  • Nederst: Tekstfelt for å gi inn kommandoer
PlantUML Macro
border1
actor Bruker
Bruker -> GUI: init og run
GUI -> DinSpillklasse: init(<innhold av tekstfelt>)
GUI -> DinSpillklasse: getGridProvider()
GUI -> GridProvider: getGridWidth(), getGridHeight()
GUI -> GridProvider: getGridElement(...)
GUI -> DinSpillklasse: getTextFor(...), getImageFor(...)
GUI -> Bruker: rutenettoppdatering
GUI -> GridProvider: addGridListener(this)
GUI -> DinSpillklasse: run(this)
DinSpillklasse -> GUI: info(...)
GUI -> Bruker: statusoppdatering

Når brukeren trykker "init and run"-knappen vil GUI-et ta innholdet i det øverste tekstfeltet og gi det som argument til spillklassen sin init-metode. Deretter vil den be om å få rutenettet vha. getGridProvider()-metoden. Dette objektet vil så spørres om antall kolonner (getGridWidth()) og rader (getGridHeight()) og selve innholdet (getGridElement(...)), slik at den kan tegne rutenettet. Akkurat hvilken tekst og hvilket bilde som vises pr. rute bestemmes av svaret fra getTextFor(...) og getImageFor(...). Til slutt vil GUI-et registrere seg som lytter, slik at den kan reagrere på fremtidige endringer i rutenett. Til slutt startes selve spillet med et kall til run(...) og denne metoden vil typisk gi oppstartsinfo til brukeren med info(...)-metoden.

PlantUML Macro
border1
actor Bruker
Bruker -> GUI: doCommand
GUI -> DinSpillklasse: doCommand(<innhold av tekstfelt>)
DinSpillklasse -> DinRutenettklasse: <endre rutenett>
DinRutenettklasse -> GUI: gridChanged(...)
GUI -> GridProvider: getGridElement(...)
GUI -> DinSpillklasse: getTextFor(...), getImageFor(...)
GUI -> Bruker: rutenettoppdatering
DinSpillklasse -> GUI: info(...)
GUI -> Bruker: statusoppdatering

Når brukeren trykker "doCommand"-knappen vil GUI-et ta innholdet i det nederste tekstfeltet og gi det som argument til spillklassen sin doCommand-metode. Dette vil typisk trigge en endring i rutenettet, som gir beskjed til lytterne, inkl. GUI-et, om endringen. GUI-et vil hente innholdet i ruten(e) som ble endret med getGridElement(...) og hvilken tekst og hvilket bilde som skal vises med getTextFor(...). Det kan også hende at statusen til spillet oppdateres med info(...)-metoden.

...