0

ユーザーが私の三目並べゲームに勝ったかどうかを識別する if else ステートメントがありますが、それが私の使命です! :) コードをよりコンパクトで読みやすくするために、コードの重複ブロックがたくさんあり、コードの量を減らします。

ここに私のコードの一部があります:

if (button1.Text == "X" & button2.Text == "X" & button3.Text == "X")
{
    foreach (Button button in addButton())
    {
        button1.BackColor = Color.Green;
        button2.BackColor = Color.Green;
        button3.BackColor = Color.Green;
        button.Enabled = false;
    }
}
else if (button1.Text == "X" & button4.Text == "X" & button7.Text == "X")
{
    foreach (Button button in addButton())
    {
        button1.BackColor = Color.Green;
        button4.BackColor = Color.Green;
        button7.BackColor = Color.Green;
        button.Enabled = false;
    }
}
else if (button1.Text == "X" & button5.Text == "X" & button9.Text == "X")
{
    foreach (Button button in addButton())
    {
        button1.BackColor = Color.Green;
        button4.BackColor = Color.Green;
        button7.BackColor = Color.Green;
        button.Enabled = false;
    }
}

これをプライベートメソッドに入れることができるのではないかと考えていましたか?しかし、実際にできるかどうかわからないので、メソッドやクラスを呼び出す方法がわかりませんか?

4

2 に答える 2

1

これを試して:

Button[] greenButtons = new Button[0]; // buttons to color in green
bool enabled = true; // value of Enabled for each of addButtons() to set

if (button1.Text == "X" & button2.Text == "X" & button3.Text == "X")
{
    greenButtons = new[] { button1, button2, button3 };
    enabled = false;
}
else if (button1.Text == "X" & button4.Text == "X" & button7.Text == "X")
{
    greenButtons = new[] { button1, button4, button7 };
    enabled = false;
}
else if (button1.Text == "X" & button5.Text == "X" & button9.Text == "X")
{
    greenButtons = new[] { button1, button4, button7 };
    enabled = false;
}

foreach (Button button in addButton())
{
    button.Enabled = enabled;
}
foreach (Button button in greenButtons)
{
    button.BackColor = Color.Green;
}
于 2013-01-24T02:22:11.957 に答える
1

基になるデータ モデルを使用してデータを表現します。int の配列としましょう。

int[,] board  = new int[,] {{0,0,0}, {0,0,0},{0,0,0}};

次に、Xが再生されるたびに、配列内のその位置を 1 に設定します。

が再生されるときはいつでも、O位置を -1 に設定します。

勝者を確認するには、勝者の組み合わせ、横、下、および 2 つのクロス パターンを単純にループし、それらが 3X勝の場合、および -3 が勝った場合にO勝ちます。

于 2013-01-24T02:24:47.643 に答える