- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
五子棋毕业课程的设计的报告
目 录
1 引言 3
1.1五子棋介绍 3
1.2选题背景和动机 3
1.3系统所要解决的问题 3
2 系统框架 5
2.1 棋盘类 6
2.1.1 主要成员变量说明: 6
2.1.2 清空棋盘——Clear 6
2.1.3 绘制棋子——Draw 6
2.1.4 左键消息——OnLButtonUp 7
2.1.5 载入棋盘 7
2.1.6 对方落子完毕——Over 7
2.1.7 设置游戏模式——SetGameMode 7
2.1.8 胜负的判断——Win 7
2.2 游戏模式类 8
3关键技术 9
3.1 棋盘对话框的制作 9
3.1.1 对话框机制 9
3.1.3 棋子 10
3.2 人机对弈 10
3.2.1 难度的选择 10
3.2.2 机器的落子判断 11
4运行结果 15
4.1开发环境及运行环境 15
4.1.1开发环境 15
4.1.2运行环境 15
4.2运行图示 15
4.2.1 棋盘显示 15
4.2.2 开始的选择对话框 16
4.2.3 主界面中的游戏难度选项 16
4.2.4 电脑的应对 17
5调试分析 19
6总结 21
参考文献 22
1 引言
1.1 五子棋介绍
五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。
五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。
1.2选题背景和动机
随着社会的发展,越来越多人接触和使用计算机,网上进行的棋类运动也随之普及。许多人喜欢上了下棋,但有时又苦于没有对手。作为一个计算机专业的学生,我对五子棋有很浓厚的兴趣,平时也一直和同学下棋,有时也和电脑下棋,我对计算机人机对弈智能算法如何与人脑对抗产生了极大的兴趣,当然人机对弈的算法有很多种,许多人也对此有所研究。有些算法的智能程度甚至已经与人脑不相上下。这类程序的开发最重要的莫过于智能算法的实现,然后就是判断胜负的方法。当前网络上流传的五子棋游戏功能并不尽善尽美,其中最主要的问题就是人机对战和网络对战不能够一起实现,所以我决定开发[1]一个既能够人机对战,又能够进行网络对战的五子棋系统。
1.3系统所要解决的问题
1)棋盘和棋子的绘制。
2)计算机对下一步落棋的计算
3) 棋盘的载入
4)难度的模式选择
5)棋盘状态的判定
2 系统框架
五子棋系统框架:
图2 系统框架图
考虑到整个的下棋过程(无论对方是电脑或是其他网络玩家)可以分为:己方落子、等待对方落子、对方落子、设置己方棋盘数据这一系列过程,因此一人游戏类、二人游戏类和棋盘类之间的关系是不同的。
2.1 棋盘类
整个架构的核心部分,类名为CTable。封装了棋盘的各种可能用到的功能,如保存棋盘数据、初始化、判断胜负等。用户操作主界面,主界面与CTable进行交互来完成对游戏的操作。
2.1.1主要成员变量说明:
棋盘等待标志——m_bWait与m_bOldWait
由于在玩家落子后需要等待对方落子,m_bWait标志就用来标识棋盘的等待状态。当m_bWait为TRUE时,是不允许玩家落子的。
在人人对弈模式下,玩家之间需要互相发送诸如悔棋、和棋这一类的请求消息,在发送请求后等待对方回应时,也是不允许落子的,所以需要将m_bWait标志置为TRUE。在收到对方回应后,需要恢复原有的棋盘等待状态,所以需要另外一个变量在发送请求之前保存棋盘的等待状态做恢复之用,也就是m_bOldWait。
等待标志的设置,由成员函数SetWait和RestoreWait完成。
2.1.2 清空棋盘——Clear
在每一局游戏开始的时候都需要调用这个函数将棋盘清空,也就是棋盘的初始化工作。在这个函数中,主要发生了这么几件事情:
将m_data中每一个落子位都置为无子状态(-1)。
按照传入的参数设置棋盘等待标志m_bWait,以供先、后手的不同情况之用。
2.1.3 绘制棋子——Draw
这无疑是很重要的一个函数,它根据参数给定的坐标和颜色绘制棋子。绘制的详细过程如下:
将给定的棋盘坐标换算为绘图的像素坐标。
根据坐标绘制棋子位图。
在刚绘制完成的棋子四周绘制最后落子指示矩形。
2.1.4 左键消息——OnLButtonUp
作为棋盘唯一响应的左键消息,也需要做不少的工作
文档评论(0)