- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6讲 棋类游戏-井字棋游戏人机对弈
第6讲棋类游戏-井字棋游戏人机对弈 知识点 一、井字棋游戏 二、井字棋人机对弈-程序说明 三、程序界面采用的技术和方法 3.1 棋盘的表示和游戏状态的表征 3.2 程序中用到的资源 3.3 游戏的保存和载入 3.4 视图类和主窗口类的联系 3.5 悔棋 3.6 一个功能多个选项的实现 3.7 棋盘绘制及游戏状态的显示 3.8 实现玩家下棋子 四、人机对弈的实现 4.1 决策前的处理 4.2 特殊格局的处理 4.3 进攻 4.4 防守 4.5 和棋的提前判断 一、井字棋游戏 井字棋游戏,也就是三子棋游戏。 棋盘大小为3×3,在方格内下棋,对弈双方轮流下棋。 只要有一方有3颗棋子连成一条线(行、列及对角线),则该方获胜,且游戏结束。 如果所有位置都已经下满棋子,且没有哪一方能赢棋,则是和棋。 说明:三子棋游戏由于规则简单、棋局状态数较少,因此常用于人工智能、计算机博弈算法演示和讲解中。 二、井字棋人机对弈-程序说明 本课件所设计的程序实现了井字棋人机对弈,具体功能为: 在程序界面中绘制游戏棋盘,显示游戏状态(对弈模式、难度等级、哪方先下、当前轮到哪方下等等)。 玩家执黑,计算机为红方。 可以保存游戏、载入游戏、可以悔棋。 可以设置谁先下、设置游戏难度。 三、程序界面采用的技术和方法 程序界面具有的特点: 单文档应用程序(下一个案例,五子棋,也是单文档应用程序),在视图中绘图。 能保存游戏,能载入游戏。 能悔棋(但只能悔一步)。 通过一个菜单命令来选择先下的两种选项:计算机先下、玩家先下。 通过一个菜单命令来选择两种游戏难度:难、易。 认识单文档应用程序中的类: 应用程序类(C***App):负责初始化应用程序、结束应用程序。 文档类(C***Doc):程序中的数据(成员)一般在文档类中定义,但也可以在其他类中定义(比如本程序就是在视图类中定义所有的数据)。 视图类(C***View):对应于客户区(视图)。 主窗口类(CMainFrame):对应于整个程序窗口。 CAboutDlg类: “关于”对话框对应的类。 3.1 棋盘的表示和游戏状态的表征 棋盘的表示: 用3×3的二维数组QP存储棋盘的状态,数组元素为1表示对应位置上是黑方棋子,为-1表示是红方棋子,为0表示没有棋子。 用3×3的二维数组pre_qp存储上一步(指计算机和玩家各走了一步)棋盘状态,以便悔棋。 其他表示游戏状态的成员变量。 自定义函数 在视图类中。 3.2 程序中用到的资源 资源有:快捷键、位图、光标、对话框、图标、菜单、字符串、工具栏等。 位图: IDB_BITMAP1:bmBlackNew.bmp位图,对应于黑棋棋子(玩家)。 IDB_BITMAP2:bmRedNew.bmp位图,对应于红棋棋子(计算机)。 菜单(非向导生成的菜单命令): ID_START:重新开始 ID_SAVE:保存游戏 ID_LOAD:载入游戏 ID_REGRET:悔棋 ID_ComputerFirst:计算机先下 ID_Level:难度(易) 3.3 游戏的保存和载入 程序中数据的保存(到文件中)和载入通常有两种方法: 1) 程序中的数据是在文档类中,则可以通过文档类的串行化函数Serialize很方便地实现,详见下一个案例-五子棋游戏。注意: 在串行化函数中添加代码后,通过向导添加的打开、保存菜单命令就可以实现数据的保存和载入了。 另外,需要在资源中修改IDR_MAINFRAME字符串,以便保存时指定扩展名、打开时只打开指定扩展名的文件。 以二进制方式保存数据。 2) 对于其他类中的数据,通常需要响应菜单命令(也可以是命令按钮或其他控件),在菜单命令的响应函数中实现将数据保存到文件或从文件中载入数据。注意: 打开文件和保存文件需要使用通用对话框。 可以以二进制方式或文本方式保存数据。 井字棋采用这种方式实现。 注意事项: 对于棋类游戏,如果需要保存棋局,除了要保存当前棋盘各位置上的棋子外,还需要保存当前轮到哪方下棋、游戏难度等数据。 不管是哪种方法,在保存数据和载入数据时各数据的顺序一定要一致。 通用对话框:MFC提供了5个通用对话框,可以直接使用。 游戏的保存:以二进制方式将棋盘及表征游戏状态的变量的值存入到文件中。 游戏的载入:从二进制文件中读入数据到存储棋盘的二维数组及表征游戏状态的变量中。 补充:菜单命令的映射 菜单命令可以映射到视图类、文档类、主窗口类。具体该映射到哪个类,取决于菜单命令响应函数所需要执行的功能是在哪个类里实现的。 以下菜单命令在主窗口类中响应: 选项 | 保存游戏:ID_SAVE 选项 | 载入游戏:ID_LOAD 选项 | 悔棋:ID_Regret 设置 | 计算机先下:ID_ComputerFirst 设置 | 难度(易):ID_Level 以下菜
您可能关注的文档
最近下载
- 精神病司法鉴定暂行规定.doc VIP
- 《做一只努力向上的蜗牛》励志教育主题班会.pptx VIP
- Danfoss丹佛斯VLT® HVAC Basic Drive FC 101 SW 4.4x Operating guide说明书用户手册.pdf
- 城市更新项目质量管控实施方案.docx
- 中国国家标准 GB/T 18029.2-2022轮椅车 第2部分:电动轮椅车动态稳定性的测定.pdf
- 《GB/T 18029.1-2024轮椅车 第1部分:静态稳定性的测定》.pdf
- ISO9001-2022质量管理体系风险和机遇识别评价分析及应对措施记录表.docx VIP
- 《GB_T 18029.1-2024轮椅车 第1部分:静态稳定性的测定》专题研究报告.pptx
- 丹佛斯FC101变频器编程手册说明书.pdf VIP
- 丹佛斯FC111参数设置及丹佛斯变频器FC360使用说明.doc VIP
有哪些信誉好的足球投注网站
文档评论(0)