Excerpt |
---|
Oppgaven handler om å utvide et allerede eksisterende spill (en av TicTacToe, Sokoban, Sudoku, eller selvvalgt spill)fra øving 4 med nye funksjoner. |
I denne oppgaven vil vi gå ut ifra allerede implementerte spill. Vi vil bygge på tidligere implementerte rutenettbaserte spill og legge til nye kommandoer.
...
- finne en måte å representere brukerhandlinger, dvs. lage en klasse som kan lagre informasjon om handlinger
- implementere logikk for å reversere og gjenta handlingen som slike objekter representerer
- administrere angre- og gjenta-stack'er som forklart over (eller tilsvarende logikk)
Obs! For slagskip-spillet skal man ikke implementere angre og gjenta. Se egen artikkel for slagskip.
Del 2 (50%)
I denne delen skal du implementere lagring av spill og innlesing av tidligere lagrede spill, slik at en kan fortsette der en slapp, f.eks. med et vanskelig Sokoban-brett. Du må altså definere et egnet filformat, og støtte dette formatet både ved skriving til fil og lesing fra fil. Merk at det kun er nødvendig å lagre nå-tilstanden til spillet, en trenger ikke lagre tilstand knyttet til angring (undo). Det naturlige vil være å ha et tekstlig (i motsetning til binært) format, med én linje pr. rad i spillet og én eller flere tegn pr. rute i raden. Sokoban har forøvrig et definert standardformat (se http://sokobano.de/wiki/index.php?title=Level_format), som det kan være lurt å støtte for å forenkle bruk av eksisterende brett.
...
Før du går i gang med denne delen kan det være lurt å ta en titt på wikisiden for Lesing fra og skriving til fil.
JavaFX-apper for spillene (morsomt, men ikke obligatorisk)
Som for første trinn av spillene, som det er lenket til over, så har vi laget JavaFX-apper for spillene. I tillegg til grafisk visning av rutenettet, er det nå støtte for å
- lese inn spill-tilstand fra fil, nettadresse (URL) eller fra innholdet i et tekstfelt
- lagring av spill-tilstand til fil, eller i et tekstfelt (mest for debugging)
- angre (undo) og gjenta (redo)
Eksempel på JavaFX-app (Sokoban). Øverst til venstre kan en velge en fil eller skrive inn en nettadresse som en laster spill-tilstanden fra.. En kan også lagre nåværende tilstand til fil. I midten til venstre På høyre side kan en skrive inn spill-tilstanden i et tekstfelt, evt. lime inn noen en har klippet ut fra en annen applikasjon og starte spillet med denne tilstanden. En kan også kopiere spill-tilstanden som er i spill inn i tekstfeltet (mest for debugging) og evt. kopiere den over i en annen applikasjon. Til venstre høyre er det knapper for angring (undo) og gjenta siste angrede handling (redo). |
...
For hvert spill har vi laget en "nedlastningspakke" som gjør det lett å importere de nødvendige filene med Digital Compendium-tillegget. Disse finner du under, én for hver app. Når emfs-pakken er importert så må du
- implementere det nødvendige grensesnittet og
- legge navnet på din spill-klasse inn i fxml-fila for app-en (se instruksjoner i fila).
Så kan du starte app-en ved å høyreklikke på java-fila med samme navn som fxml-fila og (som vanlig) velge Run As->Java Application.
Nedlastingspakker
Fellespakke (brukes av alle)
Code Block |
---|
Code Block | title | Sokoban-pakke
emfs
/games/ #java #package $repo="@github.com:hallvard/javafx/games/src/games/"
FxmlApp.java @ git@github.com:hallvard/javafx/games/src/games/FxmlApp.java;
FxmlBuilderFactory.java @ git@github.com:hallvard/javafx/games/src/games/FxmlBuilderFactory.java;
FxmlGame.java @ git@github.com:hallvard/javafx/games/src/games/FxmlGame.java;
IPersistable.java @ git@github.com:hallvard/javafx/games/src/games/IPersistable.java;
IUndoable.java @ git@github.com:hallvard/javafx/games/src/games/IUndoable.java;
IUpdateable.java @ git@github.com:hallvard/javafx/games/src/games/IUpdateable.java;
PersistableController.java @ git@github.com:hallvard/javafx/games/src/games/PersistableController.java;
UndoableController.java @ git@github.com:hallvard/javafx/games/src/games/UndoableController.java;
Persistable.fxml @ git@github.com:hallvard/javafx/games/src/games/Persistable.fxml;
Undoable.fxml @ git@github.com:hallvard/javafx/games/src/games/Undoable.fxml;
imagegrid/ #java #package
ImageGrid.java @ git@github.com:hallvard/javafx/games/src/games/imagegrid/ImageGrid.java;
ImageGridGame.java @ git@github.com:hallvard/javafx/games/src/games/imagegrid/ImageGridGame.java;
|
Sokoban
Code Block |
---|
emfs /games/ ; #java #package sokoban/ #java #package sokoban2/ #java #package ISokoban.java @ git@github.com:hallvard/javafx/games/src/games/sokoban/sokoban2/ISokoban.java; SokobanFX.java @ git@github.com:hallvard/javafx/games/src/games/sokoban/sokoban2/SokobanFX.java; SokobanFX.fxml @ git@github.com:hallvard/javafx/games/src/games/sokoban/sokoban2/SokobanFX.fxml; ; sample.sok @ git@github.com:hallvard/javafx/games/src/games/sokoban/sample.sok; box_on_target16x16.png @ git@github.com:hallvard/javafx/games/src/games/sokoban/box_on_target16x16.png; box16x16.png @ git@github.com:hallvard/javafx/games/src/games/sokoban/box16x16.png; empty16x16.png @ git@github.com:hallvard/javafx/games/src/games/sokoban/empty16x16.png; player_on_target16x16.png @ git@github.com:hallvard/javafx/games/src/games/sokoban/player_on_target16x16.png; player16x16.png @ git@github.com:hallvard/javafx/games/src/games/sokoban/player16x16.png; target16x16.png @ git@github.com:hallvard/javafx/games/src/games/sokoban/target16x16.png; wall16x16.png @ git@github.com:hallvard/javafx/games/src/games/sokoban/wall16x16.png; |
Sudoku
Code Block |
---|
emfs /games/ #java #package sudoku/ #java #package sudoku2/ #java #package ISudoku.java @ git@github.com:hallvard/javafx/games/src/games/sudoku/sudoku2/ISudoku.java; SudokuFX.java @ git@github.com:hallvard/javafx/games/src/games/sudoku/sudoku2/SudokuFX.java; SudokuFX.fxml @ git@github.com:hallvard/javafx/games/src/games/sudoku/sudoku2/SudokuFX.fxml; |
TicTacToe
Code Block |
---|
emfs
/games/ #java #package
tictactoe/ #java #package
tictactoe2/ #java #package
ITicTacToe.java @ git@github.com:hallvard/javafx/games/src/games/tictactoe/tictactoe2/ITicTacToe.java;
TicTacToeFX.java @ git@github.com:hallvard/javafx/games/src/games/tictactoe/tictactoe2/TicTacToeFX.java;
TicTacToeFX.fxml @ git@github.com:hallvard/javafx/games/src/games/tictactoe/tictactoe2/TicTacToeFX.fxml; |
Slagskip
Se egen artikkel.
Include Page | ||||
---|---|---|---|---|
|
...