我正在进行PvP战舰游戏,我有方法: 1)initPlayerShips 2)showPlayerBoard
我有一台扫描仪可以注册船只将被放置在哪里的用户输入" initPlayerShips"。如何使用来自" initPlayerShips"的扫描仪结果?并将它们放在" showPlayerBoard"?
中我现在所拥有的:
public static void initPlayerShips(int[][]Playerships, int[][] playerBoard){
Scanner input = new Scanner(System.in);
for(int shipCount=0;shipCount<10; shipCount++){
System.out.println("Row: ");
int rowCoordinate = input.nextInt();
System.out.println("Column: ");
int columnCoordinate = input.nextInt();
playerBoard[rowCoordinate-1][columnCoordinate-1]='S';
}
System.out.println(playerBoard);
}
public static void showPlayerBoard(int[][] playerBoard){
Scanner input = new Scanner(System.in);
System.out.println("\t1 \t2 \t3 \t4 \t5 \t6 \t7 \t8 \t9 \t10");
System.out.println();
for(int row=0 ; row < 10 ; row++ ){
System.out.print((row+1)+"");
for(int column=0 ; column < 10 ; column++ ){
if(playerBoard[row][column]==-1){
System.out.print("\t"+"~");
}else if(playerBoard[row][column]==0){
System.out.print("\t"+"*");
}else if(playerBoard[row][column]==1){
System.out.print("\t"+"X");
}
}
System.out.println();
}// for
}
答案 0 :(得分:0)
将值作为参数传递或使用setter / getter。
你有两个选择。
a)传递参数:如果在输入之后,您将从方法重定向到要显示获取输入值的方法,然后在调用方法时简单地传递参数。
例如:
for(int shipCount=0;shipCount<10; shipCount++){
System.out.println("Row: ");
int rowCoordinate = input.nextInt();
System.out.println("Column: ");
int columnCoordinate = input.nextInt();
playerBoard[rowCoordinate-1][columnCoordinate-1]='S';
}
// System.out.println(playerBoard);
// Pass your parameter to show
showPlayerBoard(playerBoard)
}
b)您设置适合使用的值。然后只需获取要显示的值。如果您想在以后使用值(不是在当前方法之后/之后),这非常适用
例:
private int[][] playerBoard;
public void setPlayerBoard(int[][] playerBoard){
this.playerBoard = playerBoard;
}
public int[][] getPlayerBoard(){
return this.getPlayerBoard;
}
public static void initPlayerShips(int[][]Playerships, int[][] playerBoard){
Scanner input = new Scanner(System.in);
for(int shipCount=0;shipCount<10; shipCount++){
System.out.println("Row: ");
int rowCoordinate = input.nextInt();
System.out.println("Column: ");
int columnCoordinate = input.nextInt();
playerBoard[rowCoordinate-1][columnCoordinate-1]='S';
}
//System.out.println(playerBoard);
}
public static void showPlayerBoard(){
Scanner input = new Scanner(System.in);
System.out.println("\t1 \t2 \t3 \t4 \t5 \t6 \t7 \t8 \t9 \t10");
int[][] playerBoard = getPlayerBoard();
for(int row=0 ; row < 10 ; row++ ){
System.out.print((row+1)+"");
for(int column=0 ; column < 10 ; column++ ){
if(playerBoard[row][column]==-1){
System.out.print("\t"+"~");
}else if(playerBoard[row][column]==0){
System.out.print("\t"+"*");
}else if(playerBoard[row][column]==1){
System.out.print("\t"+"X");
}
}
System.out.println();
}// for
}