这里向大家介绍一下一个经典的小程序——五子棋的写法。我写的这个程序是人机对战的。
声明:ai部分参考了《VC++游戏编程基础》一书,下面所用的图片是从此书中截图的。
程序的大体框架如下:1.绘制棋盘,2.人机对战(回合制,ai)。
开发环境:Microsoft Visual C++ 6.0
功能说明:ESC退出,F1重新开局。
有几个关键的地方需要说明一下:
1.回合制:
我采用了以下这个枚举类型,
enum Role{player, computer, none};
Role role, winner;
枚举了当前的玩家,以及获胜者。这样的话,在判断轮到谁下棋,或是谁获胜的时候会比较方便。
2.AI的设计
也就是电脑的下棋策略的设计。
(1)获胜表的概念
这里采用的是一个获胜表的概念。所谓获胜表就是对当前棋盘,所有可能获胜的组合。在一个10*10的棋盘上,获胜表一共有192种组合。
下图展示的是水平方向的获胜组合,共有10 * 6 = 60种。