基于Symbian平台的俄罗斯方块游戏的实现_第1页
基于Symbian平台的俄罗斯方块游戏的实现_第2页
基于Symbian平台的俄罗斯方块游戏的实现_第3页
基于Symbian平台的俄罗斯方块游戏的实现_第4页
基于Symbian平台的俄罗斯方块游戏的实现_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科生毕业论文(设计)题目基于Symbian平台的俄罗斯方块游戏的实现学生姓名XXX指导教师XXX学院信息科学与工程学院专业班级计算机科学与技术XX班摘要Symbian操作系统是当前智能手机中最有号召力的一个操作系统。由于它是完全开放的系统,任何厂商都可以在Symbian系统上开发自己的软件,所以当它变得更加强大,应用更加广泛的时候,对智能手机软件的需求也就会增长。基于SymbianOS的智能手机是开放的,用户可以任意下载、安装、卸载由第三方软件开发者(或者用户自己)开发的应用软件,而不需要厂商的同意。S60是最受欢迎的低端智能手机的Symbian用户界面。而手机终端性能的提高,必将带动手机游戏的发展。因此本课题设计实现了Symbian系统下的俄罗斯方块游戏。此文中的俄罗斯方块游戏是在手机上运行的,手机程序的开发和PC程序的开发有很大的不同,但是在设计思想上却是大同小异,都遵循软件工程的一般原理。本课题在设计中从俄罗斯方块的功能需求入手,结合软件工程的思想,严格按照软件工程的开发步骤,完整的实现了俄罗斯方块游戏。由于受手机平台资源少的限制,本游戏在算法的设计上有其独到之处,对方块的操作都是通过移位运算来实现,节省了资源,提高了游戏的运行效率。游戏的最终运行结果令人满意,开发非常成功。关键字Symbian操作系统,智能手机,S60,俄罗斯方块游戏ABSTRACTSymbianOSisafull-featuredmobileoperatingsystemthatresidesinmostoftoday’ssmartphones.Becauseitiscompletelyopen,anyonecanmanufacturerintheSymbiansystemanddevelopitsownsoftware,sothedemandforsmartphonesoftwareisgrowingasthesedevicesbecomemorepowerfulandmorewidelyused.WhileSymbianOS-basedsmartphonesareshippedwithavarietyofusefulapplicationsbuiltin,anexcitingaspectofthesephonesisthattheyare“open”.Thismeansthatuserscandownload,installanduninstallapplicationswrittenbythird-partydevelopers(orbytheusersthemselves).Nospecialcarrierserviceordevicemanufacturer’sagreementisneededtodistributenewsmartphoneapplications.S60isapopularSymbianuserinterfaceforlowercostsmartphonesandresidesinthemajorityofSymbianOSphonesshipped.Theimprovementofphoneterminal’scapabilitywillarousethedevelopmentofphonegamenecessarily.SomytopiccarriedouttheRussiansquarepiecegamebasedonSymbianoperatingsystem.Thegamerunsonthemobilephone.SoftdevelopmentofthemobilephoneandPCisquitedifferent,butthedevelopmentthinkingisverysimilar.Theybothfollowedonsoftwareengineeringprinciples.ThedevelopmentprocessoftheRussianboxbeginwiththefunctionalneeds,combiningwithsoftwareengineeringideas,accordancewiththedevelopmentofsoftwareengineeringstepsstrictly,andcompletetheRussiansquarepiecegameintheend.Becauseofthemobilephone’sfewerresourcesconstraints,thealgorithmofthegame'sdesignisspecial.Theoperationtoboxisshiftingoperations,thisimprovetherunningefficiencyofthegameandsaveresources.Therunningresultofthegameissatisfied,andthedevelopmentofthegameisverysuccessful.KEYWORDSSymbianOS,smartphoneS60,Russiansquarepiecegame目录摘要 IABSTRACT II第一章绪言 11.1课题研究背景 11.2手机游戏特点 21.3移动游戏开发与传统游戏开发的区别 31.4课题研究意义 41.5运行环境要求 41.5.1硬件环境 41.5.2软件环境 51.6文本组织 5第二章开发环境 62.1SymbianOS简介 62.1.1Symbian的历史 62.1.2Symbian的特点 62.1.3Symbian应用程序框架 72.1.4S60的简介 82.1.5S60模拟器介绍 92.2Symbian编程基础知识 102.2.1SymbianC++和标准C++的区别 102.2.2数据类型与命名规则 112.2.3活动对象 132.2.4两阶段构造思想 142.2.5重要文件介绍 142.3平台搭建 15第三章需求说明 173.1目的 173.2需求分析 173.3可行性分析 183.4项目进度计划 19第四章概要设计 204.1用例图 204.2内部运行机制 22第五章系统详细设计 235.1初步研究方案 235.2算法方案 245.3状态变化规则 245.4系统类架构设计 255.5类的头文件介绍 26第六章游戏实现 276.1资源文件 276.2图形块(BLOCK) 276.2.1图形块的表示 276.2.2图形块的产生 286.2.3图形块的旋转 286.2.4获取一行的图形块数据 286.3面板引擎(GRID) 296.3.1复位 296.3.2碰撞及越界检测 306.3.3压块 316.4流程引擎(Engine) 316.4.1复位 326.4.2引擎构造 326.4.3用户输入响应 326.4.4游戏状态的切换 326.4.5核心—CTimer::RunL()定时器中断 336.4.6DoPause函数 346.5文档类(Document) 356.5.1复位 356.5.2可销行数的统计 356.5.3Block的旋转检测 356.6视图(AppView) 366.7其它类 366.8程序实现步骤 36第七章系统测试 387.1测试步骤 387.2测试结果 39第八章总结 40参考文献 41致谢 43第一章绪言1.1课题研究背景近年来,伴随着移动网络和移动终端性能的不断提高与完善,以及移动游戏技术本身的日益成熟,移动游戏的巨大商机已经展现在人们面前,游戏行业中最新的热点就是可移动性,手机游戏将传统的商业公司、设备生产厂、网络经营者拉在一起。现在传统游戏产业链的参与者已经开始从家用机游戏、PC网络游戏等传统的游戏领域逐渐向手机游戏领域扩张,而移动运营商和终端设备制造商也都在密切关注手机游戏产业的发展,并积极尝试与手机游戏开发商以及发行商进行更加紧密地合作,同时进行探索合理的商业模式。这一切都证明手机游戏市场已成为目前移动领域最具有活力的市场[1]。在中国,手机在生活中越来越重要,已成为一种必需品。中国的手机用户超过3亿多人,市场规模在世界上也是无人能敌的。而刺激这一市场成长正是各终端厂商丰富多彩的产品。而国内与手机产品的决定权掌握在通信运营商手中的日本不同,中国是终端厂商自行推出产品、吸引“喜新厌旧”的消费者。在这个全球最大的手机市场中,激烈的销售大战一直没有停止过。虽然手机行业很早就开始说市场已经饱和,但可进行高速数据通信的3G却有望带来新的发展。尤其是用户规模号称世界之最的中国更是被寄予了厚望。而在手机的日新发展中,从2G到2.5G,乃至3G,(所谓3G“3rdGeneration”,是指把无线通信和国际通信网络等紧密融合在一起的第三代移动通信技术。)各厂商都认为,中国市场将成为检验3G真正价值的试金石[2,3]。手机游戏(移动游戏)是指运行在手机终端上的电子游戏。据统计,根据有关部门统计2004年网络游戏用户达到2300万,市场规模为25.7亿元。在日本,手机游戏已成为运营商的重要收入来源,每百人手机用户中就有超过25人在玩手机游戏。而中国现在的手机游戏用户正在缓慢增长,才不到2000万人,而真正使用付费手机游戏的用户就更少了,与可频繁下载具有魅力的最新游戏的日本相比差距甚远。另外在收取的费用也不尽合理,对可以成为游戏重量级用户的年轻人的宣传力度也不够高。在相对中国3亿多人的手机用户,中国手机游戏的渗透率还很低。然而,目前中国已经成为世界上最大的手机大国,而在中国这个飞速发展的通信大国,其正吸引着各方投资者的热情。在这一市场中,相信在3G时代的到来之际,手机游戏产业无疑成为了一个巨大的奶酪。近年来,随着个人电脑普及速度的加快,中国游戏爱好者的数量也日渐增加,但用手机玩游戏在中国还远未形成风气。在这种形势下,国外一些知名的游戏厂商加快了向中国进军的步伐,如世嘉、CAPCOM、BANDAI等日本游戏厂商开始向中国移动、中国联通提供他们最知名的游戏内容。中国的游戏爱好者对日本游戏的质量给予很高的认可,对日本游戏的手机发送服务也充满了期待。但不管是国外还是国内的游戏厂商要想在中国市场大展鸿图,必须等到手机终端性能提高、移动通信运营商建立完善的发送体制之后才有可能。另外,根据相关行业的调查,2005年全球手机线上游戏将有近68亿美金商机,至2008每年将以10%稳定成长,全球移动游戏业创收将超过93亿美元,中国的手机游戏市场也会达到400亿元人民币的规模。毫无疑问,面对巨大的市场诱惑,互联网风潮过后,很多投资热情都倾泻在这个由互联网、手机所催生的SP市场。毫无疑问,无论是从未来的3G发展还是个人娱乐化趋势看,手机游戏市场都将是各个SP争抢的蛋糕,可见移动游戏市场将成为兵家必争之地。随着3G在国内的全面推广下,3G的发展不仅会使3G的相关行业受益,还将会给其它行业的企业带来多种商机[3,4]。当然,做为移动最大的数据增值业务——手机游戏,终将成为最显眼的一项。在手机游戏今后的发展过程中,不管是运营商和手机制造商以及游戏开发商等都要面对着市场的种种困难与考验。当然,在手机游戏市场的考验下将获得更多的机遇,而这些机遇将足够使得整个国内的手机游戏市场更加活跃起来。1.2手机游戏特点手机游戏的盈利主要是由于它们的涉及面很广。手机已经与现代生活方式紧紧地结合在一起。他们是最普遍携带的个人用品中仅次于钥匙和钱包的东西。传统的台式机游戏将目标锁定在低级趣味的人和青少年身上,而手机游戏则每个人都可以访问的到,随时,随地。尽管每个手机游戏都不贵,但是巨大的使用量(如:每人每星期一个新游戏)将使得这个市场商机无限并且有利可图。但是,对于开发者来说,将控制台游戏迁移到手机游戏工程很大因为他们所面向的对象、生活方式和分布式模型都有着极大的区别[5,6]。一个成功的手机游戏大多都具有以下特征:易于学习:既然手机游戏面向的是普通消费者而不是计算机高手,那么他们不可能深入的学习游戏技巧。消费者不会花几个小时去研究一个3美元的手动操作的游戏。所以游戏必须是一下载就可以玩的。保持游戏的简单是最基本的要求。可中断性:多任务处理是手机生活方式的基本特征。手机用户常常在任务(如等一个电子邮件或者等车)之间有一小段时间。而游戏、日历管理、通讯和工作数据访问使用的是同一个设备。所以一个好的手机游戏应该提供短时间的娱乐功能,并且允许用户在游戏和工作模式之间顺利切换。基于订阅:手机游戏的盈利成功取决于他们巨大的使用量。一开始开发和设计每个游戏都是昂贵的。如果一个手机游戏开发者要赚钱的话,重要的是:同一个游戏引擎,多个标题,基本的故事情节类似。基于订阅的游戏是不断产生收入的最好方法。丰富的社会交互:不管一个游戏设计得多好,只要玩家找到了它的根本模式或者玩完了所有的游戏路径很快就会厌烦这个游戏。对于一个基于订阅的游戏,重要的是与别的玩家合作以增强所玩游戏的智力和随机性。在今天纷繁复杂的多玩家游戏中具有丰富社会交互的游戏证明是成功的。利用手机技术的优点:巨额的手机技术研发费用都花在提高设备和网络的可用性和可靠性上面。因此,手机设备硬件和网络协议与桌面/控制台世界(如全球定位系统(GPS)扩展、条形码扫描仪、和短消息服务(SMS)/多媒体信息服务(MMS)通讯)有着非常大的差别。好的手机游戏应该利用那些更新的设备特征和网络基础设备的优点。无违法内容:既然所有年龄/性别的人群都玩手机游戏并且常常在公共/工作场合,你应该避免明显的暴力或者色情内容。1.3移动游戏开发与传统游戏开发的区别移动游戏开发与传统游戏开发区别在许多方面[7]:1.开发团队的大小传统的PC和控制台游戏一般需要12到30人的开发团队。因为大部分移动游戏规模比控制台游戏小,所以一般情况下只需要3到5人的团队开发,有的时候甚至设计者和编程者是同一个人。2.预算传统游戏的预算在一百万美元到五百万美元之间。大部分移动游戏的预算则通常少于一百万美元。实际上,移动电话有限的显示能力和对应用程序大小的限制使得不可能像传统游戏那样投入大量的财力物力。从某种意义上来说,这也算是一个优点。3.开发周期传统的游戏一般要开发两到三年。而大部分移动游戏几月之内就能开发完毕。换句话说,只要有一个小型开发团队和一个小的预算,你就可以开发并推广一个专业品质的移动游戏。因此,对于许多在传统游戏领域遇到挫折的开发者来说,移动游戏开发有很强的吸引力。4.网络设备移动游戏可能不同于我们之前看到的任何游戏:它受载体因素的限制,但是支持网络并且可多人游戏。用于PC的调制解调器也只是8年前才大范围应用;控制台游戏只不过现在才能上网。移动电话的特性决定它是一种网络设备。即使它们的处理能力使人想起以前的老式计算机技术,但是它们的网络性能却更加出众。5.开放标准控制台游戏开发需要从控制台游戏厂商取得授权和支持,需要支付给他们“平台使用费”。在无线应用程序世界(如同在PC游戏开发中一样),你可以免费的开发任何款式的游戏,而不要支付Nokia、Sun或其他平台提供商一分钱。此外,这些移动游戏开发平台标准可以向开发者发布、开放并可免费取得。6.部署传统的游戏主要是在软件市场上购买。而移动游戏主要是由用户从移动门户网站下载并安装。在有些情况下,它们是通过无线网络下载的。有些手机允许你下载一个应用程序到计算机中,然后通过数据线传送到手机中。因此,移动游戏的销售渠道是非常不同的。用户一般通过移动运营商的游戏菜单、手机厂商预装在手机中的游戏菜单或者无线应用程序门户网站上找到移动游戏。1.4课题研究意义 这个项目是基于Symbian平台的俄罗斯方块游戏的实现,之所以选择俄罗斯方块游戏,是因为俄罗斯方块游戏是历年来最经典的一个小游戏,由于它本身简单易学、富有趣味性,已成为广大小游戏爱好者的最爱,不管在PC机中,还是手机中,都可见到它的身影。本课题在S60平台上实现了俄罗斯方块游戏,将它从常见的windows操作系统移植到了Symbian操作系统中,顺应了时代的要求,未来一定会被广泛采用。俄罗斯方块游戏曾经红极一时,创造了巨大的商业价值,是一款非常成功的游戏,非常具有代表性,通过这个游戏的开发,熟悉在Symbian平台开发手机游戏的一般流程。1.5运行环境要求1.5.1硬件环境 系统运行的设备要求比较高,具体如下:1.处理器Pentium4CPU3.00GHz2.512M内存、10G硬盘、10/100M网卡以上配置1.5.2软件环境 1. MicroSoftWindowsWindowsXPProfessional系统2. MicrosoftVisualStudio.NET20033. jdk-1_5_0_064. S60-SDK-0548-3.0,即SymbianSDK9.15. ActivePerl-13的Windows版6. carbide_vs_2011.6文本组织本文组织如下:第一章介绍了研究背景及意义,要实现的任务;第二章对主要使用到的技术支持进行了说明并对平台的搭建进行了介绍;第三章阐述了需求分析和对具体需求的规定,以及项目进度计划;第四章和第五章对本课题概要设计以及详细设计展开,其中讨论包括核心功能设计和界面的设计;第六章是本游戏的具体实现。第七章是系统测试,第八章是总结和展望。第二章开发环境2.1SymbianOS简介2.1.1Symbian的历史Symbian是一个手机巨头联盟的代名词,该公司成立于1987年,是摩托罗拉、西门子、诺基亚等几家大型移动通讯设备商共同出资组建的一个合资公司,专门研发手机操作系统[8,9]。而Symbian操作系统的前身是EPOC,而EPOC是ElectronicPieceofCheese取第一个字母而来的,其原意为"使用电子产品时可以像吃乳酪一样简单",这就是它在设计时所坚持的理念。Symbian操作系统在智能移动终端上拥有强大的应用程序以及通信能力,这都要归功于它有一个非常健全的核心--强大的对象导向系统、企业用标准通信传输协议以及完美的sunjava语言。Symbian认为无线通讯装置除了要提供声音沟通的功能外,同时也应具有其它种沟通方式,比如触笔、键盘等。在硬件设计上,它可以提供许多不同风格的外型,像使用真实或虚拟的键盘,在软件功能上可以容纳许多功能,包括和他人互相分享信息、浏览网页、传输、接收电子信件、传真以及个人生活行程管理等。此外,Symbian操作系统在扩展性方面为制造商预留了多种接口,而且EPOC操作系统还可以细分成三种类型:Pearl/Quartz/Crystal,分别对应普通手机、智能手机、HandHeldPC场合的应用。Symbian分两个主要的智能平台,一个是适于单手操作的S60,代表产品是诺基亚7650、3650;另一个是双手操作的S80,代表产品是诺基亚的9210,以及现在的9500,主要针对商务用户。此外Symbian上还有另一个平台UIQ,以笔操作为主,代表产品是索尼爱立信的P802、P910、P910c。2.1.2Symbian的特点Symbian操作系统是一种32位占先式多任务操作系统,具有功耗低,内存占用少等特点,非常适合手机等移动设备使用。而与微软产品不同的是,Symbian将移动设备的通用技术,也就是操作系统的内核,与图形用户界面技术分开,这就使得它能很好的适应不同输入方式的平台,这也是我们能见到不同界面的Symbian系统的主要原因[10]。由于支持Symbian操作系统的的移动通讯终端设备厂商众多,因此商场上有相对较多的支持该系统的不同品牌和型号的终端产品,从而使得这个操作系统能够被迅速的推向市场,进而被消费者所接受和认可,而消费者本身也拥有了更多的产品选择。同时,由于这个系统为第三方应用程序开发商提供了一个开放、标准的开发平台,因此,这些开发商一方面可以很容易的开发、设计相关的应用程序,另一方面也拥有了较多可以使用的终端产品。不过支持Symbian操作系统的移动通讯终端设备厂商都是各家自己独立开发设计用户接口程序的,因此往往互不兼容,在设计理念上差距往往会很大。另外,由于各移动通讯终端设备厂商并非专业的应用软件开发公司,因此在应用软件的开发上要面临很多的困难,尤其是在办公软件、媒体录播软件等方面,这样很可能会导致Symbian操作系统没有足够多的应用软件可以选用,不利于发挥Symbian操作系统的强大支持功能。2.1.3Symbian应用程序框架Series60的UI应用程序依赖于操作系统的很多组件。大多数常见的应用程序的需求,比如屏幕绘制,应用程序的数据,都不需要开发人员一一编写,这好像重新发明轮子。相反,应用程序的大多数需求都被操作系统的多种服务器所支持。例如,WindowServer提供了UI扩展的支持,FileServer提供了对持久性数据的支持[8]。应用程序框架包含一系列的核心类,它们是所有应用程序的基础。这些类形成了所有应用程序的结构,并且它们都封装了与应用程序和操作系统服务器之间的相互作用。这里使用的体系结构将会在Avkon视图转换体系结构中详细解释。应该注意的是该图是一个UML类图,它表示了4个类的层次。在这些类层次当中的第一层分成了两个基本的部件,叫做AppArc和CONE。AppArc代表ApplicationArchitecture。这些类提供了基本的应用程序结构,传递系统信息到应用程序和持久性数据使用的FileServer的机制。这是一个SymbianOS分类,在这些类当中的类以前缀Apa开头,比如CApaApplication。CONE是CONtrolEnviroment的缩写,在这些类中的组件提供了处理用户输入,创建用户接口的信息。这些类主要与WinowServer交互。WindowServer是一个Symbian操作系统Server,它控制控件的绘制与用户输入的处理。这些类都是Symbian操作系统的组件,他们的类名都是以Coe为前缀的,比如CCoeControl。第二层类是Ukion组件。这是一个通用的,独立于设备的,高级功能实现的,非抽象化的框架类,它提供的UI库对所有Symbian操作系统平台都是通用的。一些具体的UI控件,比如listboxes,scrollbars,可以在这层中被创建,这些有时候叫做Eikon控件。注意,在S60平台上应该使用Avkon控件来提供正确的行为。在类Uikon/Eikon中的组件的名字以Eik开头,比如CEikApplication。 第三层包含了Avkon类,这些提供了S60平台的中核心的UI功能,比如菜单的支持。这层纯粹是一个S60特有的实现,并且你的类都应该继承自Avkon类,而不是通用的Symbian操作系统类。Avkon类的名字都以Akn为前缀,比如CAknApplication。 第四层,是特定的应用程序层,表明了你应该如何从S60特有的Avkon类继承下来设计自定义的应用程序。 在第一层中的许多类都是抽象的,而且仅仅是定义了框架的API的接口。第二层添加了Symbian操作系统的实现,并且与其他Symbian操作系统UI平台共享。第三层添加了S60特定框架的实现,并且第四层添加了自定义应用程序的实现。2.1.4S60的简介Series60是诺基亚公司基于Symbian,做了改进和修改设计而成的单用户数字键盘手机可视化界面平台,功能强大,同时支持Symbian和Java应用。基于S60的应用可涵盖基本的通信、彩信以及丰富的办公应用等诸多范畴,诺基亚Series60平台是一个源代码产品,终端制造商可以将其集成到自己的智能终端硬件设计中。为了开发广阔的应用市场,诺基亚正在和Series60平台的授权使用者一起,推动创造一个开放的开发社区。这一开发社区为授权使用者提供完全的应用源代码,帮助授权使用者开发产品,并自由选择他们自己的Series60平台开发方向[9]。Series60已经授权给Nokia手机公司NMP,Siemens,Samsung,Panasonic和Sendo。由于每个Series60拥有厂商都具有所有的Series60平台的原代码,并可开发扩展以增强相应的手机或移动终端。目前Series60应用的一些特点:用户界面:多彩色显示,三个核心快速按键,多任务,个性化;驱动特点:个人信息管理系统,图像MMS彩信服务,XHTML,Java;增值特点:个性化扩展,游戏;显示:176*208,真彩色,QCIF176*144图像;键盘:五方向滚轮,两个软按键,Application应用键,Clear清除键,ABC键,Send/End键;文本行:大多数应用提供行6行显示,浏览器可显示7行,信息浏览可显示8行。S60平台支持多种用户界面屏幕解析度,包括:肖像画解析度,风景画解析度。目前市场上数量最多的基于Symbian操作系统的终端就是S60终端,S60终端在今后仍有着极佳的市场发展前景。基于S60的应用开发不受限制,涉及商务、生活和娱乐等各领域。成熟的应用可运行于不同品牌、不同型号的S60终端,这将有效降低S60应用的开发成本,加速运营商、开发商和终端生产商的市场运作进程,从而使包括最终用户在内的各方受益。S60的基础平台[10,11,12]是32位的多任务多线程操作系统源自Psion的EPOC操作系统。在以Nokia为首的手机大厂主导之下,S60在无线通信方面表现出较佳的性能,且由于对手机消费者了解较深,因此,在集成一些数据及个人信息管理的功能之后,对用户使用习惯的掌握程度较佳。于移动通信产业的生态已逐渐转变。随着NTTDoCoMoi-Mode的成功,移动通信厂商意识到他们在第一线面对消费者,最了解消费者对于移动应用服务的需求,因此转而成为规格的制定者,再交由手机制造厂商去生产。过去由手机厂商主导,不管任何规格直接推给通信厂商照单全收的情况渐渐消失,移动通信厂商的规格逐渐兴起,诺基亚肯定会调整战略,将S60系列推向一个新的高度。2.1.5S60模拟器介绍S60应用程序的开发、调试和最初的测试一般都在PC模拟器上进行,该模拟器提供了一种基于微软Windows的S60设备的实现。在大多数情形中基于模拟器的开发过程与在真实的设备上运行的应用程序的操作是非常相似的。模拟器的精确界面与提供的图形会有很大的不同,它依赖于你使用的目标平台、S60的版本和所选择的IDE。此外,还可能添加或删除一些按钮或其它的操作元素以模拟现实的设备的配置。模拟器和真实的设备之间有些差异无法避免。真实的S60设备可能带有硬件附件(例如照相头)和其它特性(例如后台振动)。此外,基于PC的模拟器不能精确地模拟精确计时、应用程序性能和内存管理的问题。对于基于PC的开发,编辑/编译/建立周期是基于微软Windows开发工具集的。但是,与依赖Win32或MFC类库进行链接和建立不同,开发者将依赖于S60SDK安装的头文件和PC格式的类库来进行链接和建立。作为结果的Windows格式的二进制可执行文件就可以在以PC的模拟器上运行了。在开发过程中,特定IDE的项目文件管理所有的链接和建立细节信息。它同时确保了建立操作的所有输出和其它需要的资源文件都被放到了适当的位置以供在模拟器环境下进行运行和调试。根据下图,S60显示屏逻辑上被分成三个区域:状态块、主块和控制块。图2.1S60模拟器状态块是屏幕顶部的刻度条(在模拟器上是蓝色的)加上它上面的区域。主块是屏幕中间的,位于状态条和屏幕底部之间的软按键(softkey)标签之间的部分。控制块是紧接着主块,包含了软按键标签。2.2Symbian编程基础知识由于手机应用程序开发和和PC应用程序开发有很大的不同,因此在进入深入的讨论之前,对Symbian变成基础知识做一下介绍。2.2.1SymbianC++和标准C++的区别[13,14,15,16] 象智能电话这样的小型手持设备,通常是资源非常紧张的设备。这种设备的尺寸和制造费用限制了可用的存储器,处理速度和电池寿命。尽管以上这些资源缺乏,但是这些设备还是需要能够稳定运行相当长的一段时间,甚至数个月。一旦出现资源溢出的错误,对于系统来说重要的事情就是返回到前一个稳定的状态,而不失去任何重要的数据。这使得完全地捕捉和处理每个运行错误对于系统和应用程序来说是非常重要的。由于资源溢出而出现的错误,和所有的运行期错误一样被称为异常。在标准的C++中,这些异常是使用try-catch-throw机制处理的,但是因为它造成了代码长度的负面影响,所以SymbianOS提供了它自己的称为trapharness的机制。Symbian开发他们自己的异常处理程序的另一个原因是开发SymbianOS的时候,try-catch-throw机制还不是C++标准的一部分。trap-harness的概念是使用一个TRAP宏把可能引发异常的函数封装起来。这个宏可用于捕获多个函数,并且这些函数可以嵌套。万一出现一个异常,导致异常的函数的执行就会通过User::Leave函数终止,相当于标准的C++异常处理中的throw。这被称为一个leave(离开),它将返回程序执行到结束的TRAP宏,在那里相应的恢复动作可以被执行。SymbianOS还提供一个工具,以便清除异常。一个cleanupstack被用于引用只被一个自动变量引用,并且如果出现一个leave的时候需要被释放的对象。TRAP宏将销毁cleanupstack中自动变量分配的内存。SymbianOS提供一个用于在单一线程之内非抢先式多任务处理技术的系统。这个包括活动对象和活动调度程序的系统的设计目标是降低运行时间成本和解决与优先计划线程冲突的同步问题。SymbianOS中的每个应用程序由一个活动调度程序和一个或多个活动对象组成。这个调度程序封装一个需要异步的服务和依照它们的优先权安排活动对象的等待循环。活动对象封装实际的异步服务本课题中的开发是在Symbian平台下进行的,Symbian平台的C++环境和标准的C++环境有很大的差别,它拥有更加完善的异常处理机制和对内存利用的严格要求,所以在课题开始之前,必须掌握这个平台基础知识,下面对Symbian平台下的基础知识作简要介绍。2.2.2数据类型与命名规则1.基本数据类型[18]:TInt(整数)TUint(无符号整数)TReal(浮点数)TText(字符串)TAny(相当于void)TBool(bool类型)2.类的命名约定表2.1类的命名约定表类别示例说明T类、类型TdeC、TPointT类没有析构函数。它们的操作类似内置类型。T类可以分配为自动变量,作为其他类的成员,或分配到堆上C类Cactive、CBase派生于CBase的类。C类总是在默认堆上分配。当分配对象时,CBase的运算符New()总是将全部成员数据初始化为零。CBase也包括一个虚析构函数。R类Rfile、RWindow任何拥有不在默认堆上的资源的类。大多数R类使用Close()释放他们的关联资源。M类、接口MGraphicsDeviceMap由虚函数组成的接口。实现该接口的类应该从它派生。在SymbianOS中,只赞成M类使用多重继承.M类通常定义为回调(callback)接口或监听器(observer)接口。静态类User、Math只由不能实例化为对象的静态函数组成的类。这样的类是库函数的有用容器3.数据名称表2.2数据命名约定表类别示例说明枚举常量EMonday,ETuesdayE代表枚举常量KMaxFileName#defined类型或constTint类型的常量。Kmax类型的常量倾向于和长度或大小限制关联成员变量iDevice,iX任何非静态成员变量应该有一个i前缀。i指类的“实例”参数aDevice,aX声明为参数的变量。a代表“参数”自动变量device,x声明为自动变量的变量 4.函数名称表2.3函数的命名约定表类别示例说明非退出函数Draw()使用首字母大写。由于函数执行动作,所以使用动词而不使用名词退出函数CreateL()、NewL()、RunL()使用尾字母L。退出函数可能需要分配内存、打开文件等等。通常执行一些可能因为没有足够资源或因为其他环境相关条件(不是程序员的错误)而失败的操作。当调用退出函数时,必须总是考虑它成功和退出时将发生什么,这是SymbianOS中最重要的命名约定LC函数CreateLC()、OpenLC()、NewLC()当LC函数返回时,它在清除栈上留下一些东西。这一般是指向已分配对象的指针,但是更通常是一个清除项。如果函数失败它将退出简单getterSize()获取对象的一些属性或成员数据。常常当该成员是私有时使用getter.使用对应成员名称的名词复杂getterGetTextL()获取属性需要更多工作,甚至可能需要资源分配。简单和复杂getter之间的界限不是绝对的setterSetSize()、SetCommandHandler()设置属性。一些setter只设置某个成员。一些setter涉及资源分配(可能失败),所以也是一个L函数2.2.3活动对象Symbian官方推荐使用活动服务对象[19,20](CActive)来代替多线程的使用,我想这个道理是很明了的,在手机这样的小内存设备里,运行多线程的程序是非常耗资源的,为了节约资源,Symbian提供了一个活动服务对象的框架,Symbian官方推荐使用活动服务对象(CActive)来代替多线程的使用,我想这个道理是很明了的,在手机这样的小内存设备里,运行多线程的程序是非常耗资源的,为了节约资源,Symbian提供了一个活动服务对象的框架,允许把程序里并发执行对象(其实不是并发,不过宏观上看来是)放在一个线程里面执行,这些并发工作的对象就通过活动规划器(ActiveScheduler)采用轮循机制来进行管理。2.2.4两阶段构造思想在Symbian中,如果在一个类的构造函数中需要执行某些比如申请内存等操作,那么有可能会Leave。如果真的Leave的话,这个时候这个类的析构函数是不会被调用,因为还没有初始化完,也就没法把自己加入CleanupStack,那么那些申请了的内存可能会因为没有变量引用而造成内存泄漏。因此在Symbian中类的构造函数中不能有可能会Leave的代码。但是初始化一个类却确实需要执行某些可能会Leave的函数,这就是Symbian中要求的两阶段构造[21,22]了。第一阶段,也就是在构造函数中执行一些不会Leave的初始化工作。然后是第二阶段,把这个实例推进CleanupStack,再执行第二阶段的可能会Leave的代码。当然,在析构函数中,要能够处理部分初始化的情况,也就是实例没有初始化成功,也能释放那些已经申请的内存或资源。而这样要求使用这个类的用户需要执行很多的操作,有可能会忘了其中的某部,所以可以把这些执行的操作写成一个类的静态函数,一般也就是NewL了(L表示可能会Leave),而一般申请的实例也会被推进CleanupStack,所以一般还有一个NewLC(C表示这个申请的实例已经在CleanupStack中了),这也就是古怪的NewLC的来历了。当然,可以把这个类的构造函数以及第二阶段的初始化函数申明为protected,而只允许客户用NewLC这样的方式来初始化。2.2.5重要文件介绍(1). ../group/*.mmp(项目定义文件)SymbianOs下开发项目要针对不同环境来生成程序,如果运行于仿真器(X86指令集),我们使用调试生成,因此可以进行相关调试;如果针对目标手机,则使用ARM指令集,因此发布的代码当然有所不同。因为每种类型的生成均需要不同的项目文件。为了简化,就建立了一个一般性的项目定义文件,然后针对不同的生成环境,将该文件翻译成相应的项目文件。(2). ../group/bld.inf(组件定义文件)SymbianOs生成工具还需要提交一个组件定义文件,这个文件的名字是bld.inf,其中包含所有项目定义文件的列表,多数情况下只有一个文件。有些时候还会包含更多与生成相关的信息。(3). ../inc/*.hrh扩展名为.hrh的文件被设计用来包含在C++程序和资源脚本中,C++程序需要它们来标示被处理的命令,而资源脚本需要它们来指示发出的命令。它包含应用程序命令的枚举常量。(4). ../group/*.rss(资源文件)用来定义资源,比如字符串R_HELLO_TEXT_ITEM1,枚举变量EHelloCmd1,UI的菜单以及快捷键等。(5). ../sis/*.pkg(包文件)用于生成安装包,输入命令makesys*.pkg,即可创建*.sis,可以将这个文件安装到手机上。2.3平台搭建 完成此项目涉及到五大软件平台的支持,它们是MS_Dot_Net2003,S60-SDK-0548-3.0,ActivePerl-13-MSWin32-x86-148120.msi,carbide_vs_201.exe,jdk-1_5_0_06-windows-i586-p.exe。 下面介绍各软件平台的安装步骤(须按一定顺序完成)第一步:MS_Dot_Net2003的安装,安装过程中首先使用虚拟光驱加载启动盘,之后在命令行里输入Z:\setup\setup.exe/NO_BSLN_CHECK(其中Z是安装盘第一张盘所在的盘符),这样就会避免在安装过程中出现各种错误。之后都采用默认配置。第二步:jdk-1_5_0_06-windows-i586-p.exe的安装,安装路径采用默认值。第三步:安装诺基亚S60-SDK-0548-3.0,即SymbianSDK9.1,安装路径采用默认值。当安装快要结束时,安装程序会自动要求装CSLArmToolchain,选择安装,然后采用默认值继续安装。安装完成后,在C盘根目录下会有一个名为Symbian的文件夹(C:\Symbian),并要求重启系统。需要注意的是,如果需要用到S60中的SIPServer模拟器的话,需要jdk的版本要在1.4以上。第四步:安装ActivePerl-13的Windows版,安装路径采用默认值即可。安装完成后在C盘根目录下有个名为Perl的文件夹(C:\Perl)。第五步:安装carbide_vs_201,安装路径采用默认值。过程中会让安装Carbide.vs2.2.1Help,选择安装并采用默认配置。安装完成后,在C盘根目录下会有一个名为Nokia的文件夹(C:\Nokia)。需要注意的是,若开始时Carbide装不上,出现安装失败的情况时,则需在安装Carbide之前安装vjredist1.0.exe,vjredist1.0-LP.exe两个J#的补丁。第六步:注册诺基亚用户。登录诺基亚论坛,注册一个用户,然后在于这个用户名关联的Email中点击激活链接来激活用户(如果以前注册过用户此步骤可以省略)。第七步:注册carbide_vs_201。在carbide_vs_201安装完成后,打开MicrosoftVisualStudio.NET2003,就会弹出carbide_vs_201的注册向导界面。点击注册;然后选择“Idon'thavetheserialnumber.”,点击“next”;选择“IhaveInternetconnection”,点击“next”;这时会弹出一个IE窗口,是诺基亚论坛的登录窗口。然后用在第五步中申请的用户名和密码登录,就会在注册用户的Email中得到序列号。输入用户名,并copy序列号到注册向导界面中,点击“finish”完成注册。第八步:注册完成后,进入MicrosoftVisualStudio.NET2003。点击菜单中的文件>ImprotSymbianProject…,在弹出的“Enable/DisableSDKs”对话框中,选中“S603.0”这一项,然后点击“OK”。在接下来弹出的对话框中,直接点击“cancel”退出。第九步:把整个S60Test文件夹Copy到C:\work目录下,然后直接双击S60Test文件夹下的“S60Test.sln”文件,进入MicrosoftVisualStudio.NET2003。第十步:如果编译全部成功,则可以按“F5”键运行模拟器了。模拟器启动后进入Installat,即进入了俄罗斯方块系统。第三章需求说明在做正式的开发之前,首先对游戏的需求进行详尽的分析和它需求的功能在技术,经济等方面的可行性方面进行分析是完全必要的,分析的结果将决定后面的工作值不值得去做,进度该如何安排等主要工作,本章就是介绍俄罗斯方块的功能需求以及它的可行性。3.1目的目前基于SymbianOS的智能手机越来越受到人们的广泛关注,相关的操作系统和各种技术迅速发展,使得手机游戏市场越来越受到开发商的重视。本课题在S60平台上实现了当前很流行的俄罗斯方块游戏。编写该说明的主要目的是对本课题中所述的主要功能、性能进行完整描述,为后续的详细设计、编码及测试提供基础和依据。3.2需求分析虽然本游戏是在是在手机上运行的俄罗斯方块游戏,但是它毕竟仍然是俄罗斯方块游戏,它和PC或者游戏机上的俄罗斯方块在本质和基本游戏规则上没有什么不同,只是可以加入手机特有的元素在里面。通过对PC机上俄罗斯方块的研究并结合手机开发的实际环境的综合分析,得出下面的对这个游戏的具体的功能要求。1.随机产生在规定的几种形状范围内的方块。2.即时刷新界面并且显示当前等级,得分,当前方块和下一方块。3.可以灵活控制方块在图形框中运动。4.游戏过程中方块可以自由旋转。5.当某一行的方块排列满时,将自动将这一行方块消除,然后将上面所有方块向下移动,可以支持连续消行。6.游戏前可以选择游戏的速度和游戏的等级,游戏速度既为方块下落速度。7.游戏的得分支持积分,并且按照公式进行计算得分。这样,你同一时间消除的行数越多,你的得分也就越高,当游戏积分到了一定时可以自动升级,并且自动调快游戏速度,让用户感受更加残酷的挑战,并在特定窗口中显示等级。8.可以在突发事件(有电话打进,有短信,闹钟响起,低电量提示等)到来时暂停游戏,事件结束之后可以继续游戏。本游戏是供大家娱乐用的,因此在性能方面,只要能达到基本的娱乐目的就可。用户不需要输入任何数据,只要操纵键盘便可。对系统的资源要求也不能太大,否则影响游戏的顺利使用。3.3可行性分析需求分析完成之后,进入下一阶段的可行性分析,下面将从经济,技术等方面进行综合的分析。1.经济可行性 办公地点和计算机硬件设备等都是由公司提供的,很多调查数据表明手机游戏市场现状良好,不需要过多的市场分析经费,所以此部分不作过多分析。2.技术可行性SymbianOS手机应用开发技术越发成熟,Symbian下的C++程序开发语言的形成,S60平台的出现,所有这些都为该项目的实现提供了技术支持。从游戏的基本操作出发,其实主要就是设计对方块的操作,即是对方块的移动和旋转。然而对方块频繁的操作需要方块用合适的数据结构表示才能保证游戏的流畅性。所以,对方块的表示就显得特别的重要。我们在把方块构造成4*4的网状小块,用四位十六进制数表示(后面再详细介绍),由于手机对资源要求比较高,所以所有的操作都是对十六进制数进行移位来实现。对于网格的数据用一个数组来表示里面已经存在的方块。由于对方块的操作都是通过十六进制数的移位操作来实现,从而可以保证对资源的利用较少,游戏运行效率较高。由于在设计中构造了一个4*4的网状小块,由这些小块组合成新的形状,每四个小块连接在一起就可以构造出一种造型,因此我们总共设计了7中造型,每种造型又可以通过旋转而变化出2到4种形状,利用随机函数在一个预览窗体中提前展示形状供用户参考,然后将展示的形状复制到游戏窗体中进行摆放,在游戏窗体中用户就可以使用键盘的方向键来控制方块的运动,然后利用递归语句对每一行进行判断,如果有某行的方块是满的,则消除这行的方块,并且使上面的方块自由下落,其中,方块向下的速度是有时钟控件控制的,在游戏中,用户也可以使用向下键加快下落速度,本游戏还对消去的行进行记录,最后就可以得出用户的分数,通过分数判断,达到一定的积分就可以升级到下一个档次。从上面的分析可以知道,该游戏的算法在现有的技术上是可以实现的,所以该游戏在技术上是可行的。3.社会环境可行性目前政府为软件行业的发展提供了一个良好的外部环境,每年政府部门都会拿出大笔资金来扶持IT企业的发展。同时,国内先后出台了一些知识产权、信息安全方面的文件,这些都为软件开发提供了优良的环境。4.人的可行性经过一段时间地学习,掌握了Symbian平台下的C++编程语法,S60模拟器有了一定认识,从个人技术角度看实现这个游戏是可行的。5.市场分析据市场调研机构ABIResearch今年3月发布的智能手机市场调查报告,在2006年,Symbian大约占据了73%的操作系统市场份额。据塞迪顾问2006年12月份的报告数据,截止去年10月,Symbian在中国的市场份额为63.2%。同时,Symbian中国公司时常总监卢竞透露,该公司目前正在与多家TD芯片厂商及制造商洽谈,向其提供智能手机的解决方案。由于目前Linux、Windows等竞争对手都尚未在TD中得到广泛应用,如果成功挤入TD产业链,未来数年内Symbian可能因此在中国市场获得突破。从以上的数据中我们可以看出在目前S60市场环境良好的情况下,该项目课题具有广阔的市场前景。3.4项目进度计划 在项目的可行性和需求分析过后,就是要具体去实现项目在需求分析阶段列出的各项功能。为了能够更好的控制开发的进度和保证游戏的质量,所以把开发过程分为以下阶段:1.项目分模块2.在有必要的情况下,确定各模块的类图,时序图,活动图等3.对需求分析进行进一步地理解,然后修改第二步的图4.编码,调试5.测试,修改第四章概要设计在第三章的需求分析中我们分析了游戏需要实现的功能,下面就是由第三章分析得出的概要设计,概要设计从系统和用户的交互入手,分析系统用例,再从用例图分析出系统实现的大体步骤。4.1用例图由上面的需求分析得知俄罗斯方块的功能需求,以下是根据用户的需求得到的俄罗斯方块游戏的主框架流程图:图4.1主框架流程用例下面是在游戏进行中每个用例之间的联系图:图4.2游戏进行用例以下是在游戏过程中用户与系统交互的用例图:图4.3游戏关键操作用例4.2内部运行机制由上面的框架流程用例图知道该游戏运行的大体流程,现在我们模拟用户的操作过程对游戏的内部运行机制进行研究,经过分析用户的操作我们得出游戏的运行流程,该流程对开发的过程具有指导意义,下面就是游戏运行的相对于用户的交互流程以及内部的部分运行机制:1.用户点击“newgame”菜单开始游戏2.游戏图形界面大小设置为14*19,基本方块大小设置为15*15,边界设置为23.用户可点击“exit”或“pause”退出或暂停游戏4.用户可点击“unpause”解除暂停状态,继续游戏5.在窗口右上方显示下一方块,以便用户参考6.用户可以使用上下左右键来控制正在运行的方块移动位置,其中上键代表旋转,下键代表迅速下落,左键代表方块左移,右键代表方块右移7.当某一行的方块排列满时,自动将这一行方块消除,然后将上面所有方块向下移动,可以支持连续消行8.记录所消的行数,进行分数计算并在特定窗口中显示当前分数9.在游戏中,用户每次累积的方块行数和所得到的分值比例如下:表4.1积分公式表序列号方块累积行数(次)所得分值1110223033504410010.达到一定的分数就可以自动升级,并在特定窗口中显示level,当用户方块累积行数共达到30行时,游戏等级升一级11.用户所得游戏分数和游戏等级动态改变12.随着level的升高,游戏难度将逐渐加大,体现为时间间隔越来越短13.每次随机出现7中方块中的一种,且每种方块的颜色一定14.菜单实现其中主要涉及到“暂停”按钮的设计,具体实现是:在游戏开始之前,菜单中没有“Pause”或“Unpause”按钮;当用户开始游戏后,菜单中便显示“Pause”按钮;当用户暂停游戏后,菜单中便显示“Unpause”按钮。第五章系统详细设计5.1初步研究方案 根据系统功能大体实现步骤,我们经过分析可知,系统实现需要三个重要的方面,如下:一.绘图Symbian手机游戏的开发需要很好的用户图形操作界面,这就需要开发者能够绘制漂亮的图形界面来满足消费者的视觉性。二.功能管理模块开发者需要一个功能管理模块专门管理此游戏功能,如正在运行的方块的移动,方块颜色的管理,整个图形界面中所包含方块位置和颜色等。三.功能管理对象在程序运行过程中,正确地使用功能管理对象,使系统功能得以完整实现。综上所述,系统可以使用MVC(Model-View-Controller)模式,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式视图,视图是用户看到并与之交互的界面。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。模型表示数据结构的模型。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。控制器接受用户的输入并调用模型和视图去完成用户的需求。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。它们的关系如下图所示:ViewViewControllerModel图5.1MVC图用到这个游戏中解释如下:系统使用View面对用户,使用Model制定管理模块标准,使用Controller来进行实际运行流程中的管理操作。其中TGrid和TBlock属于Model类,他们分别包含了每种方块的数据结构表示和面板的数据结构表示。CS60TestEngine类是controller,它负责启动游戏,产生Block,重设游戏,暂停&解除暂停游戏等。CS60TestDocument类包含了游戏中所需要的所有数据。CS60TestAppView类就是view,负责显示。5.2算法方案 前面已经分析出游戏采用MVC模式,其中涉及很多特殊的数据结构名词,下面对数据结构加以说明说明:1.象素坐标(PixelCoordinate):以显示区域所在控件的ClientRectangle的左上角为坐标原点,一个象素点为单位1的坐标。2.网格坐标(GirdCoordinate):如果我们将显示区域分成m×n的网格,那么其中某一个网格所在(列,行)组成的坐标,我们称之为网格坐标,在程序中网格坐标相关项以Gird或g或G开头。3.块(Block):一个小格子(比如游戏中的方块图形是由小格子组成的)称为一个网格,将由网格来组成游戏图形。游戏中的由四排小格子组成的图形称为块。4.基础点(BasePoint):用于指示目前形状所在位置的一个(列,行)坐标点,以网格坐标为坐标。5.屏幕的组成:

0⒈⒉⒊⒋⒌⒍⒎⒏M0

□□□□□□□□□□1

□□□□□□□□□□2

□□□□□□□□□□--------------3

□□□□□□□□□□4

□□□□□□□□□□****N

□□□□□□□□□□--------------

■■■■■■■■■■屏幕由N行M列的网格组成;其中0~2行:初始的形状将在这里形成然后下落,这三行用户不可见;3~N行:游戏显示区域;N+1行,其标记已到屏幕底部。5.3状态变化规则 上一节描述了游戏中要用到的数据结构,这节我们来分析在运行过程中这些数据所要遵循的一些规则。碰撞检测规则在方块下落之前,我们要先进行碰撞检测。一判定是否满足下落的条件。当构成积木的方块有一个方块最先与场景中其他积木方块有垂直方向接触时,或者与场景底部有接触时,为成功碰撞,否则为碰撞检测失败。当构成积木的方块有一个方块最先与场景中其他积木方块有水平方向接触时,为成功碰撞否则为碰撞检测失败。2.移动规则操作按键:左移动键右移动键下落键移动规则:左平移:积木延水平方向左移一个方块大小的位置右平移:积木延水平方向右移一个方块大小的位置垂直下落:积木延垂直方向迅速下落3.变形规则操作按键:变形键变形规则:一个积木只有几个有限的可变型状,当把其他的型状变完后,再变的话就又会回到原来的形状4.消除规则 条件:在同一层中被添满方块时触发 结果:该层方块被消除,在该层上方的方块下落一层5.积木下落速度规则条件:碰撞检测失败下落轨迹:垂直下落速度设置:系统默认的初始速度为:速度=2秒1层,按照不同的等级速度不同5.4系统类架构设计 View类包括:CS60TestAppView(进行图形界面绘制),CS60TestAppUi(创建CS60TestAppView绘图对象),CS60TestDocument(创建文档统一管理) Model类包括:Block(移动的游戏方块),Grid(14*19的游戏界面),CS60TestEngine(对游戏方块和界面进行管理并提供用户接口) 类的架构见图5.2:图5.2类图5.5类的头文件介绍这个游戏采用了Model-View-Controler模型。其中TGrid和TBlock属于采用的数据结构属于Model类,他们分别包含了每种方块的数据结构表示和面板的数据结构表示。engine类是controler,它负责启动游戏,产生Block,重设游戏,暂停&解除暂停游戏等。Document类包含了游戏中所需要的所有数据,Ui类负责接收外部键盘事件并调用相应的处理程序,view类负责显示。第六章游戏实现6.1资源文件 由于是手机平台的游戏,所以界面力求简洁,菜单相对于PC机的菜单简单,所以菜单相关的东西都放在资源文件里面来实习。而用户操作的相关的选项全部放在菜单里实现。所以,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论