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å fiendeklassen implementere IEnemy-grensesnittet, som er definert under. Tips: Lag en ny klasse som arver fra Battleship-klassen din og implementerer IEnemy.

 

Code Block
themeEclipse
languagejava
titleIEnemy.java
public interface IEnemy extends IBattleship {

    /**
     * Returns the coordinates targeted for fire by the AI.
	 * @return A GridLocation object containing the coordinates.
     */
    public GridLocation target();

}

 

GridLocation er 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

  1. implementere det nødvendige grensesnittet og
  2. 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 (<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;