Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

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 underTips: Lag en ny klasse som arver fra Battleship-klassen din og implementerer IEnemy.

 

Code Block
themeEclipse
languagejava
titleIEnemy.java
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. 

Image Added

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
titlebattleship.emfs
collapsetrue
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;