创建一个检查获胜者的方法

时间:2016-04-26 11:22:28

标签: c# winforms

我在visual studio c#express中使用win形式开发了一个tic tac toe。我想创建一个方法来检查胜利者,如果找不到胜利者并且所有的块都结束了,我们会有一条消息来显示抽奖。

但我希望它独立于形式。 就像我已经尝试过这样的方程式

if((button1.Text== button2.Text) && (button2.Text== button3.Text))
else if((button4.Text== button5.Text) && (button5.Text== button6.Text))
else if((button7.Text== button8.Text) && (button8.Text== button9.Text))

我想要一个通用逻辑,以便我可以在另一个类中创建该方法并调用

3 个答案:

答案 0 :(得分:1)

首先,您当前的代码使用类字段,这会阻止您使用任何其他形式的代码。所以没有:

bool CheckWinner() { }

您需要提供游戏数据作为参数:

bool CheckWinner(Button topLeftButton, Button topMiddleButton, ...) { }

然后,您可能有一天会决定您不会使用Button,并且您将方法更改为:

bool CheckWinner(string topLeftValue, string topMiddleValue, ...) { }

您可能还想考虑使用enum

enum TicTacToeValue
{
    None = 0,
    Cross = 1,
    Circle = 2,
}

bool CheckWinner(TicTacToeValue topLeft, TicTacToeValue topMiddle, ...) { }

甚至为您的方法提供一系列数组:

bool CheckWinner(TicTacToeValue[] values) { }

使用这样的数组时,可以使程序更加智能化,因为您可以重用检查完整行或列值的代码。

您甚至可以返回赢得的人

TicTacToeValue GetWinner(TicTacToeValue[] values) { }

如果没有人获胜,可以返回TicTacToeValue.None

答案 1 :(得分:0)

这可能会有所帮助:

public bool IsThreeInARow(string v1, string v2, string v3)
{
    return v1 == v2 && v2 == v3;
}

这将检查一行值(即X-s和/或O-s),与值的来源无关。

答案 2 :(得分:-2)

为你拥有的9个按钮制作9个静态标志,并为“x”和“0”设置1或0。

使用其他类中的标志来确定获胜者。不需要访问tic tac toe按钮。