我正在写一个让两个坦克相互对抗的程序。我已经写了所有的方法,除了可以结束游戏的fire。到目前为止
public class Tank {
Tank() {
int xPos, yPos;
char direction;
boolean loaded = 0;
}
public void move(Tank currentPlayer) {
if (yPos<=4 && yPos>=0) {
if (xPos<=4 && xPos>=0) {
if (currentPlayer.direction == 'u') {
currentPlayer.yPos--;
}
if (currentPlayer.direction == 'd') {
currentPlayer.yPos++;
}
if (currentPlayer.direction == 'l') {
currentPlayer.xPos--;
}
if (currentPlayer.direction == 'r') {
currentPlayer.xPos++;
}
}
}
}
public void turn(boolean bool, Tank currentPlayer) {
if (currentPlayer.direction == 'u') {
currentPlayer.direction ='r';
}
if (currentPlayer.direction == 'd') {
currentPlayer.direction = 'l';
}
if (currentPlayer.direction == 'l') {
currentPlayer.direction ='u';
}
if (currentPlayer.direction == 'r') {
currentPlayer.direction ='d';
}
}
public void load(Tank currentPlayer) {
currentPlayer.loaded=true;
}
public int fire(Tank currentPlayer, Tank jim) {
// ???
}
}我该如何完成我的程序呢?任何帮助都将不胜感激。
发布于 2012-10-22 12:02:39
您需要一个用于坦克的x位置、y位置和当前方向的getter。例如:
public int getX();
public int getY();
public char getOrientation();通过调用这些方法,您应该获得坦克的x位置、y位置和方向。然后检查命中结果。你知道你面对的是什么方向。所以如果你面朝上,看看另一个水箱是否和你在同一个x上,并且他们的y在你上面。
int otherX = jim.getX();
int otherY = jim.getY();
switch (currentPlayer.getOrientation())
{
case 'u':
//Check if you're in same x
//Check if above player
break;
case ... etc.
}那么在命中的情况下,换句话说,如果满足条件的话。游戏应该以currentPlayer的胜利而结束。
https://stackoverflow.com/questions/13004757
复制相似问题