2012-10-27 74 views
0

我不明白moveGhost的做法是什麼?爲什麼選擇一個0-7之間的隨機數字,追逐pacman又有什麼關係? 哦,我能做些什麼來創建幽靈的GUI圖像? 我發現這個代碼,並試圖瞭解它是如何工作的。Pacman Ghost類,這個方法做什麼?

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; 


} 

}

回答

3

moveGhost方法在隨機方向上從8羅盤方向(N,S,E,W,NW,SW,NE,NW)移動幽靈。八個不同的方向對應於範圍0-7中的8個不同的數字。

如果方法checkMove返回false,則重影不會移動。