0

我正在编写一个程序,让两个坦克相互对抗。除了会结束游戏的火之外,我已经编写了所有方法。至今

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) {
        // ???
    }    
}

我该如何完成我的程序?任何帮助,将不胜感激。

4

1 回答 1

1

您需要一个用于 x 位置、y 位置和水箱当前方向的吸气剂。例如:

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 胜利结束。

于 2012-10-22T04:02:38.683 回答