[英]Java 2D array board game console output issues
我的代码
import java.util.Scanner;
/**
*
* @author jwgau
*/
public class mazeTask {
public static void main(String[] args) {
printMaze();
}
public static void printMaze() {
int py = 8;
int px = 1;
Scanner scan = new Scanner(System.in);
char choice;
char[][] maze = {
{'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W'}, // Row 0
{'W', ' ', ' ', ' ', ' ', 'W', 'G', ' ', 'W'}, // Row 1
{'W', ' ', 'W', 'W', 'W', 'W', 'W', ' ', 'W'}, // Row 2
{'W', ' ', 'W', ' ', 'W', ' ', 'W', ' ', 'W'}, // Row 3
{'W', ' ', 'W', ' ', 'W', ' ', 'W', ' ', 'W'}, // Row 4
{'W', ' ', 'W', ' ', 'W', ' ', 'W', ' ', 'W'}, // Row 5
{'W', ' ', 'W', ' ', 'W', ' ', 'W', ' ', 'W'}, // Row 6
{'W', ' ', 'W', ' ', 'W', ' ', 'W', ' ', 'W'}, // Row 7
{'W', 'P', ' ', ' ', ' ', ' ', ' ', ' ', 'W'}, // Row 8
{'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W'} // Row 9
};
while (true) {
//printing 2d array using nested for loops
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 9; j++) {
System.out.print(maze[i][j]);
maze[py][px] = 'P';
}
System.out.println("");
}
//maze[py][px] = 'P';
System.out.println("North, south, east or west?");
choice = scan.next().charAt(0);
switch (choice) {
case 'N':
if(validMove(choice, py, px, maze) == true){
py = py-1;
System.out.println(py);
maze[py][px] = 'P';
}
continue;
case 'S':
if(validMove(choice, py, px, maze) == true){
py = py+1;
maze[py][px] = 'P';
}
continue;
case 'E':
if(validMove(choice, py, px, maze) == true){
px = px+1;
maze[py][px] = 'P';
}
continue;
case 'W':
if(validMove(choice, py, px, maze) == true){
px = px - 1;
maze[py][px] = 'P';
}
continue;
}
System.out.println("px = " + px);
System.out.println("py = " + py);
}
}
public static boolean validMove(char choice, int py, int px, char maze[][]){
switch(choice){
case 'N':
if(maze[px][py-1] == 'W'){
return false;
}
else{
maze[py] = maze[py-1];
}
break;
case 'S':
if(maze[px][py+1] == 'W'){
return false;
}
else{
maze[py] = maze[py+1];
}
break;
case 'E':
if(maze[px+1][py] == 'W'){
return false;
}
else{
maze[px] = maze[px+1];
}
break;
case 'W':
if(maze[px-1][py] == 'W'){
System.out.println("Invalid move, try again");
return false;
}
else{
maze[px] = maze[px-1];
}
break;
}
return true;
}
}
I am currently working on a 2D board game project using arrays in java and am having issues with incorrect output for the screen, the first couple of iterations work fine and my py/px variables are reduced correctly, then nothing is output after the first few转身。
玩家或“P”应该遍历数组,只有在不会与墙“w”发生碰撞时才验证移动。
该代码位于可运行的 state 中进行测试,或者如果有人能指出我哪里出错了,我将不胜感激。
删除continue;
在switch
块中并将其移动到:
System.out.println("px = " + px);
System.out.println("py = " + py);
continue;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.