0

2 台の戦車を互いに対戦させるプログラムを作成しています。ゲームを終了させる火以外のすべてのメソッドを作成しました。ここのところ

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があなたの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 に答える