- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第5章人机对战
5.1准备工作5.2计算机智能下棋5.3极小极大搜索法提高下棋水平5.4ALPHA-BETA搜索方法
5.1准备工作5.1.1创建项目并添加资源1.创建项目FiveAI并复制资源复制单机版的资源:IDB_BLACK、IDB_WHITE、IDB_BOARD、IDB_RIGHT、IDR_WAVE_GO。2.复制对话框资源复制单机版五子棋中的对话框资源IDD_FIVE_DIALOG,删除原来的对话框资源IDD_FIVEAI_DIALOG,再将复制过来的ID改为IDD_FIVEAI_DIALOG,标题改为“五子棋人机对战”。
5.1准备工作5.1.1创建项目并添加资源3.编辑对话框中的控件复选框,ID:IDC_COMPUTER_FIRST,文字描述为“计算机先”修改“重新开始”按钮的标题为“开始”,ID:IDC_START。添加控件关联变量:IDC_COMPUTER_FIRST,Cbuttonm_btnComputerFirst。
5.1准备工作5.1.2修改对话框类1.复制棋盘类和棋子类Board.h、Board.cpp、Chess.h和Chess.cpp2.类中添加棋盘类属性CFiveAIDlg类中添加棋盘类类型的属性private:CBoardboard;包含头文件:#includeBoard.h
5.1准备工作5.1.2修改对话框类3.修改构造函数,为属性board初始化4.修改OnPaint()函数,显示棋盘CPaintDCdc(this);//用于绘制的设备上下文board.Draw(dc);
5.1准备工作5.1.3添加CBoardStatus类计算机自动下棋,要根据当前棋盘的状态对局势进行评估,如果用前面的向量chesses来获取棋盘状态效率会比较低,因此我们引入二维数组status来记录棋盘的状态。添加CBoardStatus类修改enumclassChessColor
5.1准备工作5.1.4修改CBoard类1.添加属性public:CBoardStatusboardStatus;#includeBoardStatus.h“isStoped改名为isPlaying。2.修改构造函数和析构函数构造函数加入对isPlaying的初始化。析构函数
5.1准备工作5.1.4修改CBoard类3.修改Draw()函数修改涉及的是以下几行if(!boardStatus.chesses.empty()){std::vectorCChess*::iteratorit;for(it=boardStatus.chesses.begin();it!=boardStatus.chesses.end();it++)
5.1准备工作5.1.4修改CBoard类4.修改几个相关函数原来的chesses属性已经被boardStatus属性替换,因此这些函数都要修改。boolCBoard::hasChess(intcol,introw)boolCBoard::hasChess(intcol,introw,ChessColorcolor)voidCBoard::Go(CPointpoint)voidCBoard::putChess(intcol,introw)RedrawWindow()函数
5.1准备工作5.1.4修改CBoard类5.棋盘的初始化与悔棋将棋盘类中的replay()函数的函数名改为initBoard,并修改修改goback()函数,实现悔棋功能
5.1准备工作5.1.4修改CBoard类6.添加计算机下棋的函数
5.1准备工作5.1.5实现计算机与人轮流下棋功能1.实现下棋功能鼠标移动消息响应函数鼠标左键按下消息响应函数单击“开始”按钮消息响应函数2.实现悔棋功能单击“悔棋”按钮消息响应函数
5.2计算机智能下棋5.2.1五子棋的棋型与估值1.五子棋的棋型冲四连五活四
5.2计算机智能下棋5.2.1五子棋的棋型与估值1.五子棋的棋型眠三活三
5.2计算机智能下棋5.2.1五子棋的棋型与估值1.五子棋的棋型眠二活二
5.2计算机智能下棋5.2.1五子棋的棋型与估值2.棋型估值与位置估值位置估值棋型估值连五:50000活四:5000冲四:2000活三:1000眠三:400活二:200眠二:80
5.2计算机智能下棋5.
您可能关注的文档
- 专题训练 全等三角形压轴题型-《讲亮点》2022-2023学年八年级数学上册教材同步配套讲练(苏科版)(原卷版).pdf
- 第3课时合格率(2).pdf
- 专题训练 一次函数30道经典压轴题型专项训练(解析版).pdf
- 专题训练 整式的混合运算与化简求值(解析版).pdf
- 第3课时天安门广场(1).pdf
- 第3课时一个数除以分数.pdf
- 专题训练 轴对称30道压轴题训练-《讲亮点》2022-2023学年八年级数学上册教材同步配套讲练(苏科版)(解析版).pdf
- 专题训练 轴对称30道压轴题训练-《讲亮点》2022-2023学年八年级数学上册教材同步配套讲练(苏科版)(原卷版).pdf
- 专题训练 轴对称常考折叠问题(32道)-《讲亮点》2022-2023学年八年级数学上册教材同步配套讲练(苏科版)(解析版).pdf
- 第3篇_第6章-算法与程序设计基础.pptx
文档评论(0)