- 1、本文档共77页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5讲 综合应用-自动扫雷器.ppt
第5讲 综合应用-自动扫雷器 知识点 一、Windows扫雷游戏程序 二、两个参考程序 三、自动扫雷器的原理 四、程序界面采用的技术和方法 4.1 获取并显示操作系统的版本号 4.2 启动扫雷游戏 4.3 并排居中显示两个窗口、计算扫雷游戏地图行数和列数 4.4 开启新局 五、决策前的准备 5.1 扫描地图 5.2 方格16种状态的表示 5.3 获取每个方格第8行16个像素的颜色并与预存的16种状态比对 六、决策 6.1 普通决策 6.2 高级决策 一、Windows扫雷游戏程序 鼠标左右键的作用: 鼠标左键单击:点开某个位置; 鼠标右键单击:将某个位置标记为地雷; 鼠标左右键同时单击:见下一页。 在自动扫雷程序中,需要人为地向扫雷程序发送这些鼠标消息,达到自动标记地雷或点开位置的功能。 鼠标左右键同时单击:如果单击的位置周围8个相邻位置中已标记为地雷的个数 = 该位置显示的数字,则将其他未点开的位置全部点开(如果标记的位置是正确的,则其他位置中不可能有地雷)。 思考:鼠标左右键同时单击下图中标注的位置,会有什么效果? 思考 人在玩扫雷游戏时,会采用哪些推理规则。 期末作品参考 模仿Windows扫雷游戏,用VC/MFC设计一个扫雷游戏,其界面和功能可参考Windows扫雷游戏。 二、两个参考程序 软件名称:自动扫雷器: 作者:任全。 开发工具:VC/MFC。 特点:需要人工点开,当算法不能继续时,需要人工介入。 说明:该程序为本课件的参考程序,本课件做了简化、并补充了大量的注释。 软件名称:自动扫雷。 作者:葛永。 开发工具:未知。 特点:以猜测替代人工操作。功能更全面,提供了多个选项的设置,甚至可以自定义推理规则。 三、自动扫雷器的原理 启动扫雷游戏后,当用户点击“扫雷”按钮时,扫描扫雷游戏地图,通过提取每个方格(16×16)中间第8行16个像素的颜色,跟预存的16种状态的颜色进行比对,从而判断每个方格的状态。 根据每个方格状态的信息进行决策(包括普通决策和高级决策),从而点开某个(或某些)位置,或者将某个(或某些)位置标记为地雷。 某次决策后: 如果判定出现了踩到地雷的状态,则提示“扫雷失败”。 如果所有地雷位置都正确标记出来、其他位置都点开了,则提示“扫雷成功”。 如果某次决策无法点开位置或标记地雷,则提示“算法不能继续了”,请求用户手动点开一些位置。 决策例子: 请试着根据下图所显示的各方格的状态判断哪些位置可以标记为地雷,哪些位置可以点开。 补充:Windows画图应用程序妙用 将一个bmp位图文件用画图软件打开,然后放大8倍,可以清晰地观察到每个像素。 可以显示网格,可以显示缩略图。 在状态栏中可以显示当前鼠标光标的位置,所选矩形区域的大小等。 画图程序在分析自动扫雷器代码中的作用: 扫雷游戏程序和自动扫雷器窗口大小分别是多少个像素,标题栏和菜单栏高度是多少个像素,边框高度或宽度是多少个像素,等等。 每个方格16×16区域具体包含了哪些像素。 提取每个方格第8行16个像素的颜色,第8行具体是哪一行。等等。 补充:其他工具软件的应用 01 取屏幕上任一点的RGB颜色值(绿色) :色值传递员(plsread)。 02 中英文颜色RGB代码对照表(绿色)。 03 YUV、RGB转换并带颜色显示(绿色)。 04 RGB颜色分析器V4·0(绿色)。 以上软件均已上传到网络课堂(或服务器)中。 补充:像素 位图文件是由像素组成。行和列上的像素序号从0开始计起。 在Windows绘图应用程序中打开一幅位图文件(*.bmp),然后放大8倍,并显示网格,可以清晰地观察到位图的每个像素。 显示器屏幕分辨率为1280×800,则意味着水平方向上为1280个像素,竖直方向上为800个像素。 许多GDI绘图函数的绘图单位也是像素。 补充:坐标系 屏幕坐标系:坐标系原点在屏幕左上角。 客户区坐标系:坐标系原点在客户区左上角。 坐标系转换函数: API函数:ClientToScreen。 补充:屏幕坐标和区域 屏幕坐标:CPoint类(MFC中的类) 表示屏幕上一个点的坐标。 与Windows中的结构体POINT(即API中的结构体)类似,增加了很多成员函数。 区域:CRect(MFC中的类) 表示屏幕上一个矩形区域。 与Windows中的结构体RECT(即API中的结构体)类似,增加了很多成员函数。 补充:MFC/SDK的数据类型与C/C++的数据类型 MFC,Microsoft Foundation Class Library。 SDK,Windows Software Development Kit。在SDK应用程序中,采用API函数来实现程序功能。所以SDK应用程序也就是基于API函数的应用程序。 在MFC/SDK中定义了很多数据类型
文档评论(0)