Versions Compared

Key

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

Oppgaven handler om spillet SokobanSokoban består av et brett som inneholder med mål, bokser, vegger og en spiller. Spilleren skal forsøke å flytte alle boksene til et mål. Spilleren vinner spillet når alle boksene står på et mål.

Sokoban forklares enklest ved demonastrasjon demonstrasjon (for en nærmere forklaring, se http://sokobano.de/wiki/index.php?title=Main_Page):  

...

  • Programmet må bestå av minst tre klasser; en klasse for å representere et felt på brettet, en klasse for brettet med ruter og ett hovedprogram for interaksjon med spilleren.
  • Brett-klassen må kunne lese av brett på samme format som ta inn et vilkårlig brett som en array av strenger (String[], se format i brettene oppgitt i Java-filen under).
  • Brett-klassen må ha en toString()-metode som skriver ut brettet slik det er beskrevet underi formatet vist i tabellen nedenfor.
  • Spillet må kunne spilles gjennom konsollen. Dvs. at en spilleren må kunne skrive instruksjoner i konsollen, som deretter utføres i spillet.

 

TegnBetydningUtskrift

'#'

vegg
#######
#.  # #
#$* $ #
#  $@ #
# ..  #
#  *  #
#######
'.'mål
'$'boks
'*'boks på mål
'@'spiller
'+'spiller på mål
' 'tomt felt

...

  • I representasjonen av brettet kan det være lurt å skille mellom de faste (vegger ++) og de bevelige (spilleren ++) delene av brettet
  • For interaksjon med spilleren er det lurt å bruke en Scanner.
  • Det er vanlig å bevege en spiller med tastene a, s, d og w, som representerer henholdsvis venstre (vest), ned (sør), høyre (øst) og opp (nord).
Det ligger fire testbrett du kan bruke i filen: objectstructures/SampleLevels.java. Ved å kalle Sokoban(SampleLevels.level3) vil du opprette brettet vist i tabellen over.

...