扫雷游戏的设计与开发论文
- 格式:doc
- 大小:125.50 KB
- 文档页数:13
今天,你扫雷了么?学校:北京大学附属中学年级:高二小组:PC小组目录前言—选题意义------------------------------------------1前言—说明----------------------------------------------1前言—论文摘要------------------------------------------1正文—基本玩法简介-------------------------------------2正文—游戏策略-----------------------------------------2正文—数据的收集统计-----------------------------------6正文—数学模型的建立-----------------------------------6正文—结论---------------------------------------------8正文—误差分析-----------------------------------------9小组成员感受--------------------------------------------10相关注解------------------------------------------------11参考文献------------------------------------------------11第一部分:前言一、选题意义:我们认为,此类游戏有益于开发脑力,是在学习之余的一个放松的有意义的好方法。
然而现在的扫雷游戏,只有简单的初级、中级、高级三档,所以我们决定对相同格子不同雷数,以及相同雷数,不同格子数进行多次实验,从而制出一张随格数(雷数)变化时胜率的函数图,这样可以更清楚的知道其难度的变化。
二、说明:在本篇论文中,我们会先针对于扫雷游戏的初学者,制定一套战术策略方案,之后对一些经典情况进行分析:比如在一些不确定的情况下对于雷的概率分析。
摘要当今社会的生活节奏越来越快,人们的压力日渐提高,扫雷作为一款经典的游戏,这款经典小游戏在提高人的逻辑推理能力与判断能力时还可以充分的享受娱乐。
本次毕业设计我们以VisualStudio2012为开发环境,设计并开发了基于VS的扫雷。
本应用软件针对逻辑推理能力的培养与游戏娱乐行,采用软件工程中结构化思想、标准的软件设计流程,从可行性研究、需求分析、系统设计及系统实现和测试等步骤来开发,基于VS开发平台,采用C++语言编写关键词:C++;扫雷;游戏;目录_Toc483039834弓I言 (1)第2章需求分析 (2)1.1开发背景 (2)1.2Visual Studio开发平台的优势 (2)1.3需求分析及设计目标 (3)第2章总体蚪 (4)2.1设计规划 (4)2.2功能模块设计 (4)2.3功能模块流程 (4)3.第3章程序界面设计 (6)3.1开发及运行环境 (6)3.2创建项目 (6)3.3界面各模块的设计 (7)第4章主要暨代码 (12)4.1主程序的实现 (12)4.2功能测试 (21)总结 (1)致谢 (2)参考文献 (3)引言扫雷,在科学和技术发展史上的作用类似。
扫雷关于数字的谜最初是从20世纪60年代和70年代,那时已经流行Jerimac拉特利夫的〃多维数据集〃游戏。
几十年后,于1992年,在扫雷艇加入Windows 3.1,它不仅显示是专家在Windows作业系统的游戏,而且让用户属性鼠标周围基本功能,让我们操作变得非常自然,并培养鼠标移动速度和准确性。
第一个版本的扫雷游戏来自1973年称为〃方形〃的游戏。
在Rlogic中,球员的任务是作为英国海军陆战队,作为一种矿安信息中心任务,如果这条路被地雷围困那么你失去一切。
五年后,汤姆格开发游戏,〃地雷〃基于Rlogic平台,奠定了现代的扫雷游戏。
几十年前,罗伯特-多尔和约翰逊两个程序员在微软Windows3系统加入游戏,扫雷游戏开始蔓延到全世界游戏的操作原则包括单击操作、右键单击和双击。
济源职业技术学院毕业设计(论文)题目基于Qt的扫雷游戏设计系别信息工程系专业计算机应用技术班级计应1002班姓名常慧珍学号********指导教师李攀日期二零一二年九月基于Qt的扫雷游戏设计总计:毕业设计(论文)25 页图表10 幅摘要扫雷游戏是一款经典的小游戏,这款游戏不仅可以让人们充分享受娱乐的目的,而且可以通过这款小游戏开发人的逻辑推理能力和判断能力。
本次毕业设计我们以Qt4.6为开发环境,设计并开发了基于Qt的扫雷游戏。
扫雷游戏主要研究以下两个方面:第一是初始化问题,包括随机产生本局游戏中的雷数,雷的分布对于每个小区域如何获得周围地区分布的雷数等等。
第二就是对鼠标事件的处理,即在游戏过程中对鼠标事件应如何做出反应。
本论文以Qt作为开发软件,首先使用信号与槽的方法实现菜单、工具栏的功能,其次又以MousePressEvent鼠标事件发出信息来了解使用者的意图,进而做出相对应的动作,再次介绍了清除地雷区方块的方法,通过递归程序的编写,在程序代码上会变得相当简洁。
最后利用布局管理组(Layouts)进行整体布局。
使用C++语言设计完成了扫雷游戏的初始化界面,实现了扫雷游戏的计时、重新开始、难度设置、排行榜、帮助等功能。
还增加了游戏在成败时弹出对话框等功能。
总的来说本次设计在功能上已经基本达到预期的要求。
但还有一些不足,比如扫雷游戏设计还可以添加一些背景音乐、背景图片、视频等功能,更能增加人们的娱乐性。
关键词:扫雷游戏;Qt;C++ABSTRACTMinesweeper game is a classic game, the game can not only allow people to fully enjoy the entertainment purposes, and by this small game development logical reasoning ability and judgment. The graduation project to Qt4.6 development environment, design and development of Qt-based game of Minesweeper.The minesweeper game the following two aspects:The first is the initialization problems, including randomly generated number of Council Game Ray Ray distribution for each small area how to get around the geographical distribution of Ray.The second is the processing of mouse events, mouse events in the course of the game how to react.In this thesis, QT signals and slots as the development of software, the first to use the method to achieve the functionality of the menus, toolbars, followed Youyi mousePressEvent mouse events issued information to understand the user's intent, and then make a corresponding action, again introduced a clear Minefields box by recursive program code will become quite simple. Finally, the the layout management group (Layouts) overall layout.Completed minesweeping games initialization interface design, to achieve a mine-sweeping game of timing, start again, difficulty settings, rankings, help functions using the C language. Game in the success or failure of the pop-up dialog box. Overall, the design function has basically reached the expected requirements. But there are some disadvantages, such as minesweeping game design can also add some background music, background image, video, and can help increase people's entertainment.Keywords: Minesweeper game; Qt; C++目录摘要 (I)ABSTRACT .......................................................................................................................... I I 第1章绪论 ..................................................................................................................... - 1 -1.1 研究背景 ........................................................................................................... - 1 -1.2 研究原因 ........................................................................................................... - 1 -1.3 研究意义 ........................................................................................................... - 1 -第2章Qt简介 ................................................................................................................ - 2 -2.1 Qt特征 ............................................................................................................... - 2 -2.2 Qt核心编程技术 ............................................................................................... - 2 -2.2.1 元对象系统............................................................................................ - 2 -2.2.2 信号和槽机制........................................................................................ - 3 -2.2.3 QObject类 .............................................................................................. - 3 -2.2.4 对象树.................................................................................................... - 3 -2.2.5 事件........................................................................................................ - 3 -2.2.6 QApplication类...................................................................................... - 3 -2.2.7 QWidget类............................................................................................. - 4 -2.2.8 基本布局(QLayout) ............................................................................... - 4 -2.3 C++面向对象程序设计..................................................................................... - 4 -2.4 Qt程序用到的类 ............................................................................................... - 5 -2.5 Qt应用程序实现 ............................................................................................... - 5 -2.6 本章小结 ........................................................................................................... - 6 -第3章扫雷游戏设计 ..................................................................................................... - 8 -3.1 扫雷游戏功能需求分析 ................................................................................... - 8 -3.2 扫雷游戏整体框架介绍 ................................................................................... - 8 -3.3 扫雷游戏主要功能的实现 ............................................................................... - 9 -3.3.1 菜单栏的实现........................................................................................ - 9 -3.3.2 菜单栏的功能...................................................................................... - 11 -3.3.3 鼠标事件的实现.................................................................................. - 11 -3.3.4 完成扫雷游戏逻辑的设计.................................................................. - 12 -3.3.5 扫雷游戏状态分类.............................................................................. - 12 -3.3.6 初始化界面功能实现.......................................................................... - 13 -3.3.7 雷区的随机布置.................................................................................. - 13 -3.4 清除未靠近地雷的方块 ................................................................................. - 14 -3.5 游戏的判断 ..................................................................................................... - 15 -3.5.1 游戏成功.............................................................................................. - 15 -3.5.2 游戏失败.............................................................................................. - 15 -3.6 游戏测试结果 ................................................................................................. - 16 -结论 ............................................................................................................................. - 17 -致谢 ............................................................................................................................. - 18 -参考文献 ................................................................................................................... - 19 -第1章绪论1.1 研究背景随着计算机与网络的普及,人们生活水平的提高,电脑游戏越来越成为人们生活中不可或缺的一部分,在人们繁忙的工作之余,给人带去欢乐。
扫雷游戏毕业设计扫雷游戏毕业设计扫雷游戏是一款经典的益智游戏,它的目标是通过点击方块来揭示地雷的位置,同时避免触雷。
作为一名计算机科学专业的学生,我选择了扫雷游戏作为我的毕业设计项目。
在这篇文章中,我将分享我在设计和开发过程中的经验和思考。
1. 引言扫雷游戏是一款简单而又富有挑战性的游戏,它能够锻炼玩家的逻辑思维和决策能力。
我的目标是设计一个功能完善、界面友好的扫雷游戏,并通过实现一些创新的功能来提升游戏的乐趣和可玩性。
2. 游戏规则在设计扫雷游戏时,首先要明确游戏的规则。
扫雷游戏的基本规则是在一个方块阵列中,隐藏着一定数量的地雷。
玩家需要通过点击方块来揭示其内容,如果揭示到地雷,游戏结束;如果揭示到数字,则表示周围有多少颗地雷;如果揭示到空白方块,则会自动揭示周围的方块。
玩家需要通过逻辑推理和猜测来找出没有地雷的方块,直到所有的地雷都被标记出来或者所有的非地雷方块都被揭示出来。
3. 游戏界面设计游戏界面的设计对于提升玩家的游戏体验非常重要。
我选择了简洁而直观的设计风格,使得玩家能够快速上手并享受游戏的乐趣。
在游戏界面上,我添加了一些额外的功能,比如计时器和雷区标记。
计时器可以记录玩家完成游戏所用的时间,而雷区标记可以帮助玩家标记可能的地雷位置,增加游戏的策略性。
4. 游戏算法设计在扫雷游戏中,算法的设计对于游戏的可玩性和难度有着重要的影响。
我选择了经典的随机算法来生成地雷的位置,确保每局游戏的地雷分布都是随机的。
另外,我还设计了一种智能提示算法,当玩家陷入困境时,可以给出一些建议,帮助玩家更好地解决难题。
5. 游戏开发过程在游戏开发过程中,我选择了使用Python编程语言和Pygame库来实现游戏的逻辑和界面。
Python是一种简洁而强大的编程语言,而Pygame库则提供了丰富的游戏开发功能和工具。
通过合理的模块划分和代码组织,我能够更好地管理和维护游戏的代码。
6. 游戏测试和优化在游戏开发完成后,我进行了大量的测试和优化工作,以确保游戏的稳定性和性能。
java扫雷毕业设计Java扫雷毕业设计近年来,计算机科学与技术领域的发展迅猛,人们对于计算机程序的需求也越来越高。
作为一门广泛应用于软件开发的编程语言,Java在这个领域中扮演着重要的角色。
在学习Java的过程中,毕业设计是一个不可或缺的环节。
在这篇文章中,我将探讨一个有趣而且具有挑战性的毕业设计主题——Java扫雷。
一、背景介绍扫雷是一款经典的单人电脑游戏,最早出现在1989年的Windows系统中。
游戏的目标是在一个方格矩阵中找出所有的地雷,而不触发任何地雷。
玩家需要根据已翻开的格子周围的数字提示,推测出未翻开的格子是否有地雷。
扫雷游戏不仅考验玩家的逻辑思维和推理能力,也是一种很好的放松和娱乐方式。
二、设计思路在进行Java扫雷毕业设计时,我们需要考虑以下几个方面:1. 游戏界面设计:设计一个美观、直观的游戏界面,包括方格矩阵、计时器、剩余地雷数量等元素。
可以使用Swing或JavaFX等GUI库来实现。
2. 游戏逻辑设计:根据游戏规则,编写逻辑代码来实现游戏的进行。
包括生成地雷分布、计算周围地雷数量、判断游戏胜负等功能。
3. 用户交互设计:实现用户与游戏的交互,包括点击格子翻开、标记地雷、取消标记等操作。
可以使用鼠标事件监听器来实现。
4. 游戏难度设计:提供不同难度级别的游戏选择,包括初级、中级和高级。
不同级别的游戏难度可以通过改变地雷数量和方格矩阵大小来实现。
5. 计分系统设计:设计一个计分系统,根据游戏时间和标记地雷数量等因素来评估玩家的成绩。
可以在游戏结束时显示玩家的得分。
三、实现步骤在进行Java扫雷毕业设计时,可以按照以下步骤逐步实现:1. 创建游戏界面:使用GUI库创建游戏界面,包括方格矩阵、计时器、剩余地雷数量等元素。
2. 生成地雷分布:编写代码生成地雷分布,根据游戏难度确定地雷数量和方格矩阵大小。
3. 计算周围地雷数量:根据已生成的地雷分布,计算每个方格周围的地雷数量,并在界面上显示。
扫雷游戏设计毕业论文(一)引言概述:随着计算机技术的发展,电子游戏逐渐成为人们娱乐和休闲的一种主要方式。
扫雷游戏作为一种趣味益智的电子游戏,拥有广泛的用户群体。
本文将详细介绍扫雷游戏的设计,从游戏的规则、界面设计、算法优化、用户体验和可扩展性等方面进行阐述。
通过本文的研究和分析,可以更好地理解扫雷游戏的设计原理和优化方法。
正文:1. 游戏规则设计1.1. 游戏背景和目的1.2. 棋盘和雷区的构建1.3. 难度级别设定1.4. 雷的分布算法1.5. 游戏结束条件2. 界面设计2.1. 游戏主界面设计2.2. 按钮和图标设计2.3. 游戏界面布局与交互设计2.4. 游戏状态显示设计2.5. 图形元素和颜色选择3. 算法优化3.1. 点击扩散算法3.2. 自动揭开空白区域算法3.3. 雷区标记和标记取消算法3.4. 游戏计时算法3.5. 最佳成绩记录算法4. 用户体验4.1. 游戏难度与挑战性4.2. 游戏操作流畅性4.3. 游戏音效和音乐设计4.4. 游戏提示和帮助功能4.5. 社交分享和竞争性体验5. 可扩展性设计5.1. 不同模式的扫雷游戏设计5.2. 不同尺寸的棋盘和雷区设计5.3. 不同风格的图形和界面设计5.4. 多平台兼容性设计5.5. 扩展功能和扩展包设计总结:通过本文对扫雷游戏设计的研究,我们深入了解了游戏规则设计、界面设计、算法优化、用户体验和可扩展性等方面。
扫雷游戏设计的关键在于规则的设定,界面的美观和易用性,以及算法的优化。
同时,用户体验和可扩展性也是设计的重要考虑因素。
通过本文的分析,我们可以更好地理解扫雷游戏设计的原理和方法,并提出改进措施。
期望本文能为扫雷游戏设计的进一步研究和发展提供参考。
目录一、可行性分析 (5)1.引言 (5)1.1编写目的 (5)1.2项目背景 (5)1.3定义.................................................................................. 错误!未定义书签。
1.4参考资料 (6)2.可行性研究的前提 ............................................................... 错误!未定义书签。
2.1要求.................................................................................. 错误!未定义书签。
2.2目标 (6)2.3条件、假定和限制 (7)2.4可行性研究方法 (7)2.5决定可行性的主要因素 (7)3.对现有系统的分析 (7)3.1工作负荷 (7)3.2费用支出 (7)3.3人员 (7)3.5局限性 (7)4.所建议技术可行性分析 (8)4.1对系统的简要描述 (8)4.2与现有系统比较的优越性 (8)4.3采用建议系统可能带来的影响 (8)4.5技术可行性评价 (9)5.社会因素可行性分析 (9)5.1法律因素 (9)5.2用户使用可行性 (9)6.其他可供选择的方案 (10)二.需求规格说明书 ................................................................... 错误!未定义书签。
1.引言 ......................................................................................... 错误!未定义书签。
1.1编写目的.......................................................................... 错误!未定义书签。
远程与继续教育学院本科毕业论文(设计)题目:基于Android扫雷游戏的设计与实现学习中心:XXXXXXXXXXXX学号:XXXXXXXXXXXX姓名:XXX专业:计算机科学与技术指导教师:XXXX2015 年8 月14 日中国地质大学()远程与继续教育学院本科毕业论文(设计)指导教师指导意见表学生姓名:XXXXXX 学号:XXXXXXXXXXXX 专业:计算机科学与技术毕业设计(论文)题目:基于Android扫雷游戏的设计与实现中国地质大学()远程与继续教育学院本科毕业设计(论文)评阅教师评阅意见表学生姓名:XXXXXX 学号:XXXXXXXXXXXX 专业:计算机科学与技术毕业设计(论文)题目:基于Android扫雷游戏的设计与实现论文原创性声明本人郑重声明:本人所呈交的本科毕业论文《基于Android扫雷游戏的设计与实现》,是本人在导师的指导下独立进行研究工作所取得的成果。
论文中引用他人的文献、资料均已明确注出,论文中的结论和结果为本人独立完成,不包含他人成果及使用过的材料。
对论文的完成提供过帮助的有关人员已在文中说明并致以谢意。
本人所呈交的本科毕业论文没有违反学术道德和学术规范,没有侵权行为,并愿意承担由此而产生的法律责任和法律后果。
论文作者(签字):XXX日期:2015年8月14日摘要随着技术通信不断进步,移动通信终端设备的功能也在不断地增长,朝着智能化的方向发展。
手机已经不再是个单一的通信设备,而是逐渐融合了个人信息管理,无线上网,移动办公,影音娱乐等功能,成为笔记本电脑之外的另一种更便携,更易用的办公平台。
因此,手机的娱乐应用服务将会有很大的发展空间,游戏也是其中之一。
本系统主要是实现基于Android平台的扫雷游戏,扫雷是一款古老的益智游戏,其设计目的是训练人的逻辑思维能力。
本文首先论述了Android系统的背景和研究现状,接着简要的介绍了android 的技术及对Android分析,并且介绍了Android应用程序的结构。
java扫雷游戏毕业设计Java扫雷游戏毕业设计在计算机科学与技术领域,毕业设计是学生完成学业的重要环节之一。
毕业设计不仅考验学生的专业知识和技能,还要求学生能够运用所学知识解决实际问题。
在这篇文章中,我将介绍一个有趣且具有挑战性的毕业设计主题:Java扫雷游戏。
Java扫雷游戏是一款经典的益智游戏,它的规则相对简单,但是却需要玩家具备一定的逻辑思维和推理能力。
在游戏中,玩家需要揭开方块,而每个方块下面都可能隐藏着雷。
玩家需要根据已揭开的方块周围的数字提示来推测雷的位置,并用旗帜标记出来。
游戏的目标是揭开所有非雷方块,而不触雷。
在设计Java扫雷游戏的过程中,首先需要考虑的是游戏界面的设计。
一个好的游戏界面应该直观、美观且易于操作。
可以使用Java的图形界面库,如Swing或JavaFX来实现游戏界面。
界面的布局应该清晰,方便玩家揭开方块和标记雷。
接下来,需要考虑的是游戏逻辑的设计。
游戏逻辑包括方块的生成、雷的分布、数字提示的计算等。
可以使用面向对象的思想,设计方块类、雷类和游戏类等。
方块类可以包含方块的状态(揭开、标记、未揭开)、周围雷的数量等属性。
雷类可以包含雷的位置信息。
游戏类可以包含游戏的状态(进行中、胜利、失败)、方块的生成和揭开等方法。
除了游戏界面和逻辑的设计,还可以考虑一些额外的功能来增加游戏的趣味性和挑战性。
例如,可以添加计时器来记录玩家完成游戏所用的时间,以及一个排行榜来展示最快完成游戏的玩家。
还可以添加不同的难度级别,如初级、中级和高级,每个级别的雷的数量和方块的大小可以不同。
在实现Java扫雷游戏的过程中,还可以运用一些算法和数据结构来提高游戏的效率和性能。
例如,可以使用二维数组来表示游戏界面,使用深度优先搜索算法来揭开方块和计算数字提示。
还可以使用队列或栈来实现雷的分布算法,确保每次游戏都有一个合理的雷的分布。
除了设计和实现Java扫雷游戏,还可以考虑一些拓展和改进的方向。
扫雷游戏的设计与开发目录1流程规划2画面规划3鼠标使用4地雷及雷区表面探测情况5除去未靠近地雷的方块6游戏的调试7参考文献1.流程规划流程规划大致上可以分为三个部分,分别为:画面初始、游戏者按下第一个方块和为非地雷方块时展开。
流程规划如图1所示:图1整体流程规划图2.画面规划画面规划如图2所示:①④②③⑤⑥⑦⑧⑨图2说明如下:①:游戏窗口(Form)。
为了避免因改变窗口大小而造成画面呈现不美观,在这里将BorderStyle属性设定为3(双线固定对话框),即无法以窗口边缘进行窗口大小调整。
②:地雷数显示区(PictureBox)。
③:游戏状态(Image)。
④:游戏时间显示区(PictureBox)。
⑤:计数及状态区(PictureBox)。
⑥:地图区图样(Image)。
⑦:地雷区(PictureBox)。
⑧:存储图片的组件,包括游戏状态图片、地雷区图片、地雷数及秒数数字图片(Imagelist)。
⑨:秒数控制(Timer)。
游戏的详细设计3.游戏初始化当玩家开始游戏时,游戏画面如图3所示:计数及状态区地雷区图3游戏初始画面我们可以清楚的看到,游戏界面主要分为两个主要部分:1.计数及状态区;.地雷区。
首先我利用PictureBox组件,PictureBox为容器类型的组件,因此可以加入其他组件在其内。
在游戏中我利用了PictureBox组件的两个特性,分别为容器特性及立体框线,具体如下:(1)容器特性:只要容器本身显示的行为改变,在容器内的组件也会跟着改变。
当游戏初始时,地雷区的显示组件会循环执行,逐一布置在画面上,但由于执行循环时多个Image组件要显示图形,造成分时系统执行频率显示上会出现不流畅的情形,若在循环执行前,先将容器本身的Visable属性设为False,在循环执行完成后再将Visable属性设为Ture,则显示就会变得流畅许多。
(2)立体框线:通过组件本身立体框线的属性设定,可以为游戏画面的显示上营造出层次感。
然后再利用ImageList组件来存储游戏中将要使用的图片,我们可以将组件布置于窗体后编辑组件属性,如图4所示:图4通过InsertPicture和RemovePicture按钮即可编辑组件所存放的图片。
利用ImageList集合对象的Picture方法,即可将ImageList组件内的图片指定给图形显示组件,语法如下:Set图形组件. Picture=ImageList. ImageList(图片索引). Picture因为一个ImageList组件内必须存储大小相同的图片,所以在游戏中显示的图片共分为三个部分:1.数字计数图形;2.游戏状态图形;3.地雷区表示图形。
所以我们使用了三个ImageList组件来存储不同大小的图片。
接着便是对地雷区的初始化,这里我们利用Load及UnLoad指令,动态新增及删除组件。
在游戏的地雷区,我们依照游戏者自定义的地图类型,来布置未探测地雷方块。
假如设定的地图大小为20×30时,我们可以通过双循环For…Next及Load指令在程序执行阶段动态加载表示方块的组件,程序片段如下:‘加载表示地图资料的图片For y = 0 To 20 ‘地雷区高For x = 0 To 30 ‘地雷区宽Load 表示方块组件(index)‘设定组件位置……Next xNext y经过双循环的运算,程序就会产生20×30=600个组件,试想如果在程序设计阶段,就把600个组件布置在窗体上,那将是多么没有效率的事情,况且组件数量的多少,还要取决于游戏玩家设定的地雷区大小,所以利用Load指令对于大量加载同一组件的动作将有莫大的帮助。
加载组件后必须将组件做适当的布置,我们可以通过Image组件的Move属性,将组件布置于预定的位置,Move函数的原型如下:组件.Move X坐标,[Y坐标],[组件宽度],[组件高度](其中括号内表示可以省略)再配合双循环的变量值,可以控制组件布置于窗体的方向及方式,例如以下程序片段:For y = 0 To 20 ‘地雷区高For x = 0 To 30 ‘地雷区宽Load 表示方块组件(index)‘设定组件位置……组件(index).Move x *组件宽度,y *组件高度Next xNext y组件将呈现先由左至右,再由上至下布置。
若将内循环改为y值,同样的Move指令,组件的布置方向将由上而下再由左至右。
布置方向的不同,会关联到组件内含的索引值不同,相对在程序执行阶段存取组件时,所定义的组件索引值就必须考虑组件不止的方向,这样才不会造成组件存取的错误。
以由左至右再由上而下的布置方式为例,我们可以利用以下公式,求得组件索引值:组件索引值=(X坐标+Y坐标*数组宽度)这样,游戏界面的初始化工作就基本完成了,下面就是地雷的随机产生。
3.雷区的布置当游戏界面初始化完成后,这时在地雷区中并未产生地雷,只有当玩家在地雷区中第一次点下左键后,才会在地雷区中随机的布置当前游戏难度下应该产生的地雷总数,其主要用意在于不让玩家第一次就踩到地雷,这样在某种程度上可以提高玩家游戏的气愤。
具体实现如下所示:'判断地雷区是否处于可动作状态If isDie = False And isFinal = False Thenxxx = index Mod MAP_X '标示动作图片的坐标yyy = index \ MAP_X'判断为左键且该方块为未探测状态If Button = 1 And mapFaceArr(xxx, yyy) = 1 Then'判断游戏是否等待启动If isStart = False ThencMINE_NUM = MINE_NUMisStart = TrueTimer1.Enabled = True'布置地雷Do While cMINE_NUM > 0rX = Rnd() * (MAP_X - 1)rY = Rnd() * (MAP_Y - 1)'判断数组中(rX,rY)为非地雷及'非点选的方块坐标时If mapArr(rX, rY) <> 9 And _Not (rX = xxx And rY = yyy) ThencMINE_NUM = cMINE_NUM - 1mapArr(rX, rY) = 9'地雷外围数字各加一For xx = rX - 1 To rX + 1For yy = rY - 1 To rY + 1If xx >= 0 And xx <= MAP_X And _yy >= 0 And yy <= MAP_Y ThenIf mapArr(xx, yy) <> 9 And _Not (xx = rX And yy = rY) ThenmapArr(xx, yy) = mapArr(xx, yy) + 1End IfEnd IfNext yyNext xxEnd IfLoopEnd If游戏中主要模块的介绍与使用3.鼠标使用在游戏过程中,我们利用鼠标所发出的信息了解游戏者的意图,进而作出相对应的动作。
在MouseDown与MouseUp事件中,可以捕捉鼠标所按下或放开的按键为何、鼠标光标在该组件上的坐标及是否同时按下辅助键等。
函数原型如下:组件名称_MouseDown(index As Integer, _Button As Integer, _Shift As Integer, _ x As Single, _y As Single)组件名称_MouseUp(index As Integer, _Button As Integer, _Shift As Integer, _ x As Single, _y As Single)在参数列中,Button参数值表示鼠标上的按狃数值。
其意义如下:1:左键 2:右键倘若同时按下不止一个按键时,则传回数值为按键数值相加,例如同时按下左键及右键,则Button值为1+2=3在本游戏中,我们利用右键的MouseDown事件来标示“已标示”方块,利用左键的MouseDown事件,来标示游戏者准备按下的方块,再利用左键的MouseUp 事件来确定翻开的方块。
这样的用意在于,假如游戏者发现按下的方块是错误的,此时只要不松开左键,同时按下右键,该方块就会被标示为“已标示”方块,若再松开左键,则该方块因为已成为“已标示”方块,所以就无法翻开。
在窗口的软件中,鼠标的应用是不可或缺的,但鼠标固然好用,如果程序设计不当,也可能造成使用者的不便。
通常鼠标在软件的应用上经常使用MouseUp 事件来作为确定使用者的操作意图,而只把MouseDown事件当做标示的用途(用意就如同前面所提),只是为给使用者一个反悔的机会。
游戏的操作方面主要以鼠标为主,当鼠标指针对准未翻开的方块按下左键时即表示翻开方块:If Button = 1 Then '鼠标左键If mapFaceArr(xxx, yyy) = 1 ThenCall setMineImage(index, 10)Set iState.Picture = ilSmile.ListImages(3).PictureEnd If当鼠标指针对准未翻开的方块按下右键时即表示标示或疑示地雷,反复按下右键则方块会以“未标示”→“标示”→“疑似”三者关系不断循环:If Button = 2 Then '鼠标右键If mapFaceArr(xxx, yyy) = 1 Then '未探测mapFaceArr(xxx, yyy) = 2MINE_NUM_LABEL = MINE_NUM_LABEL + 1Call setMineImage(index, 13)Call setNowMinesElseIf mapFaceArr(xxx, yyy) = 2 Then '标示mapFaceArr(xxx, yyy) = 3MINE_NUM_LABEL = MINE_NUM_LABEL - 1Call setMineImage(index, 14)Call setNowMinesElseIf mapFaceArr(xxx, yyy) = 3 Then '疑似mapFaceArr(xxx, yyy) = 1Call setMineImage(index, 9)End If4.地雷及雷区表面探测情况在游戏设计上,我利用了两个二维数组分别记录地雷的分布情况及雷区表面探测情形,如图5和图6所示:图5标示地雷分布情况图6标示地雷探测情况因为两个数组维数皆为2,所以我们通过双循环做数据的对比工作。