0

哟。我是游戏开发的初学者,我正在制作一个控制台tictactoe游戏,我试图将棋盘网格从我的游戏的棋盘类传递到主类,因为我想把棋盘放在它自己的类中。我制作了一个二维数组来保存棋盘的字符,但我无法返回它,错误是“无法将类型'string [,]'隐式转换为'string'。

private int maxRow = 3;
private int maxColumn = 3;
private string[,] boardGrid = new string[3, 3]; //create the game board grid

//Initialise board method
public string InitBoard () //make an object of the board class, returns a 2d array because the board is essentially a grid
{
     //initialise board
     for (int row = 0; row < maxRow; row++)
     {
          for (int column = 0; column < maxColumn; column++)
          {
               boardGrid [row, column] = ".";
          }
     }
     return boardGrid; //<---[The problem happens here!]
}

这是主类的代码。

public static void Main (string[] args)
{
    Board ticTacToeBoard = new Board ();
    ticTacToeBoard = ticTacToeBoard.InitBoard ();
    ticTacToeBoard.DisplayBoard (ticTacToeBoard);
}

我在这方面找不到任何其他问题,但如果有任何问题,请随时指出我。干杯!

4

1 回答 1

4

你在这里有几个问题:

  • 您通常不需要在构造后调用单独的方法来初始化对象。将初始化放在构造函数中
  • 您正在尝试string[,]从声明为 return 的方法返回 a string。那是行不通的
  • 您正在尝试将 的值分配给stringtype 的变量Board。那是行不通的
  • 您将对象内的状态传递回在同一对象上调用的方法。那是没有意义的。

您的主要方法应该很简单:

Board ticTacToeBoard = new Board();
ticTacToeBoard.DisplayBoard();

将所有初始化逻辑放入您的构造函数中,并使您的DisplayBoard方法使用对象本身中的变量。

我也很想制作maxRowmaxColumn常量,或者在构造函数中将它们作为参数。

于 2012-08-17T09:14:48.993 回答