您好,欢迎来到小侦探旅游网。
搜索
您的当前位置:首页五子棋游戏

五子棋游戏

来源:小侦探旅游网


五子棋游戏

在VC++环境创建MFC单文档应用程序Fivechess,其他选项默认。进行如下操作,并运行。

1.制作棋盘

(1)在”FivechessView.h”头文件中定义一个用于显示棋盘的自定义公有函数。如下图:

(2)在FivechessView.cpp中实现上述函数,如下图:

(3)在CFivechessView类的OnDraw()函数中调用画棋盘函数。如下图:

2.约束下棋过程。本例中使用鼠标左键和右键来区别下“黑棋”还是“白棋”,用左“黑”右“白”来表示两个不同的人在下棋。

(1)为CFivechessView类添加消息处理函数WM_LBUTTONDOWNWM_RBUTTONDOWN,并写入如下代码:

(2)到目前为止,这个“五子棋”游戏有两个缺陷:①没有遵守轮流下棋规则:如鼠标左键或右键可以持续下棋;②没有遵守一个格子只可以下一次棋的规则:如已经有黑色棋子的格子,还能持续放入白色或黑色的棋子。

第1个缺陷解决方案:使用一个变量,初始化为0,判断该变量,当变量值为0时,可以允许接受鼠标左键单击的消息函数中的绘制处理,绘制完毕,该变量变为1;当变量值为1时,可以允许接收鼠标右键单击的消息函数中的绘制处理,绘制完毕,该变量又变为0。具体操作如下:

a.在”FivechessView.h”头文件中定义一个公有的整型变量RightORLeft 。

b.在CFivechessView类的构造函数中将变量RightORLeft初始化为0,如下图:

c.修改鼠标左键和右键的消息处理函数,在画棋子之前先判断现在是轮到哪方下棋。

第2个缺陷解决方案:可以使用一个向量或数组记录已经放置好的棋子的中心位置,如果新下的棋子在该向量或数组中找到系统已经记录的该点,则该次棋不能下,只能选择其他方格下。具体操作如下:

a.在”FivechessView.h”头文件中加入3行公有代码,并包含#include 头文件。

b.为CFivechessView类新增两个自定义函数bool isLocation(CPoint cp)和void Location(CPoint cp)。代码如下:

c. 修改鼠标左键和右键的消息处理函数,注意“鼠标状态变量RightORLeft”的位置有所改变。

(3)判断输赢

五子棋游戏规则是这样的:若某一方(黑棋或白棋)在同一行、同一列或同一斜线上具有连续5个同色棋子,则拥有该颜色棋子的那方就取得胜利。因此,可以使用一个整型二维数组来记录当前棋局的情况。二维数组的值定义为:

0:表示该位置没有棋子。

1:表示该位置已经放置了黑色棋子。

2:表示该位置已经放置了白色棋子。

二维数组的空间大小可以设置为20×20,因为棋盘为20行20列,方格总数目为400个。(总长1000,每个方格占50,1000/50=20)

具体操作过程如下:

a.在”FivechessView.h”头文件中定义一个公有的整型数组chessArr[20][20]。

b.在CFivechessView类的构造函数中将整型数组初始化为0,代码如下:

c. 为

CFivechessView

类新增一个判断是否获胜的函数

bool

CFivechessView::isWin(CPoint cp),先在”FivechessView.h”头文件中添加该函数的定义:

然后在FivechessView.cpp中输入如下代码:

注意:该函数代码较为复杂,请细心检查。

d.现在只需在鼠标消息处理函数适当位置插入判断是否赢棋函数即可,即每下一步棋子,都会以该棋子为基准,作出判断。鼠标左键右键消息修改如下:

到此为止,五子棋游戏就开发完毕,可以试试自己开发的游戏了!

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- xiaozhentang.com 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务