0

YO。私はゲーム開発の初心者で、コンソールの三目並べゲームを作成しています。ゲームボードを独自のクラスに配置したいので、ゲームのボードクラスからメインにボードグリッドを渡そうとしています。ボードの文字を保持するために2D配列を作成しましたが、それを返すのに問題があります。エラーは「タイプ'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。それはうまくいかない
  • stringタイプ の変数にの値を代入しようとしていますBoard。それはうまくいかない
  • オブジェクト内の状態を、同じオブジェクトで呼び出されたメソッドに戻しています。それは無意味です。

あなたの主な方法は次のように単純でなければなりません:

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

すべての初期化ロジックをコンストラクターに入れ、DisplayBoardメソッドがオブジェクト自体内の変数を使用するようにします。

maxRowまた、maxColumn定数を作成したり、コンストラクターでパラメーターを作成したりしたくなるでしょう。

于 2012-08-17T09:14:48.993 に答える