基于ARM9开发板的扫雷游戏设计.doc

上传人:laozhun 文档编号:2392592 上传时间:2023-02-17 格式:DOC 页数:72 大小:4.42MB
返回 下载 相关 举报
基于ARM9开发板的扫雷游戏设计.doc_第1页
第1页 / 共72页
基于ARM9开发板的扫雷游戏设计.doc_第2页
第2页 / 共72页
基于ARM9开发板的扫雷游戏设计.doc_第3页
第3页 / 共72页
基于ARM9开发板的扫雷游戏设计.doc_第4页
第4页 / 共72页
基于ARM9开发板的扫雷游戏设计.doc_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《基于ARM9开发板的扫雷游戏设计.doc》由会员分享,可在线阅读,更多相关《基于ARM9开发板的扫雷游戏设计.doc(72页珍藏版)》请在三一办公上搜索。

1、 毕 业 论 文题 目: 基于ARM9开发板的扫雷游戏设计 学院: 电气信息学院 专业: 自动化 班级: 0901 学号: 200901020130 学生姓名: 段 志 勤 导师姓名: 万 琴 完成日期: 2013年6月7日 毕 业 设 计题 目: 基于ARM9开发板的扫雷游戏设计 学院: 电气信息学院 专业: 自动化 班级: 0901 学号: 200901020130 学生姓名: 段 志 勤 导师姓名: 万 琴 完成日期: 2013年6月7日 诚 信 声 明本人声明:1、本人所呈交的毕业设计(论文)是在老师指导下进行的研究工作及取得的研究成果;2、据查证,除了文中特别加以标注和致谢的地方外,

2、毕业设计(论文)中不包含其他人已经公开发表过的研究成果,也不包含为获得其他教育机构的学位而使用过的材料;3、我承诺,本人提交的毕业设计(论文)中的所有内容均真实、可信。作者签名: 日期: 年 月 日毕业设计(论文)任务书 题目: 基于ARM9开发板的扫雷游戏设计 姓名 段志勤 系别 电气信息学院 专业 自动化 班级 0901 学号 200901020130 指导老师 万 琴 职称 教研室主任 黄峰、汪超、刘星平 一、基本任务及要求: 以ARM9为核心,设计一个移动平台的扫雷游戏。 1.要求实现PC机上扫雷的基本功能,点到空白是递归,点到雷时自动爆炸,并且所有的雷自动爆炸,点到其他图片翻开图片。

3、用C+对鼠标事件,递归函数的编写。用QT的界面完成扫雷游戏的界面。2.要求把在PC机上写好的扫雷游戏移植到ARM9开发板上,实现移动设备上的扫雷游戏设计。利用Linux和QT的兼容性移植到到ARM9开发板。 二、进度安排及完成时间: (1)1月14日至3月4日:查阅资料为毕业设计做准备。 (2)3月5日至3月15日:撰写文献的开题报告。 (3)3月18日至4月1日:进行毕业实习,撰写毕业实习报告。 (4)4月2日至4月7日:了解课题的基本要求。 (5)4月8日至4月14日:进行程序的编写。 (6)4月15日至4月21日:对程序改进和修改。 (7)4月22日至4月28日:对ARM9开发板的移植进

4、行调式。 (8)4月29日至5月12日:程序的调试。 (9)5月13日至5月20日:QT应用的移植。 (10)5月21日至5月24日:撰写前言,目录,摘要,绪论。 (11)5月25日至5月28日:撰写系统软件设计和程序调试。 (12)5月29日至6月1日:撰写系统硬件部分设计和QT移植。 (13)6月2日至6月5日:撰写参考文献,致谢,附录。 目录摘要IAbstractII第一章 概述11.1 扫雷简介11.2 ARM9简介11.3 Linux系统简介11.4 QT简介21.5 C+简介21.6 课题研究的背景和意义2第二章 总体设计思路42.1 设计总体思路42.2 扫雷游戏主要功能52.3

5、 设计的软件72.4 设计的环境82.5 设计的语言82.6 设计的平台9第三章 软件部分设计123.1 视图和场景的设计123.1.1 视图的设计123.1.2 场景的设计133.1.3 视图中控件和动作的设计143.2 STL数据的设计163.2.1 STL的设计163.2.2 数据的设计183.3 STL图片的设计193.3.1 图片的选取和加载193.3.2 图片坐标的设计223.4 功能程序块的设计233.4.1 鼠标事件233.4.2 图片交换的设计253.4.3 爆炸和递归的设计253.4.4 初始化的设计26第四章 硬件部分的设计274.1 硬件介绍274.1.1 开发板简介2

6、74.1.2 CPU简介284.1.3 USB接口294.1.4 电源系统及接口294.1.5 复位系统303.1.6 FLASH 存储系统304.2 开发平台的设计314.2.1 交叉编译环境的搭建324.2.2 linux内核配置和编译334.3 QT应用的移植34第五章 调试与测试36总结39参考文献41附录 扫雷程序及注释42基于ARM9开发板的扫雷游戏设计摘要:随着时代的进步,现在已进入移动互联网时代,智能手机,平板电脑等移动设备越来越受到人们的欢迎。移动设备因为其的方便性,移动设备将是未来通信,上网,娱乐的主体。在人们紧张的工作学习之余,在外出旅游之余,可以随时随地拿出移动设备玩一

7、盘游戏给自己带来欢乐与放松,也可以放松自己的心情,缓解自己的工作和学习压力。扫雷是很多操作系统自带的一款小游戏,几乎每个电脑使用者都接触过这款游戏,并且深爱着这款小游戏。扫雷游戏是非常经典的一款小游戏,实现它的方法很多,可以用C,C+,VB,JAVA等很多语言。本设计主要是以QT作为开发软件,在linux系统中用C+设计并开发的一款扫雷游戏,最后移植到ARM9开发板上,以ARM9开发板作为测试和运行扫雷游戏,实现移动设备上的扫雷游戏。本设计的扫雷游戏功能基本上和window系统上的相同。利用QT软件的良好的图形界面做出扫雷游戏的图形界面,利用C+的方便和QT强大的类库来实现扫雷的基本功能,利用

8、QT的兼容性强以及linux系统良好的移植性能来移植到ARM9开发板上来实现移动设备上的扫雷游戏。论文首先介绍了C+,QT,linux系统,ARM9等本设计中用到的东西。然后介绍了总体设计思路,在linux系统下以及QT软件中用C+分模块设计出扫雷游戏的每个模块,最后移植到ARM9开发板上,实现本次设计。 关键字:扫雷、QT、linux、ARM9Minesweeping game design of arm9-based development boardAbstract:Along with the progress of The Times, and now has entered the

9、 era of mobile Internet, smart phones, tablets and other mobile devices more and more get the welcome of people. Mobile devices because of its convenience, mobile devices will be the future communication, the Internet, the main body of entertainment.In the tense work and study, travel, can take out

10、mobile devices anytime and anywhere to play a game to cheer myself and relaxation, can also relax the mood, reduce the pressure on their work and study.Minesweeping is many operating system comes with a small game, almost every computer users are exposed to the game, and deeply in love with this lit

11、tle game. Minesweeping game is a classic game, a lot of ways for it, you can use C, C + +, VB, JAVA, etc. A lot of language. This design mainly is the QT as the development software, a Linux system using c + + design and development of a mine clearance game, finally ported to the ARM9 development bo

12、ard, with ARM9 development board as a test and run the minesweeper, realize minesweeping game on a mobile device. This design of mine clearance game function and window system is basically the same. Using the QT software good graphical interface made minesweeper graphical interface, convenient using

13、 c + + and QT powerful class library to realize the basic function of mine, using QT strong compatibility and good transplantation Linux system performance to transplant to the ARM9 development board up minesweeping game on a mobile device. Paper first introduces the c + +, QT, Linux system, this de

14、sign used in things such as the ARM9. Then introduces the overall design ideas, using c + + and QT software runs under Linux system module design each module that minesweeper, finally ported to the ARM9 development board, realize the design.Keywords:Minesweeping、QT、Linux、ARM9第一章 概述随着计算机与网络的普及,人们生活水平

15、的提高,移动设备越来越成为人们生活中不可或缺的一部分,移动设备可以随身携带,在外出旅游,繁忙的工作之余,可以随时随地给人带去欢乐与放松。1.1 扫雷简介扫雷最原始的版本可以追溯到1973年一款名为“方块”的游戏,不久之后,“方块”被改写成了游戏“Rlogic”,在“Rlogic”里,玩家的任务是作为美国海军陆战队队员,为指挥中心探出一条没有地雷的安全路线,如果路全被地雷堵死就算输。两年后,汤姆安德森在“Rlogic”的基础上又编写出了游戏“地雷”,由此奠定了现代扫雷游戏的雏形。 1981年,微软公司的罗伯特杜尔和卡特约翰逊两位工程师在Windows 3.1系统上加载了该游戏,扫雷游戏才正式在全

16、世界推广开来。 这款游戏的玩法是在一个9*9(初级),16*16(中级),16*30(高级),或自定义大小的方块矩阵中随机布置一定量的地雷(初级为10个,中级为40个,高级为99个)。由玩家逐个翻开方块,以找出所有地雷为最终游戏目标。如果玩家翻开的方块有地雷,则游戏结束。 扫雷游戏是Windows操作系统自带的一款小游戏,在过去的几年里,Windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。本次的毕业设计我将利用QT作为开发工具,开发一款类似的“扫雷游戏”,并把扫雷游戏移植到ARM开发板上,实现移动

17、设备上的扫雷游戏。1.2 ARM9简介 ARM是Advanced RISC Machines的简称,ARM9系列处理器是英国ARM公司设计的主流嵌入式处理器,主要包括ARM9TDMI和ARM9E-S等系列, 新一代的ARM9处理器,通过全新的设计,采用了更多的晶体管,能够达到两倍以上于ARM7处理器的处理能力。这种处理能力的提高是通过增加时钟频率和减少指令执行周期实现的。1.3 Linux系统简介 Linux是一种自由和开放源代码的类UNIX操作系统。定义Linux的组件是Linux内核,该操作系统内核由林纳斯托瓦兹在1991年10月5日首次发布。严格来讲,术语Linux只表示操作系统内核本身

18、,但通常采用Linux内核来表达该意思,Linux则常用来指基于Linux内核的完整操作系统,包括GUI组件和许多其他实用工具。由于这些系统工具和库主要由GNU计划提供,自由软件基金会提议将该组合系统命名为GNU/Linux。Linux是一个领先的操作系统,可以运行在服务器和其他大型平台之上,如大型机和超级计算机。世界上500个最快的超级计算机90%以上运行Linux发行版或变种,最快的前10名超级计算机运行的都是Linux操作系统。 Linux也广泛应用在嵌入式设备上,如手机、平板电脑、路由器、电视和电子游戏机等。在移动设备上广泛使用的Android操作系统就是创建在Linux内核之上。1.

19、4 QT简介 Qt以作为一个跨平台框架而著称,Qt使用“一次编写,随处编译”的方式为开发跨平台的图形用户界面应用程序提供了一个完整的C+应用程序开发框架。Qt容许程序开发人员的单一源码树来构建可以运行在不同平台下的应用程序的不同版本,这些平台包括从Window98到Vista,Mac OS X、Linux、Solaris、HP-UX以及其他很多基于X11的UNIX。许多Qt库和工具也都是Qt/Embedded Linux的组成部分。Qt/Embedded Linux是一个可以在嵌入式Linux上提供窗口系统的产品。1.5 C+简介 C+是一种语言,仅仅是它的语法、特性、标准类库就已经是一门非常

20、高深的课程,C+设计成静态类型、和C同样高效且可移植的多用途程序设计语言。设计成直接的和广泛的支援多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。设计成尽可能与C兼容,籍此提供一个从C到C+的平滑过渡。避免平台限定或没有普遍用途的特性。不使用会带来额外开销的特性。设计成无需复杂的程序设计环境。1.6 课题研究的背景和意义现在已进入移动物联网时代,人们已经不满足于用电脑来娱乐,电脑携带不方便,不能随时随地带着电脑。所以移动设备越来越受到人们的喜爱。移动设备:也被称为行动装置(英语:Mobile devi

21、ce)、流动装置、手持装置(handheld device)等,是一种口袋大小的计算设备,通常有一个小的显示萤幕,触控输入,或是小型的键盘。因为通过它可以随时随地访问获得各种信息,这一类设备很快变得流行。诸如手提电脑和智能手机之类的移动计算设备一起,PDA代表了新的计算领域。移动设备包括掌上游戏机、移动电话、智能手机、平板电脑。移动设备能随时随地玩游戏或者做其他事情。可以让我们在紧张的工作之余能随时放松自己的心情。通过研究本课题来熟悉了解移动设备上的软件开发。经过大学四年的学习,我对理论知识有了一定的了解和认知,本次的毕业设计便是将大学所学的理论知识与实践相结合,同时也是对所学知识的检查,希望

22、通过本次的毕业设计使自己在程序的开发和设计上有新的认识并能有所提高,对于我们以后工作能力的培养具有重要意义。也让我们更加了解移动设备上的软件开发。第二章 总体设计思路扫雷游戏英文名称为mine sweeper,属于益智类游戏。通过鼠标即可操作游戏。游戏特点为操作简单,易于上手。本章主要介绍扫雷的总体思路设计,包括扫雷游戏设计模块和主要功能,开发平台、开发软件以及开发的环境。2.1 设计总体思路本设计分模块设计出扫雷的每一个部分。第一部分使用Qt软件的VSI(View(视图)、Scene(场景)、Item(道具)图形界面设计出扫雷的基本界面,即打开扫雷游戏出现的界面。然后利用Qt的类库和C+编程

23、把Scene加到View上。第二部分利用C+的STL完成扫雷底层的数据结构,即一个X行Y列的数据结构,类似于二维数组。-1代表雷,N(0-8)代表周围有N个雷。再利用Qt的类库和C+编程把STL的数据和STL的Item结合起来,实现扫雷的底层数据功能。第三部分再利用C+的STL创建一个X行Y列的Item,在网上选择好图片,把图片这个道具加场景中,实现扫雷的上层图片功能。把STL数据和Item结合起来,加到场景中。第四部分用C+编写程序实习扫雷的基本功能。第五部分再利用QT的兼容性好,把扫雷游戏移植到ARM9开发板上运行测试。如图2-1所示。STL数据ARM开发板PC机上扫雷STL图片VSI图形

24、界面视图及场景移动平台扫雷 功能程序块图2-1扫雷模块图2.2 扫雷游戏主要功能(1)提示区上侧显示菜单栏,可以选择雷的数目和整个区域的大小。(2)提示区下面位置按钮用于开局;(3)单击鼠标左键于未知区域,如果未知区域有雷,游戏结束,显示所有的地雷;如果没有雷,则显示一张数字的图片,代表周围八格的雷数,如果周围没雷,则再查看周围八个区域是否有雷,没雷用递归一直翻开图片。直到有雷为止,并显示周围雷的数目; (4)单击鼠标右键于未知区域,则显示一个标志,将其标识有雷。在该位置再次单击右键则取消;(5)将雷全部扫完后,会出现一个提示框,显示游戏胜利。如图2-2所示。开局为初始化雷数以及区域大小以及重

25、新开始游戏,默认为三行五列,雷数数目为四个。可以单击选项来调整区域的大小和雷的数目。退出为退出游戏。图2-3为已经把雷全部找出来的图片。图2-4为扫雷游戏的总体流程图。 图2-2 扫雷界面的初始化图2-3 扫雷成功的界面 图2-4 总体流程图否 结束是是否是否是否重新开始 递归 空白 成功是否扫完 数字是否是雷 左键初始化设定 开始 右键 标志取消标志 右键2.3 设计的软件本设计主要用到QT4.0作为开发软件。因为QT4.0具备以下一些优点:(1)支持平台广泛QT应用程序接口与工具兼容于所有支持平台,让开发员们掌握一个应用程序接口,便可执行与平台非相关的应用开发与配置,其支持的平台有:QT/

26、Windows(Windows XP,2000,NT4,Me/98)、QT/Mac (Mac OS X)、QT/X11(Linux ,SolarisHP-UX,IRIX,AIX)等。可移植性能高。(2)封装多QT对不同平台的专门QPI进行了专门的封装(文件处理、网络等)。可保护程序的数据以及变量,防止程序出错。(3)面向对象QT具有模块设计和注重软件构件或元素的可重用性的特点。 (4)构件支持 QT提供信号(signal)和插槽(slot)概念,这是一种类型安全的方法,它允许回调,冰支持对象之间在彼此不知道对方信息的情况下进行合作,这使得QT非常适合于真正的构件编程。 (5)友好的联机帮助 Q

27、T提供了大量的联机参考文档,有超文本HTML方式,也有UNIX帮助手册和补充说明,并且对于初学者,其中的指南将一步步介绍如何进行QT编程。 (6)便利性 由于QT是一种跨平台的GUI工具包,它对编程者隐藏了在处理不同窗口系统时潜在的问题,QT定义了一些类来隐藏在不同操作系统上不同处理方式下的细节问题。 (7)丰富的API函数 QT为专业应用提供了大量的函数,在QT的API中含有大约250个C+类,大多数的类都是GUI专有的。 (8)可用户化外观 QT支持主题,基于QT的应用程序能够在Windows外观、Motif外观,以及其他一些用户化主题之间切换。 (9)完整的一套组件工具 QT编程的基本模

28、块称之为组件,组件是用户界面的组成部分,QT含有用来创建专业外观的用户界面所需要的所有组件。2.4 设计的环境本次设计主要用Linux系统作为开发环境,因为Linux具有如下优点:真正开放的操作系统。也许,Linux的最大卖点就是它所给与客户的选择性。从硬件到支持再到Linux的发行版,你可以有很多的选择。你可以在一个价值200美元的旧PC机上运行Linux系统,你也可以将它作为一个LPAR(罗辑分区)运行在价值数百万美元的p595 IBM p系列服务器(server网络资源下载)上(你需要在RHEL4 或 SLES9之间作出选择),你甚至能够在IBM主机上运行Linux系统。使用Linux,

29、你不再会与硬件分销商发生冲突。尽管Unix也被定义为一个开放的系统,但现实是,你通常会与一个硬件供应商捆绑在一起。Linux是一个真正的开放系统。Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它主要用于基于Intel x86系列CPU的计算机上,也可运用在其他芯片上。Linux的低成本、强大的定制功能以及良好的移植性能,使得Linux在嵌入式系统

30、方面也得到广泛应用。由于Linux内核可裁剪,且免费,并且其在世界范围内,有强大的技术支持,所以在得到了飞速发展。2.5 设计的语言本次设计主要运用C+编写程序,C+具备如下一些优点:C+设计成静态类型、和C同样高效且可移植的多用途程序设计语言。C+设计成直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。C+设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。C+设计成尽可能与C兼容,籍此提供一个从C到C+的平滑过渡。C+避免平台限定或没有普遍用途的特性。 C+不使用会带来额外开销的特性。 C+设计成无需复杂的程序设计环境。 C+的很多

31、特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。 C+在一定程度上可以和C语言很好的结合,甚至目前大多数C语言程序是在C+的集成开发环境中完成的。C+相对众多的面向对象的语言,具有相当高的性能。 C+引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括MFC、QT、wxWidgets就是使用的C+,本设计就是采用QT来实现功能。本设计主要建立五个类,每个类为一个源文件。通过类与类之间的调用来实现底层数据域上层图片的结合,通过类与类之间的调用来实现初始化的设定。下图列出了各个类以及类与类之间的组合关系。如图2-6所示: cellite

32、m.cppsweepminesscene.cppmainwidow.cppminesdialog.cpp field.cpp图2-6 各个类之间的组合关系2.6 设计的平台本设计主要应用ARM9作为开发平台,把扫雷游戏从PC机上移植到ARM开发板上运行测试,实现移动设备的扫雷游戏。本设计运用mini2440开发板。Mini2440 是一款真正低价实用的ARM9 开发板,是目前国内性价比最高的一款学习板;它采用Samsung S3C2440 为微处理器,并采用专业稳定的CPU 内核电源芯片和复位芯片来保证系统运行时的稳定性。mini2440 的PCB 采用沉金工艺的四层板设计,专业等长布线,保证

33、关键信号线的信号完整性。Mini2440 的众多先进特性,可以概括为:(1)第一款被Linux 社区广泛支持的国产2440 开发板(自从Linux-2.6.31 开始,Mini2440被正式加入Linux 官方内核)(2)第一款在Linux 下支持万能USB 摄像头的2440 开发板(同类产品至今仍在使用近乎绝迹、拍摄效果奇差的中星微摄像头,并且没有图形界面的应用)(3)第一款统一采用支持EABI 标准交叉编译器的开发板(同类产品仍在使用拼凑的各个版本的编译器,导致开发效率低下,并且不利于初学者入门掌握)(4)第一款提供齐全BSP(基于Linux-2.6.29(当前为Linux-2.6.32.

34、2)和WindowsCE 6.0)的开发板,并全面配有图形界面实用应用程序(同类产品的部分硬件只是各摆设,并且还在盗用友善之臂早期的命令行测试代码)(5)第一款支持.NET 3.5 和腾讯QQ 的2440 开发板(2009 年10 月,WindowsCE 6.0 补丁Release 3 发布)(6)第一款可以让用户无需编程,即可自由简单定制WindowsCE 开机画面的开发板,并且可在10 秒内极速启动系统(同类产品的WindowsCE 系统启动时间一般在30 秒甚至70 秒)(7)第一款完美支持USB 烧写更新Linux(support yaffs2)和WindowsCE 5.0/6.0的开

35、发板,并且支持整片Nand Flash备份到PC,真正适合批量生产(同类产品尚无备份功能)(8)第一款实现WinCE/Linux图形界面均可使用CMOS 摄像头预览并拍照的开发板(同类产品尚无此功能)(9)第一款公开所有BSP源代码(含Linux 和WindowsCE)的开发板(齐全的BSP 让初学者可以了解更多的底层,让真正做开发的人只需关注上层应用)(10)第一款内核(含WinCE 和Linux)同时支持大页和小页Nand Flash 的开发板,这样新老用户均可享用最新的软件,并且使用方式相同(同类产品尚无此特性)(11)第一款在WindowsCE 和Linux 下通过简单直观的图形界面,

36、就可设置各种程序开机自动运行的开发板(同类产品尚无此功能)(12)Mini2440 目前是国内零售销量最多的2440 开发板,靠口碑相传及朋友间互相介绍,Mini2440已经被众多用户称赞和认同如图2-7所示;图2-7 ARM9开发板第三章 软件部分设计C+是一种面向对象的语言,同时又兼容C面向过程的优点。软件部分共包含了7个类,每个类为一个源文件,再加上main函数,总共8个源文件。通过类与类之间的调用来实现扫雷游戏的功能。软件部分的设计包括视图及场景,STL数据,STL图片,程序功能块四个模块,在本章将详细对四个模块进行设计。3.1 视图和场景的设计3.1.1 视图的设计视图是一个游戏的主

37、窗口,由于扫雷游戏有界面,菜单等选项,所以新建一个带QT控件的工程。选择继承基类QMainWindow,我们给这个类取名叫MainWindow,就会生成一个MainWindow.cpp的源文件和MainWindow.h的头文件。QMainWindow为QT软件里面的一个C+类,是Qt的GUI程序里面常的顶层窗口,类MainWindow继承了QMainWindow类,QMainWindow类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口,会自动建立一个ui的界面文件,即扫雷游戏的主窗口。工程建立好之后打开工程的ui文件,如下图3-1所示。 图3-1 ui界面如图中“在这里输

38、入”可以输入“菜单”、“帮助”、“退出”等控件。同时也会自动生成一个main.c的源文件,源文件中的程序如下:QApplication a(argc, argv);MainWindow w; w.show(); return a.exec();w为MainWindow类定义的一个对象,show()为MainWindow类中的一个函数,为展示主窗口的意思,当运行程序的时候w.show()为向用户展示出游戏的界面。当关闭游戏时,return a.exec()会自动返回一个0,同时程序运行结束。如图3-2所示 图3-2 运行的视图此图即为游戏的视图,称为View。3.1.2 场景的设计视图设计好了之

39、后接下来就是设计场景,即Scene。场景是加在视图之上的界面,即扫雷的区域。一个视图中可以加多个场景,每个场景是相互独立,互不干扰的。所有东西都是建立在场景之上的,程序如下所示.头文件中定义如下:Ui:MainWindow *ui; SweepMinesScene *scene; QGraphicsView *view;SweepMinesScene、QGraphicsView都为QT中的C+类。源文件中程序如下:ui-setupUi(this); view = new QGraphicsView; setCentralWidget(view); scene = new SweepMinesS

40、cene; view-setScene(scene);ui-setupUi(this)中this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。这句程序的意思为设置本ui界面作为ui界面。view = new QGraphicsView,scene = new SweepMinesScene为在内存中开辟一段

41、空间来存放视图和场景。setCentralWidget(view),view-setScene(scene)是设置好游戏的视图和场景的意思。3.1.3 视图中控件和动作的设计在游戏中我们能看到菜单栏有一些“菜单”、“帮助”、“退出”等控件,点击控件就可以退出,重新开始游戏,查看版本信息等功能。打开ui界面,在界面中的“在这里输入”中输入你想要设计的控件,本设计选择“菜单”,“帮助”两个控件,同时设计“选项”,“退出”,“开局”,“关于”等几个动作,“菜单”和“帮助”为主控件,“开局”,“选项”,“退出”为“菜单”主控件中的动作,点击“菜单”我们就能看到下面三个动作,这三个动作为功能动作,“开局

42、”动作为开始游戏的意思,“选项”动作为我们设置游戏的行和列,“退出”动作为退出游戏。“关于”为“帮助”下的动作,打开“关于”可以看到此游戏的版本号和信息。在ui界面的下方我们可以看到控件和动作的信息,我们应该把动作与游戏结合起来,在ui界面的下方列出了动作,双击动作,会看到如图3-3所示的界面。 3-3 控件设计的界面 图中文本为动作的名称。对象名称为程序中的名称,因为QT的程序对中文的支持低,同时不支持中文路径,所以得用英文名称。工具提示为我们在游戏时看到的名字。图标可以为每个动作选择一张图片作为图标,同时我们可以拖动图标放到菜单栏下面的快捷键栏,因为“开局”这动作在游戏中用得比较频繁,所以

43、我们为开局设计一个快捷图标。下面快捷键可以为每个动作设计一个快捷键。如图3-4所示。 图3-4 控件的展示菜单栏下面为快捷键栏,我们把开局的快捷图标拖到快捷键栏,点击图标就可以开局。控件设计好之后接下来就是怎么把控件和程序结合起来。如图3-5所示,3-5 ui界面中的控件信息图3-5为ui界面下面的动作信息,我们右键点击动作然后选择“转到槽”,就会弹出一个如图3-6所示的对话框。图3-6 选择信号的对话框我们选择triggered信号。这样就为此动作自动设置了信号槽。在程序的头文件的类中会自动生成private slots的成员,程序如下所示:private slots: void on_actionOption_triggered(); void on

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号