【发布时间】:2015-01-29 22:35:05
【问题描述】:
我正在从这里创建一个井字游戏:
http://programmingbydoing.com/a/tic-tac-toe.html
我在找出如何从方法返回数组索引时遇到了麻烦。我希望用户输入 2 个整数(行、列)并返回该索引并让字符“O”或“X”替换相应的空白索引。
我对 java 有点陌生,我正在努力尽可能快速高效地学习它以赶上我的课堂。
import java.util.Scanner;
public class ticTacToe{
public static Scanner in = new Scanner(System.in);
private static int r, c;
private static char[][] board = new char[3][3];
//create a 3x3 array of characters
public static void main( String[] args ) {
Scanner in = new Scanner(System.in);
displayBoard();
do{
// user inputs two numbers as indexes
//turn index into "o"
//prompt other user to make move, repeat with "x"
}while(checkLoser());
}
public static void displayBoard() {
System.out.println(" 0 " + board[0][0] + "|" + board[0][1] + "|" + board[0][2]);
System.out.println(" --+-+--");
System.out.println(" 1 " + board[1][0] + "|" + board[1][1] + "|" + board[1][2]);
System.out.println(" --+-+--");
System.out.println(" 2 " + board[2][0] + "|" + board[2][1] + "|" + board[2][2]);
System.out.println(" 0 1 2 ");
}
public static int[] getArrayIndex(){
System.out.println("'O'. Choose your Row...(row, column)");
int r = in.nextInt();
int c = in.nextInt();
return new int[] {r,c};
}
public static void userMove(int[][] ){
board[r][c] = 'O';
}
public static boolean checkLoser(){
if (board[0][0] == board[0][1]){
if (board [0][1] == board[0][2]){
return false;
}
}
else if (board[1][0] == board[1][1]){
if (board [1][1] == board[1][2]){
return false;
}
}
else if (board[2][0] == board[2][1]){
if (board [2][1] == board[2][2]){
return false;
}
}
else if (board[0][0] == board[1][0]){
if (board [1][0] == board[2][0]){
return false;
}
}
else if (board[0][1] == board[1][1]){
if (board [1][1] == board[1][2]){
return false;
}
}
else if (board[0][2] == board[1][2]){
if (board [1][2] == board[2][2]){
return false;
}
}
else if (board[0][0] == board[1][1]){
if (board [1][1] == board[2][2]){
return false;
}
}
else if (board[0][2] == board[1][1]){
if (board [1][1] == board[2][0]){
return true;
}
}else{
return false;
}
}
}
【问题讨论】:
-
您是在谈论您的 getArrayIndex() 方法吗?如果是这样,现在的方式有什么问题?
-
毫无疑问,您可能会发现使用具有 9 个元素的标准数组编写井字游戏比使用二维数组更容易。
-
嗨贾斯汀。你说过你想从一个方法返回一个数组索引。数组索引只是一个 int,从给定索引的函数返回索引,只是将输入返回给方法。您的描述可能令人困惑。数组具有索引和值 多维数组具有也是数组的值。
int[][] foo = {{0, 1, 2}, {3, 1, 4}, {1, 1, 2}}是一个包含 9 个条目的二维数组。访问二维数组中的值时,即foo[1][2],您首先引用的是 foo[] 的索引 1 处的数组,然后是foo[1]的索引 2 处的 int,即 4