2012-10-27 2 views
0

Я не понимаю, что делает метод moveGhost? Зачем выбирать случайное число между 0-7 и чем это связано с преследованием pacman? О, и что я могу сделать для создания графического образа призрака? Я нашел этот код и пытаюсь понять, как он работает.Pacman Ghost class, что делает этот метод?

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, СВ, СЗ). Восемь разных направлений соответствуют 8 различным числам в диапазоне 0-7.

Если метод checkMove возвращает false, то призрак не перемещается.

Смежные вопросы