扫雷怎么写

1. 如何用C++写扫雷

用VC++编写扫雷游戏 王洪亚 本文从分析windows扫雷游戏的功能特点开始,应用面向对象的可视化编程语言visual c++给出了个功能模块的具体实现方法,并提供了编写小游戏程序的一般方法和visual c++的一些使用技巧。

首先分析扫雷的最基本功能。 点击鼠标左键于未知区域,如果未知区域有雷,游戏停止,显示所有的地雷。

如果没雷,则显示周围雷数,如果周围没雷,则再查看周围八个区域是否有雷直到有雷为止并显示,这其实是一个递归过程。 点击鼠标右键于未知区域,则将其置为有雷而不管是否真的有雷。

可选择初、中、高三级并可自定义雷数和区域大小。 雷区上部左侧显示总雷数减被标明有雷区域的数目。

雷区上部中间位置显示一按钮用于开局和显示鼠标动作的结果。 雷区上部右侧显示扫雷的时间。

将雷全部扫清后,则显示一对话框将你的姓名记入排行榜。以时间排序。

为完成上述功能,应用visual c++的具体技术细节如下: 1. 应用appwizard创建基于sdi的应用程序cbombapp,去除打印和状态条支持,在资源编辑器中修改菜单和相应的加速键,使其与windows扫雷游戏一致。具体为开局(id-game-begin)、初级(id-game-junior)、中级(id-game-middle)、高级(id-game-senior)、自定义(id-game-custom)、颜色(id-game-color)、英雄榜(id-game-sort)、退出(id-game-exit)、帮助(id-help)。

2. 在资源编辑器中对应于雷区的每个小区域的13个属性。用画笔或其他绘图工具绘制出相对应的13个10乘10的16色小位图,三个对应于小人表情的20乘20的16色小位图,供更换颜色时使用的一套与前16个对应的单色位图,显示时间和雷数的0~9十个数字位图(底色为黑色)。

定制customer对话框,内含三个静态文本控件和三个编辑控件,三个编辑控件分别对应成员m_irownum,m_icolumnnum,m_ibombnum。该对话框用于定制雷数,行列数,其相应的mfc类为ccustomer。

定制sort对话框,内含九个静态文本控件,其中六个显示排行榜的姓名和时间,其对应的mfc类为csort。定制input对话框,内含一个静态文本控件和一个编辑控件,编辑控件用于在游戏成功结束时输入姓名,其对应的mfc类为cinput。

3. 定义类bomb,封装每颗雷的相关属性。 class bomb { public: int isbomb;//决定初始时是否是雷 bool issel; //判断区域是否被处理过且周围有雷 bool isdone;//判断递归时是否被处理过 int num; //周围雷数 bool findbomb; //排雷者认为是雷时置一(但是不一定真是雷) } ; 4. 重载cmainframe中precreatewindow,并设置相应属性,使其窗体大小固定,这样就固定了显示区域的大小为初始10乘10个雷和外加雷区上部的控制区域,部分代码如下。

cs.style=ws_overlapped|ws_sysmenu| ws_border|ws_minimizebox; cs.cy = 10*15+6; cs.cx = 10*15+60; //6和60分别是横纵的附加值,用于边框、菜单、标题条、控制区域。 5. 游戏的主要工作就是呈现不断变换的图形或动画,并按用户的输入交互进行显示,而windows文档-----视窗构架中的视窗的功能正是接受用户输入并负责显示,因此由cview类来完成扫雷的大部分工作。

在cbombview中定义下列成员变量记录相关操作的结果或对象的状态。 bomb m_bomb[30][30]; //最大的地雷区域 cstring m_currenttime; //用于记录并显示扫雷时间 ctime m_begintime;//记录游戏开始时的时间 bool m_timerbegin;//定时器是否开启 int m_ibomnum;//雷的数目 int m_irow;//雷的行数 int m_icolumn;//雷的列数 int m_ibombfound;//指示被认为是雷的数目 cbitmapbutton m_bitbutton;//控制区的位图按钮 int m_currentlevel;//指示当前游戏的级别 bool m_biscolor;//指示当前是彩色还是单色 cbitmap m_bmbomb[12];//用于存放12个小位图 int m_igameover;//游戏未结束置0,已清除所有的雷置1,被炸死置2。

重载cbombview中oncreate函数创建位图按钮,该位图按钮的两幅位图对应了正常、排雷正确两种状态,当要显示被炸死的状态时应动态销毁该按钮,并重新创建一位图对应正常和被炸死两种状态,将该位图按钮的id号定为id_game_begin,这样一来当点击按钮时便可重新开始游戏,部分代码如下。 crect rcclient; getclientrect(&rcclient); crect rect(rcclient.cx/2-8,10,rcclient.cx/2+8,20); m_button.create("new",bs_defpushbutton|ws_visible| bs_ownerdraw,rect,this,id_game_begin); m_button.loadbitmaps(idb_face1, idb_face2); 显示时间的功能相对比较简单,在响应第一个wm_lbuttomdown消息时开启定时器,并记录游戏开始的时间,在wm_time消息响应函数ontimer中获得当前时间,减去游戏开始时的时间,在显示时间的客户区域显示得到的时间差(用数字位图),当游戏结束时(排完全部雷或被炸死)关闭定时器,停止显示。

wm_lbuttomdown消息响应函数onlbuttomdown是处理用户输入的主要执行者,函数首先判断点中位置是否是雷,是则关闭定时器,销毁原位图按钮,创建一对应正常和被炸死两种状态的新位图按钮,并调用setstate将其设置为pushdown(小人哭的状态),将m_bgameover,置为true标志游戏结束,否则。

2. 扫雷有什么口诀

前言:①如果点到的数字是1,那么数字周围只有1个地雷,最多有8个。

②每局开始首选先点击4个角落,其次点击边缘格子,还不行就点最中间,直到有个大的“地图”才按照一下说明扫雷。

扫雷口诀:

第一招(初学者适用):靠运气点击

第二招(扫雷达人适用):双击鼠标。在格子角落数字上(最好是1)双击,有1格子会凹下去,那个就是地雷(如图),如果有两个地雷(数字写着2)双击后也会有两个格子凹下去,那两个就是地雷,以此类推。如果凹下去个格子多于数字的话,就试找其他的地方。如果其他地方都找不到的话,就靠运气点击(由数字1旁边开始点)

第三招(高手适用):按照①②来玩。

3. 扫雷到底怎么玩

、先随便点一个方块这就表示:以4为中心,它周围的8个方框中有4格是雷;

2、你可以接着点,最好点到出现一片没有雷的空地

3、这就很明显了,在你确认是雷的方块上插上小红旗(鼠标移到是雷的方块上点右键)

4、你把鼠标指在小红旗旁边的数字上,左右键一起点,它周围不是雷的方块就会自动打开比如此图,你把鼠标放在两个红旗中间的2上左右键一起点,就会成:再把鼠标放在红旗左边的1上,点左右键(要同时)以此步骤玩就可以了;

注:有时不一定有自动翻的机会,就要过计算了,甚至过猜。要重玩点一下小人就行

回答人的补充 2010-02-07 01:20

这就是我给你做示范的局成功排除所有的雷

这是我已回答过的,你看行吗?

4. 如何用C++写扫雷

用VC++编写扫雷游戏用VC++编写扫雷游戏 王洪亚 本文从分析windows扫雷游戏的功能特点开始,应用面向对象的可视化编程语言visual c++给出了个功能模块的具体实现方法,并提供了编写小游戏程序的一般方法和visual c++的一些使用技巧。

首先分析扫雷的最基本功能。 点击鼠标左键于未知区域,如果未知区域有雷,游戏停止,显示所有的地雷。

如果没雷,则显示周围雷数,如果周围没雷,则再查看周围八个区域是否有雷直到有雷为止并显示,这其实是一个递归过程。 点击鼠标右键于未知区域,则将其置为有雷而不管是否真的有雷。

可选择初、中、高三级并可自定义雷数和区域大小。 雷区上部左侧显示总雷数减被标明有雷区域的数目。

雷区上部中间位置显示一按钮用于开局和显示鼠标动作的结果。 雷区上部右侧显示扫雷的时间。

将雷全部扫清后,则显示一对话框将你的姓名记入排行榜。以时间排序。

为完成上述功能,应用visual c++的具体技术细节如下: 1. 应用appwizard创建基于sdi的应用程序cbombapp,去除打印和状态条支持,在资源编辑器中修改菜单和相应的加速键,使其与windows扫雷游戏一致。具体为开局(id-game-begin)、初级(id-game-junior)、中级(id-game-middle)、高级(id-game-senior)、自定义(id-game-custom)、颜色(id-game-color)、英雄榜(id-game-sort)、退出(id-game-exit)、帮助(id-help)。

2. 在资源编辑器中对应于雷区的每个小区域的13个属性。用画笔或其他绘图工具绘制出相对应的13个10乘10的16色小位图,三个对应于小人表情的20乘20的16色小位图,供更换颜色时使用的一套与前16个对应的单色位图,显示时间和雷数的0~9十个数字位图(底色为黑色)。

定制customer对话框,内含三个静态文本控件和三个编辑控件,三个编辑控件分别对应成员m_irownum,m_icolumnnum,m_ibombnum。该对话框用于定制雷数,行列数,其相应的mfc类为ccustomer。

定制sort对话框,内含九个静态文本控件,其中六个显示排行榜的姓名和时间,其对应的mfc类为csort。定制input对话框,内含一个静态文本控件和一个编辑控件,编辑控件用于在游戏成功结束时输入姓名,其对应的mfc类为cinput。

3. 定义类bomb,封装每颗雷的相关属性。 class bomb { public: int isbomb;//决定初始时是否是雷 bool issel; //判断区域是否被处理过且周围有雷 bool isdone;//判断递归时是否被处理过 int num; //周围雷数 bool findbomb; //排雷者认为是雷时置一(但是不一定真是雷) } ; 4. 重载cmainframe中precreatewindow,并设置相应属性,使其窗体大小固定,这样就固定了显示区域的大小为初始10乘10个雷和外加雷区上部的控制区域,部分代码如下。

cs.style=ws_overlapped|ws_sysmenu| ws_border|ws_minimizebox; cs.cy = 10*15+6; cs.cx = 10*15+60; //6和60分别是横纵的附加值,用于边框、菜单、标题条、控制区域。 5. 游戏的主要工作就是呈现不断变换的图形或动画,并按用户的输入交互进行显示,而windows文档-----视窗构架中的视窗的功能正是接受用户输入并负责显示,因此由cview类来完成扫雷的大部分工作。

在cbombview中定义下列成员变量记录相关操作的结果或对象的状态。 bomb m_bomb[30][30]; //最大的地雷区域 cstring m_currenttime; //用于记录并显示扫雷时间 ctime m_begintime;//记录游戏开始时的时间 bool m_timerbegin;//定时器是否开启 int m_ibomnum;//雷的数目 int m_irow;//雷的行数 int m_icolumn;//雷的列数 int m_ibombfound;//指示被认为是雷的数目 cbitmapbutton m_bitbutton;//控制区的位图按钮 int m_currentlevel;//指示当前游戏的级别 bool m_biscolor;//指示当前是彩色还是单色 cbitmap m_bmbomb[12];//用于存放12个小位图 int m_igameover;//游戏未结束置0,已清除所有的雷置1,被炸死置2。

重载cbombview中oncreate函数创建位图按钮,该位图按钮的两幅位图对应了正常、排雷正确两种状态,当要显示被炸死的状态时应动态销毁该按钮,并重新创建一位图对应正常和被炸死两种状态,将该位图按钮的id号定为id_game_begin,这样一来当点击按钮时便可重新开始游戏,部分代码如下。 crect rcclient; getclientrect(&rcclient); crect rect(rcclient.cx/2-8,10,rcclient.cx/2+8,20); m_button.create("new",bs_defpushbutton|ws_visible| bs_ownerdraw,rect,this,id_game_begin); m_button.loadbitmaps(idb_face1, idb_face2); 显示时间的功能相对比较简单,在响应第一个wm_lbuttomdown消息时开启定时器,并记录游戏开始的时间,在wm_time消息响应函数ontimer中获得当前时间,减去游戏开始时的时间,在显示时间的客户区域显示得到的时间差(用数字位图),当游戏结束时(排完全部雷或被炸死)关闭定时器,停止显示。

wm_lbuttomdown消息响应函数onlbuttomdown是处理用户输入的主要执行者,函数首先判断点中位置是否是雷,是则关闭定时器,销毁原位图按钮,创建一对应正常和被炸死两种状态的新位图按钮,并调用setstate将其设置为pushdown(小人哭的状态),将m_bgameov。

5. 扫雷怎么玩儿

首先.电脑是不存在随机这样东西..因为电脑所用到的随机也不可能是完全的随机吧。.怎么也是有个初始条件的吧..至于那个初始条件能不能模拟那就是另一回事了..

纯粹数学上的话..应该把开了的区域和没开的区域分开..开了的区域和没开的区域之间的没开的第一行叫做他们的边界.

这样把扫雷分成三部分.开了的区域叫做A区..然后没开的区域的第一行叫做边界叫做B区..剩下的没开的区域就叫C区..

那么很明显..

(1)B区的雷数受A区的数字影响..也就是B区的雷有各种各样的分布.但是每种分布都有各自的概率..这个概率可以由A区的数字分布非常准确的求得。

(2)然后没开的雷数减去B区的雷数就是C区的雷数..C区的雷数除以C区的格子数便是C区开出雷的概率..因此C区的概率分布要由B区的概率分布来决定..C区的开出雷的概率是等概率分布.

(3)你每打开一个格子A区的雷的概率分布便会变化一次。因此你需要不断的去更新你的概率分布..

以上是从雷的概率分布去讨论的。

以下是从你已经掌握了足够的技巧..然后你能够充分的去利用这些技巧..最终你是否能成功完成这个游戏来讨论。.

首先..雷的分布是各种各样的。有些雷的分布是可以推出来的..而有些雷是不能推出来的。是一个死角那样的分布。因此就需要讨论各种雷的分布组合。.找出各种死角分布的雷..很明显..

(1)四个角落出现死角分布的雷的概率是最多的..而其中的某个格子出现雷的概率是最高的..这个概率能通过具体分析来求得是一个具体的概率..用P1来表示。因此..你第一个开的地方应该是出现死角分布概率最高的格子..第二个开的格子是死角分布第二高的格子..这样就能提高你以后完成这个游戏的概率..

(2)理论上四个角落是对称的..你开完四个角落之后..死角的组合就会又再次发生变化..你需要重新去讨论..然后求得最可能出现死角的分布的格子.而这个概率可以根据分类来准确求得..用P2来表示..

(3)理论上根据对称的原理..也是开四个角落中的某个格子..

(4)如此类推。你用这个方法不踩到雷的概率是P=(1-P1)*(1-P2)*(1-P3)。.*(1-PN)..

(5)当1-P>PN的时候..你就应该放弃继续用这个方法来提高你的成功率。

别晕!!!!

转载请注明出处育才学习网 » 扫雷怎么写

知识

糟糕的糕怎么写

阅读(435)

本文主要为您介绍糟糕的糕怎么写,内容包括糟糕的糕字怎么组词,糟糕的糕怎么组词,糟糕的糕字的拼音。糟糕、年糕、蛋糕、糕点、雪糕、发糕、切糕、蜂糕、糕饼、金糕、扒糕、冰糕、糕干、丝糕、松糕、楂糕、饵糕、奶糕、油糕、粘糕、枣糕、糕

知识

兄弟英文怎么写

阅读(165)

本文主要为您介绍兄弟英文怎么写,内容包括兄弟的英文是怎么写的,兄弟英文怎么写,我的一个哥哥用英语怎么说可不可以mybrother\myabrother这是我们。兄弟的英文:brothers 英 [brʌðə(r)] 美 [brʌðər] 释义:n. 兄弟;教友;同胞;<俚>老兄n.

知识

花园怎么写

阅读(171)

本文主要为您介绍花园怎么写,内容包括看图写话夏日的花园怎么写,作文《花园》500怎么写,三年级下册作文春天的花园怎么写。太阳公公无私的把那温柔的阳光洒向大地,那些绿树、红花、小草,都竞相生长、开放。你瞧!夏天的花园如同一幅美丽的图话,

知识

四拼音怎么写

阅读(184)

本文主要为您介绍四拼音怎么写,内容包括一个口,四个又,的一个字怎么读啊,要拼音,“四个”拼音怎么写,“四个”拼音怎么写。“四个”拼音这样写:四(sì)个(gè) “四”的拼音是:四(sì); “个”的拼音是:个(gè)。 在《新华字典》上查“四”的拼音是:

知识

调研报告结尾怎么写

阅读(312)

本文主要为您介绍调研报告结尾怎么写,内容包括调研报告的结尾怎么写,社会调研报告咋个写,它的开头和结尾怎么写,调研报告的结尾需要署名和写日期吗。一般不用,你可以找范文看一下格式:调研报告的标题调研报告要用能揭示内容中心的标题,具体写

知识

好的英语怎么写

阅读(186)

本文主要为您介绍好的英语怎么写,内容包括好的用英语怎么说,做的最好的,第一好的用英语单词怎么写,好的英语怎么说。好的用英语:good读音:英 [ɡʊd] 美 [ɡʊd] adj. 好的;上等的;优秀的n. 好处;善行(复)goods:商品;货物.词

知识

工资发放证明怎么写

阅读(535)

本文主要为您介绍工资发放证明怎么写,内容包括工资以现金形式发放怎么写证明,在我国,工资现金发放证明具体应该怎么写,工资证明怎么写。某某同志系我单位 “”职员,已经连续在我单位工作 年,现任职务 ,技术职称 ,月均工资收入为 1800 元,月均其

知识

惠的英文怎么写

阅读(189)

本文主要为您介绍惠的英文怎么写,内容包括惠的英文字怎么写,名字中的“惠”用英语怎么说,比如“李”是Lee,惠的英文怎么写。中国名字其实是可以直接用拼音写出来的,比如“惠”,即为 Hui. 至于姓氏,一般也可以直接写拼音,比如“李”,即为Li. 不过

知识

活动宣传文案怎么写

阅读(212)

本文主要为您介绍活动宣传文案怎么写,内容包括广告活动文案怎么写,促销文案怎么写,促销活动的广告语怎么写。目录一,前言二,广告商品三,广告目的四,广告期间五,广告区域六,广告对象七,策划构思八,广告策略九,广告主题表现及媒体运用一 前言 本公

知识

攥怎么写

阅读(169)

本文主要为您介绍攥怎么写,内容包括“攥”字怎么写,能给张大图吗,拜托啦,丹的攥字怎么写,攥用拼音怎么写。攥的繁体字怎么写( 攥 | 攥 ) 攥的QQ繁体字是什么( 攥 | 攥 ) 攥的拼音/攥的音标zuàn攥的意思→攥是什么意思→攥的意思是

知识

大写的二十怎么写

阅读(158)

本文主要为您介绍大写的二十怎么写,内容包括大写的二十怎么写哦,大写的二十怎么写,二十元的正确小写如何写。壹、贰、叁、肆、伍、陆、柒、捌、玖、拾。拾壹、拾贰、拾叁、拾肆、拾伍、拾陆、拾柒、拾捌、拾玖、廿。基本解释:1. 拼音文字中

知识

100的英语怎么写

阅读(227)

本文主要为您介绍100的英语怎么写,内容包括1到100的英语单词怎么写,1~100的英语怎么写,从1到100的英文怎么写。one two three four five six seven eight nine ten eleven twelve thirt

知识

怎么样写软文

阅读(156)

本文主要为您介绍怎么样写软文,内容包括如何写一篇让人印象深刻的软文,怎么样写软文啊,如何写软文。一篇好文章要有三要素,软文也是文章,同样也得有三个核心要素。分别是产品卖点、软文主题和内容素材。产品卖点就是你想要一款产品宣传的核心

知识

选导师的邮件怎么写

阅读(152)

本文主要为您介绍选导师的邮件怎么写,内容包括考研找导师的邮件怎么写,选导师怎么写邮件,给导师发邮件怎么写。首先 这是我抄来的 不过 我姐是这么写的 虽然我认为打电话会更好1.首先介绍自己的情况,优势2.报考导师的原因,为什么感兴趣3.研究

知识

扫雷怎么过关

阅读(200)

以下是扫雷过关的方法:1.启动“扫雷”游戏,进入主页面;2.在游戏界面上输入"xyzzy"5个字母,然后按shift键,就启动了破解;3.鼠标在“扫描”上的方格上移动,注意看“扫雷”界面最左上角;4.是在“桌面”的最左上角,而不是游戏界面,一旦出现个“黑点”,

知识

扫雷游戏有些什么技巧吗

阅读(145)

接受扫雷是一款拼人品的游戏,想要驾驭它需要有充足的耐心,大体技巧如下:1.初级:全用左键;2.中级:尽量用左键;3.高级:左右键同按灵活使用;4.要有一个好鼠标,并且多加练习;5.脑子要转的快,手一定要跟上脑的速度,达到开一片区域马上就能判断出雷的位置的

[/e:loop]