You are on page 1of 2

D:\PANOS - ameise imp\Hive\programHive\src\model\ds\piece\Ant.

java

Freitag, 24. Juni 2011 17:04

package model.ds.piece; import java.util.ArrayList; import java.util.Stack; import import import import model.HexDirection; model.PlayerColor; model.ds.GameTile; model.ds.PieceType;

import common.Tuple; public class Ant extends Piece { public Ant(PlayerColor color, int id){ super(color, id); this.type = PieceType.Ant; }

@Override public ArrayList<Tuple<Integer, HexDirection>> getReachableFields( GameTile tile) { ArrayList<Tuple<Integer,HexDirection>> antmove = new ArrayList<Tuple<Integer, HexDirection>>(); if (this!=tile.pStack.peek()) return new ArrayList<Tuple<Integer, HexDirection>>(); //create stacks that will help us with wide-search (breite-suche) Stack<GameTile> stackmarkie = new Stack<GameTile>(); Stack<GameTile> stack = new Stack<GameTile>(); stack.push(tile); stackmarkie.push(tile); tile.remove(); while(!stack.isEmpty()) { //take the first element of the stack GameTile tmptile = new GameTile(); tmptile = stack.pop(); HexDirection dir = HexDirection.Upper; for (int i = 0; i < 6; i++, dir = dir.next()) { if(!tmptile.isOccupied(dir)) { if(tmptile.isConnectedMove(dir) && tmptile.isPassable(dir)) { if (tmptile.getNeighbor(dir) != tile) { antmove.addAll(getNeighborAnchors(tmptile.getNeighbor(dir))); } GameTile neighbor = new GameTile(); neighbor = tmptile.getNeighbor(dir); //if we have not visit this neighbor if(!stackmarkie.contains(neighbor)) { stack.push(neighbor); stackmarkie.push(neighbor); } } }
-1-

D:\PANOS - ameise imp\Hive\programHive\src\model\ds\piece\Ant.java

Freitag, 24. Juni 2011 17:04

} } tile.add(this); return antmove; } }

-2-

You might also like