基于Qt的游戏开发实训报告.docx
- 文档编号:30688014
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:44
- 大小:274.92KB
基于Qt的游戏开发实训报告.docx
《基于Qt的游戏开发实训报告.docx》由会员分享,可在线阅读,更多相关《基于Qt的游戏开发实训报告.docx(44页珍藏版)》请在冰豆网上搜索。
基于Qt的游戏开发实训报告
扬州市职业大学
课程设计说明书
设计题目:
基于QT的嵌入式智能游戏开发
系别:
信息工程学院
专业:
计算机应用
******
学号:
*********
*******
完成时间:
2014年6月
摘要
嵌入式软件软件开发是嵌入式产品开发的关键技术之一,特别是基于Linux操作系统的嵌入式软件开发,已经成为嵌入式开发的主要领域。
Qt作为一种跨平台的图形界面开发平台,可以直接建立在简单的帧缓冲驱动上,并且有良好的可配置、可裁剪特性,因此也经常用在嵌入式系统上。
Qt支持一般图形界面系统的由事件驱动的编程模型,并且支持特有的信号与槽的编程模型,应用非常灵活。
越来越多的嵌入式终端需要一个图形化的人机借口界面(GUI),良好的人机交互界面是嵌入式系统设计的一个关键技术,尤其是嵌入式系统在消费电子领域的发展,消费者对嵌入式系统的游戏娱乐功能也越来越关注。
本文的目标是设计和实现嵌入式Linux下基于Qt的猜数字游戏的开发,程序所实现的功能是首先由计算机随机产生4个范围在0至9内的数字但是不显示给玩家,由玩家进行试猜。
当玩家输入4个数字之后,计算机进行统计,给出这4个数字与答案中4个数字相同的个数及位置也相同的个数。
玩家根据这个结果进行下一次的试猜,直到所输入的数字及数字的位置与答案完全相同为成功,或者达到规定的次数为失败。
猜数字游戏的基本功能由几个与数组相关的算法来实现,通过Qt中的QLineEdit类实现文本输入数字,使用QValidator类校验输入是否为整数并且可以限定整数的范围。
用QtGlobal库函数中的qsrand生成一个随机数来实现方块的随机出现。
用QMessageBox类实现显示对话框。
关键词:
嵌入式软件软件开发;Qt4图形用户界面;猜数字游戏
第1章绪论
1.1课题研究背景和意义
嵌入式系统(EmbeddedSystem)可以简单定义为“以转门应用的实现为中心。
以计算机技术和网络技术为基础,软件可按需求增添和裁剪,硬件可按需求配置,系统可靠性、成本、体积、功耗按要求严格的专用计算机系统。
”
“嵌入式系统”一次最早是指用于工业和交通设备内部的控制装置,例如数控机床中的工业控制器(工控机)、飞行机的自主导航装置,是一种完成专门功能的特殊计算机,其核心功能是控制,同时也具有一定的计算功能。
随着上世纪90年代末以来嵌入式操作系统和嵌入式应用开发环境及开发工具的飞速发展,特别是与网络通信技术、信号处理技术、多媒体技术等不同技术领域的相互融合,嵌入式技术已经成为一种集自动控制、网络通信、信号处理、分布式计算、人机互动、智能感知等功能为一体的综合性技术,其应用范围越来越广泛,从传统的工业和设备控制逐步拓展到家用电器、通信设备、汽车电子、医疗卫生、个人娱乐、智能家居、楼宇控制、办公自动化、商业设施、银行终端等与人们日常工作、生活密切相关的很多领域。
随着嵌入式产品的发展,往往要求嵌入式操作系统有网络和图形的功能。
利用源代码开放的Linux搭建的嵌入式操作系统,由于强大的网络功能和低成本,近来得到了越来越多的应用。
其能够提供全功能的桌面计算,定制非常方便并且支持大多数嵌入式系统上使用的芯片,包括StrongARM,MIPS和PowerPC等。
在嵌入式Linux操作系统上使用一个功能完备的轻量级、高性能、高可靠、可配置的GUI系统成为可行的解决方案[1]。
虽然市场上现在已经有了众多的优秀的GUI应用软件,但随着近年来计算机技术的迅速发展,当新硬件、新技术出现时,计算机的体系结构、指令系统和操作系统都可能发生相应的改变,这势必会导致一部分应用软件在新环境下无法正常运行。
如果舍弃原有软件而重新开发,将会耗费大量的人力和资金,而且浪费了许多成熟的软件成果。
而Qt在源代码级上实现了跨平台特性,极大的支持了跨平台通用软件的开发。
Qt可以用同一个源程序在不同平台上编译链接,生成目标代码,并取得相同的运行效果,称为“一次编写,随处编译”,利用这种方法充分实现了程序的跨平台运行。
这种基于源代码的跨平台特性不仅解决了性能的问题,而且可以发挥各个平台的优势,充分利用每个平台自身的特点;并且即可以在新环境下实现原有软件的功能和特点,减少开发费用,还可以改进原有软件的不足,增加新的需求,从而提高软件的质量,延长软件生命期。
因此,利用Linux下基于Qt的嵌入式终端应用程序开发是一个非常有意义的课题,具有重要的研究和商业价值。
1.2嵌入式软件发展状况及未来
进入20世纪90年代,嵌入式技术全面展开,目前已成为通信和消费类产品的共同发展方向。
在通信领域,数字技术正在全面取代模拟技术。
在广播电视领域,美国已开始由模拟电视向数字电视转变,欧洲的DVB(数字电视广播)技术已在全球大多数国家推广。
数字音频广播(DAB)也已进入商品化试播阶段。
而软件、集成电路和新型元器件在产业发展中的作用日益重要。
所有上述产品中,都离不开嵌入式系统技术。
象前途无可计量的维纳斯计划生产机顶盒,核心技术就是采用32位以上芯片级的嵌入式技术。
在个人领域中,嵌入式产品将主要是个人商用,作为个人移动的数据处理和通讯软件。
由于嵌入式设备具有自然的人机交互界面,GUI屏幕为中心的多媒体界面给人很大的亲和力。
手写文字输入、语音拨号上网、收发电子邮件以及彩色图形、图像已取得初步成效。
硬件方面,不仅有各大公司的微处理器芯片,还有用于学习和研发的各种配套开发包。
目前低层系统和硬件平台经过若干年的研究,已经相对比较成熟,实现各种功能的芯片应有尽有。
而且巨大的市场需求给我们提供了学习研发的资金和技术力量。
从软件方面讲,也有相当部分的成熟软件系统。
国外商品化的嵌入式实时操作系统,已进入我国市场的有WindRiver、Microsoft、QNX和Nuclear等产品。
我国自主开发的嵌入式系统软件产品如科银(CoreTek)公司的嵌入式软件开发平台DeltaSystem,中科院推出的Hopen嵌入式操作系统(虽然还不够完善)。
同时由于是研究热点,所以我们可以在网上找到各种各样的免费资源,从各大厂商的开发文档,到各种驱动,程序源代码,甚至很多厂商还提供微处理器的样片。
这对于我们从事这方面的研发,无疑是个资源宝库。
对于软件设计来说,不管是上手还是进一步开发,都相对来说比较容易。
这就使得很多生手能够比较快的进入研究状态,利于发挥大家的积极创造性。
1.2.1标志性的嵌入式产品
信息时代,数字时代使得嵌入式产品获得了巨大的发展契机,为嵌入式市场展现了美好的前景,同时也对嵌入式生产厂商提出了新的挑战,从中我们可以看出未来嵌入式系统的几大发展趋势:
嵌入式开发是一项系统工程,因此要求嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,同时还需要提供强大的硬件开发工具和软件包支持。
目前很多厂商已经充分考虑到这一点,在主推系统的同时,将开发环境也作为重点推广。
比如三星在推广Arm7,Arm9芯片的同时还提供开发板和版及支持包(BSP),而WindowCE在主推系统时也提供EmbeddedVC++作为开发工具,还有Vxworks的Tonado开发环境,DeltaOS的Limda编译环境等等都是这一趋势的典型体现。
当然,这也是市场竞争的结果。
网络化、信息化的要求随着因特网技术的成熟、带宽的提高日益提高,使得以往单一功能的设备如电话、手机、冰箱、微波炉等功能不再单一,结构更加复杂。
这就要求芯片设计厂商在芯片上集成更多的功能,为了满足应用功能的升级,设计师们一方面采用更强大的嵌入式处理器如32位、64位RISC芯片或信号处理器DSP增强处理能力,同时增加功能接口,如USB,扩展总线类型,如CANBUS,加强对多媒体、图形等的处理,逐步实施片上系统(SOC)的概念。
软件方面采用实时多任务编程技术和交叉开发工具技术来控制功能复杂性,简化应用程序设计、保障软件质量和缩短开发周期。
1.2.2嵌入式软件技术面临挑战
未来的嵌入式软件为了适应网络发展的要求,必然要求硬件上提供各种网络通信接口。
传统的单片机对于网络支持不足,而新一代的嵌入式处理器已经开始内嵌网络接口,除了支持TCP/IP协议,还有的支持IEEE1394、USB、CAN、Bluetooth或IrDA通信接口中的一种或者几种,同时也需要提供相应的通信组网协议软件和物理层驱动软件。
软件方面系统系统内核支持网络模块,甚至可以在设备上嵌入Web浏览器,真正实现随时随地用各种设备上网。
未来的嵌入式的产品是软硬件紧密结合的设备,为了减低功耗和成本,需要设计者尽量精简系统内核,只保留和系统功能紧密相关的软硬件,利用最低的资源实现最适当的功能,这就要求设计者选用最佳的编程模型和不断改进算法,优化编译器性能。
因此,既要软件人员有丰富的硬件知识,又需要发展先进嵌入式软件技术,如Java、Web和WAP等。
今天嵌入式系统带来的工业年产值已超过了1万亿美元,1997年来自美国嵌入式系统大会(EmbeddedSystemConference)的报告指出,未来5年仅基于嵌入式计算机系统的全数字电视产品,就将在美国产生一个每年1500亿美元的新市场。
美国汽车大王福特公司的高级经理也曾宣称,“福特出售的‘计算能力’已超过了IBM”,由此可以想见嵌入式计算机工业的规模和广度。
1998年11月在美国加州举行的嵌入式系统大会上,基于RTOS的EmbeddedInternet成为一个技术新热点。
在国内,“维纳斯计划”和“女锅计划”一度闹得沸沸扬扬,机顶盒、信息加电这两年更成了IT热点,而实际上这些都是嵌入式系统在特定环境下的一个特定应用。
1.2.3影响未来软件新技术
目前一些先进的PDA在显示屏幕上已实现汉字写入、短消息语音发布,日用范围也将日益广阔。
对于企业专用解决方案,如物流管理、条码扫描、移动信息采集等,这种小型手持嵌入式系统将发挥巨大的作用。
自动控制领域,不仅可以用于ATM机,自动售货机,工业控制等专用设备,和移动通讯设备结合、GPS、娱乐相结合,嵌入式系统同样可以发挥巨大的作用。
近期长虹推出的ADSL产品,结合网络,控制,信息,这种智能化,网络化将是家电发展的新趋势。
硬件方面,不仅有各大公司的微处理器芯片,还有用于学习和研发的各种配套开发包。
目前低层系统和硬件平台经过若干年的研究,已经相对比较成熟,实现各种功能的芯片应有尽有。
而且巨大的市场需求给我们提供了学习研发的资金和技术力量。
从软件方面讲,也有相当部分的成熟软件系统。
国外商品化的嵌入式实时操作系统,已进入我国市场的有WindRiver、Microsoft、QNX和Nuclear等产品。
我国自主开发的嵌入式系统软件产品如科银(CoreTek)公司的嵌入式软件开发平台DeltaSystem,中科院推出的Hopen嵌入式操作系统(虽然还不够完善)。
同时由于是研究热点,所以我们可以在网上找到各种各样的免费资源,从各大厂商的开发文档,到各种驱动,程序源代码,甚至很多厂商还提供微处理器的样片。
1.3课题研究内容
本课题通过对嵌入式Linux和Qt的分析,在嵌入式Qt的基础上,开发了面向嵌入式猜数字游戏的应用软件。
本课题设计的猜数字的游戏是由6个类组成,主界面对话框类,产生随机数类,输入数字类,显示信息类,开始及中途放弃类,结果提示类。
主界面对话框类:
主要负责的是主界面及菜单的显示,同时负责调用其他的接口函数。
产生随机数类:
主要负责的是计算机事先随机数的实现。
输入数字类:
主要负责输入0~9的数字以及光标自定移到下一个编辑框中。
显示信息类:
主要负责的是输入数字后显示正确结果的功能。
开始及中途放弃类:
主要负责游戏的开始和中途放弃。
结果提示类:
主要负责当用户成功或者失败后有相应的提示。
猜数字的游戏规则很简单,首先由计算机随机产生4个范围在0至9内的数字但是不现实给玩家,由玩家进行试猜。
当玩家输入4个数字后,计算机进行统计,给出这4个数字与答案中4个数字相同的个数及位置也相同的个数。
玩家根据这个结果进行下一次的试猜,知道所输入的4个数字及数字的位置与答案相同为成功,或者达到规定的次数为失败。
Qt在源代码级上实现了跨平台特性,极大的支持了跨平台通用软件的开发。
Qt可以用同一个源程序在不同平台上编译链接,生成目标代码,并取得相同的运行效果,称为“一次编写,随处编译”,利用这种方法充分实现了程序的跨平台运行。
这种基于源代码的跨平台特性不仅解决了性能的问题,而且可以发挥各个平台的优势,充分利用每个平台自身的特点;并且即可以在新环境下实现原有软件的功能和特点,减少开发费用,还可以改进原有软件的不足,增加新的需求,从而提高软件的质量,延长软件生命期。
第2章Linux和Qt开发环境的简介
2.1Linux操作系统的简介
简单地说,Linux是指一套免费使用和自由传播的类UNIX操作系统。
人们通常所说的Linux是LinuxTorvalds所写的Linux操作系统内核。
当时的Linux还是芬兰赫尔基大学的一名学生,他主修的课程中还有一门课程是操作系统,而且这门研究程序的设计和执行。
最后这门课程提供了一种称为Minix的众多使用者一样,Linux也希望能给他添加一些功能。
在之后的几个月里,Linux根据实际的需要编写了磁盘驱动程序以便下载访问新闻组的文件,又编写了个文件系统以便能够阅读Minix文件系统中的文件。
这样,“当你有了任务切换,有了文件系统和设备驱动程序后,这就是UNIX,或者至少是其内核”。
于是,0.0.1版本的Linux就诞生了。
Linux从一开始就决定自由传播Linux,他把源代码发布在网上,于是,众多的爱好者和程序员也都通过互联网加入到Linux的内核开发工作中。
这个思想与FSF(FreeSoftwareFoundation)资助发起的GNU(GUN’sNotUNIX)的自由软件精神不谋而合。
GNU是为了推广自由软件的精神以实现一个自由的操作系统,然后从应用程序开始,实现其内核。
而当时Linux的优良性能备受GNU的赏识,于是GNU就决定采用Linux及其开发者的内核。
在他们的共同努力下,Linux终于完整的诞生了。
其中的程序开发共同遵守GeneralPublicLicense(GPL)协议,这是最开放也是最严格的许可证方式,这个协议确定了源码必须可以无尝地获取并且修改。
因此,从严格意义上说,Linux应该叫作GNU/Linux,其中许多重要的工具如gcc、gdb、make、emacs等都是GNU贡献的。
这个“婴儿版”的操作系统以平均两星期更新一次的速度迅速成长,如今的Linux已经有超过250种发型版本,且可以支持所有体系结构的处理器,如X86、PowerPC、ARM、Xscale等,也可以支持所有体系结构的处理器。
到目前为止,它的内核版本也已经从原来的0.0.1发展到现在的2.6.xx。
2.2Linux操作系统的主要特性
Linux操作系统在短时间内得到迅猛的发展,这与该操作系统良好的特性是分不开的。
Linux包含了UNIX操作系统的全部功能和特性。
简单地说,Linux具有UNIX的所有特性并且具有自己独特的魅力,主要表现在以下几个方面。
(1)开放性
开放性是指遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。
凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互联。
(2)多用户
多用户是指操作系统可以被不同的用户各自拥有并使用,即使每个对自己的资源(如文件、设备)有特定权限,也互不影响,Linux和UNIX都具有多用户特性。
(3)多任务
多任务是现代计算机最主要的一个特点,它是指计算机同时执行多个程序,而且各个程序的运行相互独立。
Linux操作系统调试每一个进程平等地访问CPU。
由于CPU的处理速度非常快,其结果是启动的应用程序看起来好像在并行运行。
事实上,从CPU执行的一个应用程序中的一组指令到Linux调试CPU,与再次运行这个程序之间只有很短的时间延迟,用户是感觉不出来的。
(4)友好的用户界面
Linux向用户提供两种界面:
用户界面和系统调用界面。
Linux的传统用户界面基于文本的命令行界面,即Shell。
它既可以联机使用,又可以存储在文件上脱机使用。
Shell有很强的程序设计能力,用户可方便地使用它编写程序,从而为用户扩充系统功能提供了更高级的手段。
Linux还提供了图形用户界面,它利用鼠标、菜单和窗口等设施,给用户呈现一个直观、易操作、交互性强的友好图形化界面。
(5)设备独立性
设备独立性是指操作系统把所有外部设备统一当作文件来看,只要安装它们的驱动程序,任何用户都可以像使用文件那样操作并使用这些设备,而不必知道它们的具体存在形式。
设备独立性的关键在于内核的适应能力,其他的操作系统只允许一定数量或一定种类的外部设备连接,因为每一个都是通过与其内核的专用连接独立地进行访问的。
Linux是具有设备独立的操作系统,它的内核具有高度的适应能力,随着更多程序员加入Linux编程,会有更多硬件设备加入到各种Linux内核和发行版本中。
(6)丰富的网络功能
完善的内置网络是Linux的一大特点,Linux在通信和网络功能方面优于其他操作系统。
其他操作系统。
其他操作系统不包含如此紧密的内核结合在一起的连接网络的能力,也没有内置这些联网特性的灵活性。
而Linux为用户提供了完善的、强大的网络功能。
(7)可靠的安全性
Linux操作系统采取了去多安全措施,包括对读、写操作进行权限控制,带保护的子系统,审计跟踪和内核授权,这位用户提供了必要的安全保障。
(8)良好的可移植性
可移植性是指将操作系统从一个平台转移到另一个平台,使它仍然能按其自身的方式运行的能力。
Linux是一款具有良好可移植性的操作系统,能够在微型计算机到大型计算机的任何环境中和平台上运行。
该特性为Linux操作系统的不同计算机平台与其他任何机器进行准确而有效的通信提供了保障,而不需要另外增加特殊的通信接口。
(9)XWindow系统
XWindow系统是用于UNIX机器的一个图形系统,该系统拥有强大的界面系统,并支持许多应用程序,是业界标准界面。
(10)内存保护模式
Linux使用处理器的内存保护模式来避免进程访问分配给系统内核或者其他进程的内存。
对于系统安全来说,这是一个主要的贡献,一个不正确的程序因此不能够再使用系统而崩溃(在理论上)。
(11)共享程序库
共享程序库是一个程序工作所需要的例程的集合,有许多同时被多于一个使用的标准库,因此使用户觉得需要将这些库的程序载入内存一次,而不是一个进程一次,通过共享程序库使这些成为可能,因为这些程序库只有当进程运行的时候才被载入,所以它们被称为动态链接库。
LINUX支持的文件系统很多,例如:
EXT2、NFS、VFS、ISO9660、MSDOS等等。
网络功能:
较全面的实现了TCP/IP、SLIP、PPP、PLIP协议,功能强大。
2.3Qt简介
1.Qt发展史
Qt是一个跨平台的C++图形用户界面库,由挪威TrollTech公司出品,目前包括Qt,基于Framebuffer的QtEmbedded,快速开发工具QtDesigner,国际化工具QtLinguist等部分Qt支持所有Unix系统,当然也包括Linux,还支持WinNT/Win2k,Win95/98平台。
TrollTech公司在2008年被Nokia收购后,Qtopia被重新命名为QtExtended。
Nokia在推出了QtExtended的后续开发,转而全新投入Qt的产品开发,并逐步将一部分QtExtended的功能移植到Qt开发框架中。
2.Qt的特点
基本上,Qt同XWindow上的Motif,Openwin,GTK等图形界面库和Windows平台上的MFC,OWL,VCL,ATL是同类型的东西,但是Qt具有下列优点:
(1)优良的跨平台特性
Qt支持下列操作系统:
MicrosoftWindows95/98,MicrosoftWindowsNT,Linux,Solaris,SunOS,HP-UX,DigitalUNIX(OSF/1,Tru64),Irix,FreeBSD,BSD/OS,SCO,AIX,OS390,QNX等等。
(2)面向对象
Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。
Qt提供了一种称为signals/slots的安全类型来替代callback,这使得各个元件之间的协同工作变得十分简单。
(3)丰富的API
Qt包括多达250个以上的C++类,还替供基于模板的collections,serialization,file,I/Odevice,directorymanagement,date/time类。
甚至还包括正则表达式的处理功能。
支持2D/3D图形渲染,支持OpenGL,大量的开发文档,XML支持,但是真正使得Qt在自由软件界的众多Widgets(如Lesstif,Gtk,EZWGL,Xforms,fltk等等)中脱颖而出的还是基于Qt的重量级软件KDE。
有趣的是,KDE也是使得Trolltech公司承受巨大压力的一个原因。
一般说来,目前GNOME吸引的公司比较多,但是KDE/Qt的开发的效率和质量比GNOME高,而且在Office/嵌入式环境中先走一步,在一定时间内还将处于优势地位。
那么对于用户来说,如何在Qt/GTK中作出选择呢?
一般来说,如果用户使用C++,对库的稳定性,健壮性要求比较高,并且希望跨平台开发的话,那么使用Qt是较好的选择,但是值得注意的是,虽然Qt的FreeEdition采用了GPL宣言,但是如果你开发Windows上的Qt软件或者是Unix上的商业软件,还是需要向Trolltech公司支付版权费用的。
2.4Qt开发环境
开发Qt应用程序需要Qt编辑器、编译器、和运行环境。
在Qt程序开发过程中,除了通过编码的方式实现应用系统功能外,还可以通过Qt的GUI界面设计器(QtCreator)进行可视化界面设计,该工具提供了Qt基本的可绘制窗口部件。
在QtCreator设计器中,通过鼠标直接拖放窗口部件,能够高效。
快速地实现GUI界面的设计,界面直观形象,如下图
图2.1Qt设计器主界面
在Qt设计器中,拖动工具箱中的一个元素到窗口中即可加入一个想要的窗口部件,部件的属性可以通过属性编辑器修改。
这种方法可以非常快速地设计窗体界面,完成后的窗体界面,完成后的窗体能够正确地调整窗口大小来适应最终用户的喜好。
开发者既可以创建对话框式的程序,也可以创建带有菜单、工具栏、帮助和其他特征的主窗口式程序。
Qt本省提供了一些窗体模版和部件,开发者也可以根据需要创建自定义模版和部件,以提高效率。
在Qt集成开发环境中,源程序既可以被保存成XML格式的.ui文件并且被uic(用户界面编译器)转换成为C++头文件和源文件。
由于qmake编译工具在它生成的Makefiles中自动地包含了uic的规则,因此开发者不需要自己加入uic。
在Qt集成开发环境中,源程序既可以编译成PCLinux下可执行程序,在开发环境中进行运行和调试,也可以交叉编译成ARMLinux可执行文件,从而最终下载到目标机中。
Qt程序编辑工具完整地位于集成开发环境的下拉菜单中,同时,为便于设计者方便使用,系统也已悬浮设计器方式呈现给开发者。
Qt程序编辑
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Qt 游戏 开发 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)