我需要帮助组织/规划C#Tic Tac Toe应用程序

时间:2014-03-10 04:56:54

标签: c# data-structures

我是一名大学生,具有C ++经验,是C#的新手。我想要一些关于如何为5x5 Tic Tac Toe游戏构建C#Form应用程序的反馈。

程序的细节要求用户输入玩家做出移动选择的时间。然后玩家选择他们或计算机是否先行。然后玩家点击开始游戏的开始按钮。

到目前为止,我想我创建了一个'Move'类,其中X和Y坐标表示游戏网格上的位置,以及一个'Player'类,其中包含他们在其中制作的'Move'对象列表游戏。我计划添加一个可点击标签网格,可以添加移动到玩家列表中。至于AI,我认为创建一个阻止人类玩家完成一行的算法会非常容易,但我不确定哪种数据结构最有效。也许我开始考虑这一切都是错误的。

有什么想法吗?

1 个答案:

答案 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类,以简化胜利消息显示机制。