我们目前正在编写一个没有任何GUI的Connect 4游戏。我在使用电路板填充芯片时遇到问题('X'或'O')。我按说明书中的说法制作了一个char数组来绘制一块电路板,我对如何用芯片填充电路板毫无头绪。这是我的代码:
char player = 'X';
char[][] board = new char[7][8];
public void sBoard()
{
char[][] board = new char[7][8];
for (int i=0;i<board.length-1;i++)
{
System.out.print("|");
for (int j=0;j<board[i].length-1;j++)
{
board[i][j]='.';
System.out.print(board[i][j]+"|");
}
System.out.println();
}
}
这创建了一个棋盘并且在它上面有点,现在玩家1和2将用X或O填充它。
public void userInput() {
System.out.print("Which coloumn? (1-7): ");
Scanner in = new Scanner(System.in);
int input = in.nextInt();
in.close();
for (int i = feld.length; i >0; i--) {
if (board[i][ein-1] == '.') {
if (player == 'X') {
board[board.length - 2][ein - 1] = 'X';
System.out.print(board[board.length-2][input-1]);
}
if (player == 'O') {
board[board.length - 2][ein - 1] = 'O';
System.out.print(input[board.length-2][input-1]);
}
if (player == 'O')
player = 'X';
else
player = 'O';
}
System.out.println();
现在,因为char数组已填入
施皮尔费尔德, 当我想用X或O填充它时,数组显然是空的。有没有办法将整个2D数组(值)复制到bEingabe方法中?如果有任何解决方法/其他方式来解决这个问题我会很感激。
编辑:用英语翻译所有变量。让你模糊地了解它的作用:它基本上“抛出”X或O(以X开头)到用户输入的颜色范围为1-7
答案 0 :(得分:0)
有一些方面需要注意:
一种选择是在本地方法中设置全局值:
char[][] board = new char[7][8];
public void sBoard()
{
board = new char[7][8];
...
另一种选择是通过
返回public char[][] board() {
...
return board;
}
并通过
使用它void bEingabe(char[][] board) {...}
如果您想在之后再次阅读,请不要提前关闭System.in,因为您无法再访问它。
in.close();
当游戏结束时,即在主()
的末尾,更好地关闭它因为这可能是学校的任务,所以实现这一点很好,学习java基础知识imo。
编辑(对不起,很难在手机上格式化):看来你是德国学生,所以也许可以自学一些关于范围的东西: http://www.scalingbits.com/java/javakurs1/methoden/variablen-sichtbarkeit-lokal-global