欢迎来到天天文库
浏览记录
ID:58451604
大小:1.24 MB
页数:77页
时间:2020-09-07
《第5讲 综合应用-自动扫雷器.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第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扫雷游戏程序鼠标左右键的作用:鼠标左键单击:点开某个位置;鼠标右键单击:将某个位置标记为地雷;鼠标左右键同时单击:见下一页。在
2、自动扫雷程序中,需要人为地向扫雷程序发送这些鼠标消息,达到自动标记地雷或点开位置的功能。鼠标左右键同时单击:如果单击的位置周围8个相邻位置中已标记为地雷的个数=该位置显示的数字,则将其他未点开的位置全部点开(如果标记的位置是正确的,则其他位置中不可能有地雷)。思考:鼠标左右键同时单击下图中标注的位置,会有什么效果?思考人在玩扫雷游戏时,会采用哪些推理规则。期末作品参考模仿Windows扫雷游戏,用VC/MFC设计一个扫雷游戏,其界面和功能可参考Windows扫雷游戏。二、两个参考程序软件名称:自动扫雷器:作者:任全。开发工具:VC/MFC
3、。特点:需要人工点开,当算法不能继续时,需要人工介入。说明:该程序为本课件的参考程序,本课件做了简化、并补充了大量的注释。软件名称:自动扫雷。作者:葛永。开发工具:未知。特点:以猜测替代人工操作。功能更全面,提供了多个选项的设置,甚至可以自定义推理规则。三、自动扫雷器的原理启动扫雷游戏后,当用户点击“扫雷”按钮时,扫描扫雷游戏地图,通过提取每个方格(16×16)中间第8行16个像素的颜色,跟预存的16种状态的颜色进行比对,从而判断每个方格的状态。根据每个方格状态的信息进行决策(包括普通决策和高级决策),从而点开某个(或某些)位置,或者将某
4、个(或某些)位置标记为地雷。某次决策后:如果判定出现了踩到地雷的状态,则提示“扫雷失败”。如果所有地雷位置都正确标记出来、其他位置都点开了,则提示“扫雷成功”。如果某次决策无法点开位置或标记地雷,则提示“算法不能继续了”,请求用户手动点开一些位置。决策例子:请试着根据下图所显示的各方格的状态判断哪些位置可以标记为地雷,哪些位置可以点开。补充:Windows画图应用程序妙用将一个bmp位图文件用画图软件打开,然后放大8倍,可以清晰地观察到每个像素。可以显示网格,可以显示缩略图。在状态栏中可以显示当前鼠标光标的位置,所选矩形区域的大小等。画图
5、程序在分析自动扫雷器代码中的作用:扫雷游戏程序和自动扫雷器窗口大小分别是多少个像素,标题栏和菜单栏高度是多少个像素,边框高度或宽度是多少个像素,等等。每个方格16×16区域具体包含了哪些像素。提取每个方格第8行16个像素的颜色,第8行具体是哪一行。等等。补充:其他工具软件的应用01取屏幕上任一点的RGB颜色值(绿色):色值传递员(plsread)。02中英文颜色RGB代码对照表(绿色)。03YUV、RGB转换并带颜色显示(绿色)。04RGB颜色分析器V4·0(绿色)。以上软件均已上传到网络课堂(或服务器)中。补充:像素位图文件是由像素组成
6、。行和列上的像素序号从0开始计起。在Windows绘图应用程序中打开一幅位图文件(*.bmp),然后放大8倍,并显示网格,可以清晰地观察到位图的每个像素。显示器屏幕分辨率为1280×800,则意味着水平方向上为1280个像素,竖直方向上为800个像素。许多GDI绘图函数的绘图单位也是像素。补充:坐标系屏幕坐标系:坐标系原点在屏幕左上角。客户区坐标系:坐标系原点在客户区左上角。坐标系转换函数:API函数:ClientToScreen。xxyy扫雷游戏窗口中某一个点的客户区坐标为(20,20),其屏幕坐标可能为(277,282)。补充:屏幕坐
7、标和区域屏幕坐标:CPoint类(MFC中的类)表示屏幕上一个点的坐标。与Windows中的结构体POINT(即API中的结构体)类似,增加了很多成员函数。区域:CRect(MFC中的类)表示屏幕上一个矩形区域。与Windows中的结构体RECT(即API中的结构体)类似,增加了很多成员函数。typedefstructtagPOINT{LONGx;LONGy;}POINT;typedefstructtagRECT{LONGleft;LONGtop;LONGright;LONGbottom;}RECT;补充:MFC/SDK的数据类型与C/C
8、++的数据类型MFC,MicrosoftFoundationClassLibrary。SDK,WindowsSoftwareDevelopmentKit。在SDK应用程序中,采用API函数来实
此文档下载收益归作者所有