I denne oppgaven skal Battleship utvides med muligheten for å la datamaskinen spille som den ene spilleren. For å støtte dette må du fiendeklassen implementere IEnemy-grensesnittet, som er definert under. Tips: Lag en ny klasse som arver fra Battleship-klassen din og implementerer IEnemy.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
public interface IEnemy { /* * @arg: The board which the enemy fires at. */ public void init(IBattleship board);extends IBattleship { /** * FiresReturns athe shotcoordinates attargeted afor coordinate chosenfire by the enemy artificial intelligenceAI. * @return AnA arrayGridLocation of length 3. First element is either -1 (Null if no ship at coordinate), 1 (True if the ship was sunk), 2 (false if not)object containing the coordinates. * The second element is the x coordinate. * The third element is the y coordinate. */ public int[]GridLocation firetarget(); } |
Det
GridLocation er ingen krav til å lage en smart AI, men om du ønsker det, så er det lov. Et tips til enkel implementasjon er å la datamaskinen skyte helt tilfeldige ruter.
en klasse du skal lage, som har følgende egenskaper og metoder:
- int x – x-koordinaten.
- int y – y-koordinaten
- int getX() – returnerer x-koordinaten.
- int getY() – returnerer y-koordinaten.
- List<GridLocation> getNeighbors(int boardSize) – returnerer de (maks.) fire nabo-koordinatene til dette GridLocation-objektet. Kun de som er innenfor brettet skal være med. Det kan derfor være færre enn fire elementer. Diagonaler tas ikke med.
Del 1: Tilfeldig skyting
Lag en implementasjon av IEnemy som skyter helt tilfeldige ruter på brettet. Sørg for at en rute som har blitt skutt før ikke kan velges igjen.
Del 2: Hunt / Target
Først, skyt tilfeldig (hunt mode) helt til et skip er blitt truffet. Når et skip er truffet går AI-en inn i target mode. Da skytes ruter som er ved sida av den ruta som nettopp ble truffet. Det er mulig å søke opp, ned, høyre og venstre for å lete etter mer av det samme skipet.
Se her for mer informasjon: http://www.datagenetics.com/blog/december32011/
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år emfs-pakken er importert så må du
...
Så kan du starte app-en ved å høyreklikke på java-fila med samme navn som fxml-fila (<spillnavn>FX.java) og velge Run As->Java Application.
...
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;
IUpdateable.java @ git@github.com:hallvard/javafx/games/src/games/IUpdateable.java;
PersistableController.java @ git@github.com:hallvard/javafx/games/src/games/PersistableController.java;
Persistable.fxml @ git@github.com:hallvard/javafx/games/src/games/Persistable.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;
;
battleship/ #java #package
hit64x64.png @ git@github.com:hallvard/javafx/games/src/games/battleship/hit64x64.png;
miss64x64.png @ git@github.com:hallvard/javafx/games/src/games/battleship/miss64x64.png;
ocean64x64.png @ git@github.com:hallvard/javafx/games/src/games/battleship/ocean64x64.png;
battleship3/
IBattleship.java @ git@github.com:hallvard/javafx/games/src/games/battleship/battleship3/IBattleship.java;
IBattleshipGame.java @ git@github.com:hallvard/javafx/games/src/games/battleship/battleship3/IBattleshipGame.java;
IEnemy.java @ git@github.com:hallvard/javafx/games/src/games/battleship/battleship3/IEnemy.java;
IBattleshipPersistence @ git@github.com:hallvard/javafx/games/src/games/battleship/battleship3/IBattleshipPersistence.java
BattleshipFX.java @ git@github.com:hallvard/javafx/games/src/games/battleship/battleship3/BattleshipFX.java;
BattleshipFX.fxml @ git@github.com:hallvard/javafx/games/src/games/battleship/battleship3/BattleshipFX.fxml; |