...
Eksempelbrett | Ser slik ut |
---|---|
SAMPLE_LEVEL1 | "...XX.....\n...XX..XXX\n...XX.....\n..........\n..........\n.X........\n.X...XXX..\n.X........\n.X..XX....\n.........." |
SAMPLE_LEVEL2 | ".XXX......\n.XXX....X.\n........X.\n........X.\n...XX...X.\n..........\n..X..XXX..\n..X.......\n..X.......\n.........." |
SAMPLE_LEVEL3 | "..........\n..........\n..........\n..XX......\n...XXX....\n....XXXX..\n...XXX....\n.XXX......\n.XXX......\n.........." |
Tips: Lag en egen klasse Levels.java som har disse eksempelbrettene som felt (tilstand). De kan være public static final. final betyr at verdien til variabelen ikke kan endres etter den er initialisert. Se /sokoban/SampleLevels.java for inspirasjon.
...
Code Block | ||
---|---|---|
| ||
Player 1's turn: | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | 2 2 That's a miss... Player Two's turn: | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | 5 6 That's a hit! Player One's turn: | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ . ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | 2 5 That's a miss... Player Two's turn: | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ X ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | | ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | |
JavaFX-app
Konsollbasert IO er greit for å teste spillet, men det er kanskje artigere å lage en ordentlig app, med grafisk visning av rutenettet og bruk av musa for å klikke på ruter du vil skyte. Vi har laget en JavaFX-basert app, som du kan laste ned og koble til din Battleship-klasse. App-koden forutsetter at spill-logikken er implementert i en klasse Battleship som implementerer IBattleship-grensesnittet (i pakken games.battleship). Med bruk av grensesnitt, så gjøres det klart hvilke metoder appen trenger og som du må implementere.
Last først ned ISudoku-grensesnittet fra /games/sudoku/sudoku1/ISudoku.java, og programmer din spill-klasse slik at den implementerer dette grensesnittet. Så laster du ned app-klassene (og filene), så du kan prøve om det virker. Husk at du må endre en linje i BattleshipFX.fxml slik at den peker på klassen din som implementerer IBattleship-grensesnittet.
Fil-tre som må lastes ned evt. importeres med Digital Compendium-panelet
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;
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;
;
battleship/ #java #
IBattleship.java @ git@github.com:hallvard/javafx/games/src/games/battleship/IBattleship.
BattleshipFX.java @ git@github.com:hallvard/javafx/games/src/games/battleship/BattleshipFX.
BattleshipFX.fxml @ git@github.com:hallvard/javafx/games/src/games/battleship/BattleshipFX.
;
battleship/res
hit64x64.png @ git@github.com:hallvard/javafx/games/src/games/battleship/res/hit64x64.
miss64x64.png @ git@github.com:hallvard/javafx/games/src/games/battleship/res/miss64x64.png
ocean64x64.png @ git@github.com:hallvard/javafx/games/src/games/battleship/res/ocean64x64.png |
Merk at du godt kan la være bruke å ISudoku-grensesnittet, men da må du omprogrammere appen, så den bruker andre metoder enn vi har forutsatt. Det er nok mer arbeid, men kanskje enda mer lærerikt?