我是一名大学生,具有C ++经验,是C#的新手。我想要一些关于如何为5x5 Tic Tac Toe游戏构建C#Form应用程序的反馈。
程序的细节要求用户输入玩家做出移动选择的时间。然后玩家选择他们或计算机是否先行。然后玩家点击开始游戏的开始按钮。
到目前为止,我想我创建了一个'Move'类,其中X和Y坐标表示游戏网格上的位置,以及一个'Player'类,其中包含他们在其中制作的'Move'对象列表游戏。我计划添加一个可点击标签网格,可以添加移动到玩家列表中。至于AI,我认为创建一个阻止人类玩家完成一行的算法会非常容易,但我不确定哪种数据结构最有效。也许我开始考虑这一切都是错误的。
有什么想法吗?
答案 0 :(得分:0)
在用户界面中,我将在每个单元格中使用带有TableLayoutControl
的5 * 5 Button
。您可以将这些按钮的FlatStyle
设置为Flat
以获得外观。
现在,就维护模型而言,我只需要一个类来代表玩家。像这样:
class Player : INotifyPropertyChanged
{
List<Point> _selectedCells = new List<Point>();
public List<Point> SelectedCells
{
get
{
return _selectedCells;
}
set
{
if (value != _selectedCells)
{
_selectedCells = value;
RaisePropertyChange(new PropertyChangedEventArgs("SelectedCells"));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChange(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
{
PropertyChanged(this, e);
}
}
}
现在,这个类将有2个实例。一个用于人,一个用于计算机。单击按钮,可以设置SelectedCells
属性。现在,更改此属性将引发PropertyChanged
事件。可以放置一个检查胜利的处理程序。
如果用户还没有赢,请生成计算机移动并在计算机实例上设置相同的属性。它将再次检查胜利。
当用户获胜时,您可以显示相应的消息。您可以将字符串属性Name
添加到Player
类,以简化胜利消息显示机制。