0

メソッド moveGhost が何をするのか理解できませんか? 0 から 7 までの乱数を選ぶ理由と、それがパックマンを追いかけることと何の関係があるのでしょうか? ああ、ゴーストの GUI イメージを作成するにはどうすればよいですか? このコードを見つけて、その仕組みを理解しようとしています。

public class GhostRed {

private int size;
private int row, col;

//constructor
public GhostRed(int r, int c, int s) {
    row = r;
    col = c;
    size = s;

}

public int getRow() {
    return row;
}
public int getCol() {
    return col;
}
public void setRow(int r) {
    row = r;

}
public void setCol(int c) {
    col = c;
}

private boolean checkMove(int r, int c) {
    boolean check=true;
    if (r<0 || r > size-1 || c < 0 || c > size-1) {
        check= false;
    }
    return check;
}

public boolean moveGhost() {

    boolean move=true;
    Random r = new Random();
    int newMove = r.nextInt(7); //taking a random number btw 0-7


    if (newMove == 0) {
        if(checkMove(row-1, col)==false) {
        move=false;
        }
        else{
        row = row-1;
        }

    }
    if (newMove == 1) {
        if(checkMove(row+1, col)==false) {
        move= false;
        }
        else{
        row = row+1;
        }

    }
    if (newMove == 2) {
        if(checkMove(row, col-1)==false) {
        move= false;
        }else{
        col = col-1;
        }

    }
    if (newMove == 3) {
        if(checkMove(row, col+1)==false) {
        move= false;
        }
        else{
        col = col+1;
        }

    }
    if (newMove == 4) {
        if(checkMove(row-1, col-1)==false) {
        move= false;
        }
        else{
        row = row-1;
        col = col-1;
        }

    }
    if (newMove == 5) {
        if(checkMove(row-1, col+1)==false) {
        move= false;
        }
        else{
        row = row-1;
        col = col+1;
        }

    }
    if (newMove == 6) {
        if(checkMove(row+1, col-1)==false) {
        move= false;
        }
        else{
        row = row+1;
        col = col-1;
        }

    }
    if (newMove == 7) {
        if(checkMove(row+1, col+1)==false) {
        move= false;
        }else{
        row = row+1;
        col = col+1;
        }

    }

    return move;


}

}

4

1 に答える 1

3

このmoveGhostメソッドは、8 つのコンパス方向 (N、S、E、W、NW、SW、NE、NW) からランダムな方向にゴーストを移動します。8 つの異なる方向は、0 ~ 7 の範囲の 8 つの異なる数字に対応しています。

メソッドcheckMoveが false を返す場合、ゴーストは動きません。

于 2012-10-27T00:44:11.680 に答える