一、项目概述
1.1 功能实现
设计一个能够在Linux环境下使用的小型GTK扫雷游戏,能够正确地处理与识别用户的鼠标点击操作等。而该游戏的玩法是在一个 9*9的方块矩阵中随机布置10个地雷。玩家逐个翻开方块,翻出所有非地雷的方块以找出所有地雷为最终游戏目标。如果玩家所翻开的方块有地雷,则游戏结束。扫雷游戏的目标是尽快找到雷区中的所有不是地雷的方块,而不许踩到地雷。部分方块点开会显示数字,该数字的意思是该数字四周的8个位置中存在的地雷个数,如果挖开的是地雷,则会提示游戏失败。
1.2玩家具体操作
1)当玩家用鼠标左键点击方格时,能够判别挖到的是雷或者不是雷,并且显示对应的信息。
2)当玩家用鼠标右键点击,能够进行标记方格,该方块显示为“★”。表示该方块下面可能埋藏着地雷,一旦使用了一个标记,则地雷计数器的个数减少一个。如果想要撤销标记,再点击一次右键即可(左键没反应)。
3)如果玩家能找出全部的地雷,显示玩家胜利信息,否则,显示玩家失败信息,并且这时用标记“*”标出所有含雷的方块,以便让操作者知道哪些方块含有地雷,这一局游戏以失败告终。
二、开发环境
2.1 Ubuntu
Ubuntu是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu 是基于Debian GNU/Linux,支持x86、amd64(即x64)和ppc架构,由全球化的专业开发团队(Canonical Ltd)打造的。这里选用Ubuntu的原因是使用该虚拟机进行GTK编程会方便一些。
2.2 GTK环境的搭建
在Linux系统下的文本编辑器比较操作方便,但是对于习惯使用Windows系统的用户来说是一个不错的选择。与在Windows系统的操作大致相同,右键选项新建一个文本即可。
对于编译器GCC的选择,除了其功能强大、简单灵活的特点之外,还因为它能支持各种不同的硬件平台。具有了交叉编译的功能,即在一个平台下编译另一个平台的代码,这样为后期代码的编译与调试提供的便利。可以编译多种语言,包括:C,C++,Java等编程语言。
三、设计思想
该游戏分为多个模块,模块图如下:
这里对实现游戏的主要模块进行分析。
3.1游戏界面设计模块
游戏以较为简单的灰色和黄色方块作为主要的界面元素,界面中的各个小方块构成扫雷的雷区,如图3.1所示。当在操作时小方块的背景颜色显示为黄色,则表示该方块还没有被操作者进行挖开或标记出的操作;当在操作时小方块的背景色显示为灰色,则表示该方块已被操作者进行挖开或标记出的操作,即如果挖开会标记为“★”“*”或“数字”三种符号。同时,玩家可以通过游戏上方的文字提示查看用时以及地雷个数。
图3.1 游戏操作界面
3.2游戏控制模块
当event->button等于1时,即点击鼠标左键,进入方格打开模块。当event->button等于3时,即点击鼠标右键,对方格进行标记,如图3.2所示。再次点击右键取消方格标记。
图3.2 右键选中方格会显示星号
3.3方格打开模块
该模块实现了扫雷游戏的基本功能,通过鼠标左键点击,如果是雷,则游戏结束,会标记为游戏失败,进入游戏结束模块,如果是空白图片则自动散开空白图片周围的方格。所有非地雷的方格全部选中同样进入游戏结束模块,会标记为游戏胜利。
游戏运行界面如图 3.3 所示。
图3.3 左键选中空白方格会自动散开周围的方格
3.4游戏结束模块
当游戏是胜利结束的会显示游戏使用时间,如图3.4所示;如果是失败结束的会显示游戏失败,如图3.5所示。
图3.4游戏失败
图3.5 游戏胜利
3.5雷区设计模块
该游戏进行随机布雷,如果方格存在重复布雷则跳过。布雷后周围的8个方格数字加1。
四、设计流程与运行结果
4.1设计流程
1)下载GTK
安装过程如图4.1所示,输入命令sudo apt-get install libgtk2.0-dev即可。
2)下载GTK
可以使用mkdir命令建立一个文件夹,在该文件夹下编写sweep.c文件,之后输入gcc -W sweep.c -o sweep `pkg-config --cflags --libsgtk+-2.0` 进行编译.
4.2运行结果
输入./sweep命令后即可弹出扫雷初始页面。