これは、グリッドのサイズを任意の数(3x3 4x4 8x8など)にできる三目並べゲーム用です。
フォームが読み込まれると、メソッドはグリッドサイズを読み取り、1次元のボタン配列内のその数のボタンをフォームに入力します。配列はbuttonArrayと呼ばれます。
1次元のbuttonArrayを使用し、LINQを使用しない場合、buttonArrayのボタンの.Text値を比較して、CheckWinner()関数のボタンが「X」または「O」であるかどうかを確認するにはどうすればよいですか。
ボタングリッドが作成された後、ボタンクリック用のイベントハンドラーがあります。
private void button_click(object sender, EventArgs e)
{
Button b = (Button)sender;
b.Text = "X";
b.Enabled = false;
CheckWinner(buttonArray);
}
次に、CheckWinner関数を呼び出して、配列buttonArrayを渡します。
繰り返しになりますが、LINQを使用せずに値をチェック/比較するための基本的な方法を探しています。グリッドの各辺の長さがわかっている場合、水平方向のウィンラインの場合、.Textプロパティとして「X」を使用して連続して多数のボタンを探していると言えます。
したがって、5x5のグリッドがあり、buttonArrayに25個のボタンがある場合、グリッドの0インデックスから始まる5つごとに.Text値が「X」であるかどうかを確認し、5が連続している場合はメッセージを出力するにはどうすればよいですか。同じ、この場合は「X」です。
for (int z = 0; z < root; z++) //increments the column to start on
{
vCount = 0; //Starts the win counter at zero when moving to the next column
for (int i = z; i < arrLength; i=i+root) //starts at the first column and increments it by root to test the next button in the column
{
string bText = buttonArray[i].Text;
if (bText == "X")
vCount++;
if (vCount == root)
{
MessageBox.Show("Vertical row winner found !");
break;
}
}
}//end of vertical column test
私はそのような垂直線テストをしましたか?しかし、私はそれらを1つに結合する方が良いと思います。