I denne oppgaven skal Battleship utvides med muligheten for å la datamaskinen spille som den ene spilleren. For å støtte dette må spillklassen 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 extends IBattleship { /** * Returns the coordinates targeted for fire by the AI. * @return A GridLocation object containing the coordinates. */ public GridLocation target(); } |
...
- 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.
Tips: Lag en ny klasse som arver fra Battleship-klassen din og implementerer IEnemy.
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.
...
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; Cell.java IBattleshipPersistence @ git@github.com:hallvard/javafx/games/src/games/battleship/battleship3/Cell.java; Battleship.java @ git@github.com:hallvard/javafx/games/src/games/battleship/battleship3/Battleship.java;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; |
...