游戏名称:minessweeper
利用qt实现可视化。
本程序灵感来源于windows系统经典扫雷游戏,力求还原游戏体验。但因本人编程水平有限,仍有不足之处。
游戏区包括雷区、地雷计数器(位于左上角,记录剩余地雷数)和计时器(位于右上角,记录游戏时间),确定大小的矩形雷区中随机布置一定数量的地雷(初级为99个方块10个雷,中级为1616个方块40个雷,高级为16*30个方块99个雷,自定义级别可以自己设定雷区大小和雷数),玩家需要尽快找出雷区中的所有不是地雷的方块,而不许踩到地雷。游戏设定默认为初级。
游戏的基本操作包括左键单击、右键单击、左键双击三种。其中左键用于打开安全的格子,推进游戏进度;右键用于标记地雷,以辅助判断,或为接下来的双击做准备;双击在一个数字周围的地雷标记完时,相当于对数字周围未打开的方块均进行一次左键单击操作:
左键单击:在判断出不是雷的方块上按下左键,可以打开该方块。如果方块上出现数字,则该数字表示其周围3×3区域中的地雷数(一般为8个格子,对于边块为5个格子,对于角块为3个格子。所以扫雷中最大的数字为8);如果方块上为空(相当于0),则可以递归地打开与空相邻的方块;如果不幸触雷,则游戏结束。
右键单击:在判断为地雷的方块上按下右键,可以标记地雷(显示为小红旗)。重复一次操作用问号标记不确定的格子,重复两次操作来取消标雷。
左键双击:当双击位置周围已标记雷数等于该位置数字时操作有效,相当于对该数字周围未打开的方块均进行一次左键单击操作。地雷未标记完全时使用双击无效。若数字周围有标错的地雷,则游戏结束,标错的地雷上会显示一个“ ×”
**游戏成功:**当把所有的雷找出并标上旗帜,且没有标错的时候游戏结束,计时暂停,
显示为
游戏开发过程:
首先实现了埋雷,初始化每个格子的数字,并初始化了页面。
然后实现了左键单击展开格子和开始计时,以及将不同数字显示为不同的颜色,以及点击雷游戏结束的功能;
之后又实现了右键插下旗子和问号的功能,以及插一个旗子,左上角数字减1的效果。
然后实现了判断游戏是否成功的功能。(但有不足之处在于,只能在所有雷都正确标出并且所有格子均翻出后才能确认成功)
最后实现了左键双击的功能。
不足之处:只有在所有的雷都用旗子标出来并且没有错误判断的时候,才判断成功。但实际上,在原版软件中,只需要将雷之外的格子都找出来,至于雷的格子是否标记并无要求。
并且游戏结束时,图标切换会有些迟缓,原因在于每秒钟判断一次,而不是游戏结束的同时就转换图标。有待改进。
切换会有些迟缓,原因在于每秒钟判断一次,而不是游戏结束的同时就转换图标。有待改进。