数据结构——我需要帮助组织/规划一个c#井字游戏应用程序
本文关键字:一个 应用程序 游戏 规划 帮助 数据结构 | 更新日期: 2023-09-27 17:49:16
我是一名有c++经验的大学生,是c#的新手。我想要一些关于如何为一个5x5的井字游戏构建一个c#表单应用程序的反馈。
程序的细节要求用户输入玩家做出移动选择的时间。然后玩家选择是自己先走还是电脑先走。然后玩家点击开始按钮,游戏开始。
到目前为止,我认为我已经创建了一个"Move"类,其中X和Y坐标表示游戏网格上的位置,而一个"Player"类包含他们在游戏中制作的"Move"对象列表。我计划添加一个可点击标签的网格,将移动添加到玩家的移动列表中。至于AI,我认为创造一种阻止人类玩家完成一行的算法是很容易的,但我不确定哪种数据结构最有效。也许我一开始就想错了。任何想法吗?
在UI中,我将在每个单元格中使用5 * 5 TableLayoutControl
和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
事件。可以放置一个处理程序来检查胜利。
如果用户尚未获胜,则生成计算机移动并在计算机实例上设置相同的属性。它将再次检查是否成功。
当用户获胜时,您可以显示适当的消息。您可以在Player
类中添加字符串属性Name
,以简化胜利消息显示机制。