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 å
...
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 |
---|
emfs
/games/ #java #package
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 | ||||
---|---|---|---|---|
|
...