版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VC +MFC五子棋,齐鹏程,设计背景,五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“连珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”等多种称谓。 五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点
2、,是古今哲理的结晶。,设计方案简述,基本原理 棋盘:棋盘模块相对简单,只是横竖交错的直线。因此可以利用画笔工具画出很规范的棋盘格局。 下棋:下棋动作也比较简单,本设计使用鼠标右键和左键单击来区别下“黑棋”还是“白棋”,用该方式来表示两个不同的人在下棋。 判断输赢:这个算法比较复杂,要求程序自动在同行、同列和同斜线上五个连续同色的棋子时,判断哪方获胜并结束游戏。,本程序的开发流程如下:,3 详细设计3.1棋盘规划3.1.1 单击File菜单,选中New命 令,创建新的VC项目。3.1.2创建MFC项目并命名为 fivechess。3.1.3选择“单文档”类型的MFC应用程序,其它选项默认,选中后
3、单击Finish按钮结束应用程序向导。,3.1.4 添加画棋盘的函数,首先,在fivechessView。h 头文件中定义一个用于显示棋盘的自定义共有函数: void Checkerboard(CDC *pDC); 然后,在fivechessView.cpp 源文件中实现该函数: void CFivechessView:Checkerboard(CDC *pDC) for(int i=0;iMoveTo(i*50,0); /画笔移动到(i*50,0)点 pDC-LineTo(i*50,1000); /画笔从(i*50,0)点画到(i*50,1000)点 for(i=0;iMoveTo(0,i*
4、50); pDC-LineTo(1000,i*50); 最后,在应用程序框架的OnDraw()函数调用该画棋盘函数,将pDC对象作为实参传递给Checkerboard()函数: void CFivechessView:OnDraw(CDC* pDC) CFivechessDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); Checkerboard(pDC); / 调用自定义的画棋盘函数 按F5键编译并运行,运行效果如下:,3.2 鼠标设置3.2.1添加鼠标消息处理函数。首先,在CfivechessView类中添加单击鼠标右键,调用添加消息处理函数的对话
5、框,如下图所示:(注:本设计中,假设鼠标右键和左键分别是两个不同的玩家),然后,在消息处理函数添加对话框中,添加WM_LBUTTONDOWN和WM_RBUTTONDOWN消息处理函数,添加后单击Edit Existing离开,如下:,3.2.2为鼠标消息添加制约条件。,我们发现,到目前为止,这个五子棋下棋规则还有两个缺陷: 1.没有遵守轮流下棋规则:如鼠标左键或右键可以持续下棋。 2.没有遵守一个格子只能下一次棋的规则:如已经有黑色棋子的格子,还能持续放入白色或黑色的棋子。 现在,就添加鼠标消息的制约条件,来使下棋规范化。 首先是要完成轮流下棋的规则,该规则是要让鼠标左右键轮流下棋,如果连续下
6、棋,则程序不予理睬。算法思路是:使用一个变量,初始化为0,判断该变量,当变量值为0时,可以允许接受鼠标左键单击的消息函数中的绘图处理,绘制完毕,该变量变为1;当变量值为1时,可以允许接受鼠标右键单击的消息函数中的绘制处理,绘制完毕,该变量又变为0。,3.3 判断输赢,该功能是棋牌游戏中较难的功能,投入也多。 游戏规则是这样的:若某一方(黑棋或白棋)在同一行、同一列或同一斜线上具有五个同色棋子则该颜色的那方就获胜。因此,可以使用一个整型二维数组来记录当前器具的情况,二维数组的值定义为: i 0:表示该位置没有棋子 ii 1:表示该位置已经放置了黑色棋子 iii 2:表示该位置已经放置了白色棋子 因此,现在考虑的问题: i、问题1:要在下每个棋后,将数组变量对应位置的数组元素之做相应改变,变为1或2,这个很容易实现,只需在鼠标消息处理函数中调用Location()函数后改变数组元素之即可。 ii、问题2:下每个棋后,判断在这个棋子同一行、同一列或同一斜线上是否具有连续5个同色的棋子,如果有,则宣布该方胜利,并推出游戏,如果没有则继续游戏,轮到对方下棋。,参考文献,1 伍俊良 Visual C+6.0程序设计与系统开发案例 M 北京:清华大学出版社,2002,124-146,142-163 2吴金平 Visual C+6.0编程与实践M 北京:中国水利水电出版社,2004,52-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 救助站医疗卫生制度
- 邮政卫生标准化管理制度
- 喀什市环境卫生制度
- 卫生间专区保洁管理制度
- 行政中心卫生制度
- 煤矿卫生所岗位责任制度
- 住院部医生卫生制度
- 公共卫生间回收管理制度
- 检测站卫生管理制度
- 蔬菜店卫生管理制度
- 2025年日本市场数字广告投放洞察报告-Sensor Tower
- 绳索救援系统教学课件
- 统编版语文六年级下册小升初课内阅读专项训练-(含答案)
- 保险公司数据安全管理制度及流程
- 2024版科普仁爱版七年级英语下册单词表
- 生物-浙江省宁波市2024学年高一第一学期期末统一测试试题和答案
- 律师事务所整改措施
- 新能源光伏发电系统设计与安装手册
- JTS 206-2-2023 水运工程桩基施工规范
- DB4403-T 427-2024 叉车运行监测系统技术规范
- 食品杀菌原理培训课件
评论
0/150
提交评论