Ich bin gerade dabei ein Bomberman Spiel zu schreiben. Dort habe ich jetzt eine move Methode implementiert, die die Spielfigur bewegen soll. Das man bei Bomberman nicht auf jedes Feld sondern, logischerweise, nur auf Hindernisfreie Felder treten kann, muss ich vorher abfragen ob das zu betretende Feld hindernisfrei ist. Zunächst hatte ich die 4 Richtungen in 4 Methoden aufgeteilt "moveUp(), moveRight() ...", doch das gefiel mir nicht so gut.
Dann habe ich versucht das ganze mit einer HashMap zu lösen:
So habe ich nur noch eine einzige Methode.
Was sagt ihr dazu ? Ist sowas ein günstiger Einsatz für eine HashMap oder hätte ich lieber bei meinen 4 Methoden bleiben sollen ?
Java:
public boolean moveUp(Player player){
int xPos = player.getXPos();
int yPos = player.getYPos();
if(fields[xPos][yPos-1].isBetretbar()){
player.setYPos(yPos+1);
return true;
}
return false;
}
// usw ...
Dann habe ich versucht das ganze mit einer HashMap zu lösen:
Java:
Map<Integer,Point> moveOrders = new HashMap<Integer,Point>();
public PlayGround() {
moveOrders.put(PlayGround.MOVE_UP,new Point(0,-1));
moveOrders.put(PlayGround.MOVE_RIGHT,new Point(1,0));
moveOrders.put(PlayGround.MOVE_DOWN,new Point(0,1));
moveOrders.put(PlayGround.MOVE_LEFT,new Point(-1,0));
}
Java:
public boolean move(Player player, int moveOrderKey){
int xPos = player.getXPos();
int yPos = player.getYPos();
Point moveOrder = moveOrders.get(moveOrderKey);
if(fields[xPos+moveOrder.x][yPos+moveOrder.y]!=null){
if(fields[xPos+moveOrder.x][yPos+moveOrder.y].isWalkable()){
player.setPosition(xPos+moveOrder.x, yPos+moveOrder.y);
return true;
}
}
return false;
}
So habe ich nur noch eine einzige Methode.
Was sagt ihr dazu ? Ist sowas ein günstiger Einsatz für eine HashMap oder hätte ich lieber bei meinen 4 Methoden bleiben sollen ?