1、基于Symbian平台的俄罗斯方块游戏的实现目录本科生毕业论文(设计)题 目 基于Symbian平台的俄罗斯方块游戏的实现学生姓名 XXX指导教师 XXX学 院 信息科学与工程学院专业班级 计算机科学与技术XX班IV摘 要Symbian 操作系统是当前智能手机中最有号召力的一个操作系统。由于它是完全开放的系统,任何厂商都可以在Symbian系统上开发自己的软件,所以当它变得更加强大,应用更加广泛的时候,对智能手机软件的需求也就会增长。基于Symbian OS的智能手机是开放的,用户可以任意下载、安装、卸载由第三方软件开发者(或者用户自己)开发的应用软件,而不需要厂商的同意。S60是最受欢迎的低
2、端智能手机的Symbian用户界面。而手机终端性能的提高,必将带动手机游戏的发展。因此本课题设计实现了Symbian系统下的俄罗斯方块游戏。此文中的俄罗斯方块游戏是在手机上运行的,手机程序的开发和PC程序的开发有很大的不同,但是在设计思想上却是大同小异,都遵循软件工程的一般原理。本课题在设计中从俄罗斯方块的功能需求入手,结合软件工程的思想,严格按照软件工程的开发步骤,完整的实现了俄罗斯方块游戏。由于受手机平台资源少的限制,本游戏在算法的设计上有其独到之处,对方块的操作都是通过移位运算来实现,节省了资源,提高了游戏的运行效率。游戏的最终运行结果令人满意,开发非常成功。关键字 Symbian操作系
3、统,智能手机,S60,俄罗斯方块游戏ABSTRACTSymbian OS is a full-featured mobile operating system that resides in most of todays smart phones. Because it is completely open, anyone can manufacturer in the Symbian system and develop its own software, so the demand for smart phone software is growing as these devices b
4、ecome more powerful and more widely used. While Symbian OS-based smart phones are shipped with a variety of useful applications built in, an exciting aspect of these phones is that they are “open”. This means that users can download, install and uninstall applications written by third-party develope
5、rs (or by the users themselves). No special carrier service or device manufacturers agreement is needed to distribute new smart phone applications.S60 is a popular Symbian user interface for lower cost smart phones and resides in the majority of Symbian OS phones shipped. The improvement of phone te
6、rminals capability will arouse the development of phone game necessarily. So my topic carried out the Russian square piece game based on Symbian operating system. The game runs on the mobile phone .Soft development of the mobile phone and PC is quite different, but the development thinking is very s
7、imilar. They both followed on software engineering principles. The development process of the Russian box begin with the functional needs, combining with software engineering ideas, accordance with the development of software engineering steps strictly, and complete the Russian square piece game in
8、the end. Because of the mobile phones fewer resources constraints, the algorithm of the games design is special. The operation to box is shifting operations, this improve the running efficiency of the game and save resources. The running result of the game is satisfied, and the development of the ga
9、me is very successful. KEY WORDS Symbian OS, smartphone S60, Russian square piece game 43基于Symbian平台的俄罗斯方块游戏的实现目录目 录摘 要IABSTRACTII第一章 绪言11.1课题研究背景11.2 手机游戏特点21.3 移动游戏开发与传统游戏开发的区别31.4 课题研究意义41.5 运行环境要求41.5.1 硬件环境41.5.2 软件环境51.6 文本组织5第二章 开发环境62.1 Symbian OS 简介62.1.1 Symbian的历史62.1.2 Symbian的特点62.1.3 S
10、ymbian应用程序框架72.1.4 S60 的简介82.1.5 S60模拟器介绍92.2 Symbian编程基础知识102.2.1 Symbian C+和标准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
11、类的头文件介绍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.6 DoPause函数346.5 文档类(Document)356.5.1 复位3
12、56.5.2 可销行数的统计356.5.3 Block的旋转检测356.6 视图(AppView)366.7 其它类366.8 程序实现步骤36第七章 系统测试387.1测试步骤387.2 测试结果39第八章 总结40参考文献41致 谢43基于Symbian平台的俄罗斯方块游戏的实现第一章 绪言第一章 绪言1.1课题研究背景近年来,伴随着移动网络和移动终端性能的不断提高与完善,以及移动游戏技术本身的日益成熟,移动游戏的巨大商机已经展现在人们面前,游戏行业中最新的热点就是可移动性,手机游戏将传统的商业公司、设备生产厂、网络经营者拉在一起。现在传统游戏产业链的参与者已经开始从家用机游戏、PC网络游
13、戏等传统的游戏领域逐渐向手机游戏领域扩张,而移动运营商和终端设备制造商也都在密切关注手机游戏产业的发展,并积极尝试与手机游戏开发商以及发行商进行更加紧密地合作,同时进行探索合理的商业模式。这一切都证明手机游戏市场已成为目前移动领域最具有活力的市场1。在中国,手机在生活中越来越重要,已成为一种必需品。中国的手机用户超过3亿多人,市场规模在世界上也是无人能敌的。而刺激这一市场成长正是各终端厂商丰富多彩的产品。而国内与手机产品的决定权掌握在通信运营商手中的日本不同,中国是终端厂商自行推出产品、吸引“喜新厌旧”的消费者。在这个全球最大的手机市场中,激烈的销售大战一直没有停止过。虽然手机行业很早就开始说
14、市场已经饱和,但可进行高速数据通信的3G却有望带来新的发展。尤其是用户规模号称世界之最的中国更是被寄予了厚望。而在手机的日新发展中,从2G到2.5G,乃至3G,(所谓3G“3rd Generation”,是指把无线通信和国际通信网络等紧密融合在一起的第三代移动通信技术。)各厂商都认为,中国市场将成为检验3G真正价值的试金石2,3。手机游戏(移动游戏)是指运行在手机终端上的电子游戏。据统计,根据有关部门统计2004年网络游戏用户达到2300万,市场规模为25.7亿元。在日本,手机游戏已成为运营商的重要收入来源,每百人手机用户中就有超过25人在玩手机游戏。而中国现在的手机游戏用户正在缓慢增长,才不
15、到2000万人,而真正使用付费手机游戏的用户就更少了,与可频繁下载具有魅力的最新游戏的日本相比差距甚远。另外在收取的费用也不尽合理,对可以成为游戏重量级用户的年轻人的宣传力度也不够高。在相对中国3亿多人的手机用户,中国手机游戏的渗透率还很低。然而,目前中国已经成为世界上最大的手机大国,而在中国这个飞速发展的通信大国,其正吸引着各方投资者的热情。在这一市场中,相信在3G时代的到来之际,手机游戏产业无疑成为了一个巨大的奶酪。近年来,随着个人电脑普及速度的加快,中国游戏爱好者的数量也日渐增加,但用手机玩游戏在中国还远未形成风气。在这种形势下,国外一些知名的游戏厂商加快了向中国进军的步伐,如世嘉、CA
16、PCOM、BANDAI等日本游戏厂商开始向中国移动、中国联通提供他们最知名的游戏内容。中国的游戏爱好者对日本游戏的质量给予很高的认可,对日本游戏的手机发送服务也充满了期待。但不管是国外还是国内的游戏厂商要想在中国市场大展鸿图,必须等到手机终端性能提高、移动通信运营商建立完善的发送体制之后才有可能。另外,根据相关行业的调查,2005年全球手机线上游戏将有近68亿美金商机,至2008每年将以10%稳定成长,全球移动游戏业创收将超过93亿美元,中国的手机游戏市场也会达到400亿元人民币的规模。毫无疑问,面对巨大的市场诱惑,互联网风潮过后,很多投资热情都倾泻在这个由互联网、手机所催生的SP市场。毫无疑
17、问,无论是从未来的3G发展还是个人娱乐化趋势看,手机游戏市场都将是各个SP争抢的蛋糕,可见移动游戏市场将成为兵家必争之地。随着3G在国内的全面推广下,3G的发展不仅会使3G的相关行业受益,还将会给其它行业的企业带来多种商机3,4。当然,做为移动最大的数据增值业务手机游戏,终将成为最显眼的一项。在手机游戏今后的发展过程中,不管是运营商和手机制造商以及游戏开发商等都要面对着市场的种种困难与考验。当然,在手机游戏市场的考验下将获得更多的机遇,而这些机遇将足够使得整个国内的手机游戏市场更加活跃起来。1.2 手机游戏特点手机游戏的盈利主要是由于它们的涉及面很广。手机已经与现代生活方式紧紧地结合在一起。他
18、们是最普遍携带的个人用品中仅次于钥匙和钱包的东西。传统的台式机游戏将目标锁定在低级趣味的人和青少年身上,而手机游戏则每个人都可以访问的到,随时,随地。尽管每个手机游戏都不贵,但是巨大的使用量(如:每人每星期一个新游戏)将使得这个市场商机无限并且有利可图。但是,对于开发者来说,将控制台游戏迁移到手机游戏工程很大因为他们所面向的对象、生活方式和分布式模型都有着极大的区别5,6。一个成功的手机游戏大多都具有以下特征:易于学习: 既然手机游戏面向的是普通消费者而不是计算机高手,那么他们不可能深入的学习游戏技巧。消费者不会花几个小时去研究一个3美元的手动操作的游戏。所以游戏必须是一下载就可以玩的。保持游
19、戏的简单是最基本的要求。可中断性: 多任务处理是手机生活方式的基本特征。手机用户常常在任务(如等一个电子邮件或者等车)之间有一小段时间。而游戏、日历管理、通讯和工作数据访问使用的是同一个设备。所以一个好的手机游戏应该提供短时间的娱乐功能,并且允许用户在游戏和工作模式之间顺利切换。 基于订阅: 手机游戏的盈利成功取决于他们巨大的使用量。一开始开发和设计每个游戏都是昂贵的。如果一个手机游戏开发者要赚钱的话,重要的是:同一个游戏引擎,多个标题,基本的故事情节类似。基于订阅的游戏是不断产生收入的最好方法。丰富的社会交互: 不管一个游戏设计得多好,只要玩家找到了它的根本模式或者玩完了所有的游戏路径很快就
20、会厌烦这个游戏。对于一个基于订阅的游戏,重要的是与别的玩家合作以增强所玩游戏的智力和随机性。在今天纷繁复杂的多玩家游戏中具有丰富社会交互的游戏证明是成功的。 利用手机技术的优点: 巨额的手机技术研发费用都花在提高设备和网络的可用性和可靠性上面。因此,手机设备硬件和网络协议与桌面/控制台世界(如全球定位系统(GPS)扩展、条形码扫描仪、和短消息服务(SMS)/多媒体信息服务(MMS)通讯)有着非常大的差别。好的手机游戏应该利用那些更新的设备特征和网络基础设备的优点。 无违法内容: 既然所有年龄/性别的人群都玩手机游戏并且常常在公共/工作场合,你应该避免明显的暴力或者色情内容。1.3 移动游戏开发
21、与传统游戏开发的区别移动游戏开发与传统游戏开发区别在许多方面7:1开发团队的大小传统的PC和控制台游戏一般需要12到30人的开发团队。因为大部分移动游戏规模比控制台游戏小,所以一般情况下只需要3到5人的团队开发,有的时候甚至设计者和编程者是同一个人。2预算传统游戏的预算在一百万美元到五百万美元之间。大部分移动游戏的预算则通常少于一百万美元。实际上,移动电话有限的显示能力和对应用程序大小的限制使得不可能像传统游戏那样投入大量的财力物力。从某种意义上来说,这也算是一个优点。3开发周期传统的游戏一般要开发两到三年。而大部分移动游戏几月之内就能开发完毕。换句话说,只要有一个小型开发团队和一个小的预算,
22、你就可以开发并推广一个专业品质的移动游戏。因此,对于许多在传统游戏领域遇到挫折的开发者来说,移动游戏开发有很强的吸引力。4网络设备移动游戏可能不同于我们之前看到的任何游戏:它受载体因素的限制,但是支持网络并且可多人游戏。用于PC的调制解调器也只是8年前才大范围应用;控制台游戏只不过现在才能上网。移动电话的特性决定它是一种网络设备。即使它们的处理能力使人想起以前的老式计算机技术,但是它们的网络性能却更加出众。5开放标准控制台游戏开发需要从控制台游戏厂商取得授权和支持,需要支付给他们“平台使用费”。在无线应用程序世界(如同在PC游戏开发中一样),你可以免费的开发任何款式的游戏,而不要支付Nokia
23、、Sun或其他平台提供商一分钱。此外,这些移动游戏开发平台标准可以向开发者发布、开放并可免费取得。6部署传统的游戏主要是在软件市场上购买。而移动游戏主要是由用户从移动门户网站下载并安装。在有些情况下,它们是通过无线网络下载的。有些手机允许你下载一个应用程序到计算机中,然后通过数据线传送到手机中。因此,移动游戏的销售渠道是非常不同的。用户一般通过移动运营商的游戏菜单、手机厂商预装在手机中的游戏菜单或者无线应用程序门户网站上找到移动游戏。1.4 课题研究意义这个项目是基于Symbian平台的俄罗斯方块游戏的实现,之所以选择俄罗斯方块游戏,是因为俄罗斯方块游戏是历年来最经典的一个小游戏,由于它本身简
24、单易学、富有趣味性,已成为广大小游戏爱好者的最爱,不管在PC机中,还是手机中,都可见到它的身影。本课题在S60平台上实现了俄罗斯方块游戏,将它从常见的windows操作系统移植到了Symbian操作系统中,顺应了时代的要求,未来一定会被广泛采用。俄罗斯方块游戏曾经红极一时,创造了巨大的商业价值,是一款非常成功的游戏,非常具有代表性,通过这个游戏的开发,熟悉在Symbian平台开发手机游戏的一般流程。1.5 运行环境要求1.5.1 硬件环境系统运行的设备要求比较高,具体如下:1处理器Pentium 4 CPU 3.00GHz2. 512M内存、10G硬盘、10100M网卡以上配置1.5.2 软件
25、环境1.MicroSoft Windows Windows XP Professional系统2.Microsoft Visual Studio .NET 20033.jdk-1_5_0_064.S60-SDK-0548-3.0,即Symbian SDK 9.15.ActivePerl-5.8.7.813的Windows版6.carbide_vs_2011.6 文本组织本文组织如下:第一章介绍了研究背景及意义,要实现的任务;第二章对主要使用到的技术支持进行了说明并对平台的搭建进行了介绍;第三章阐述了需求分析和对具体需求的规定,以及项目进度计划;第四章和第五章对本课题概要设计以及详细设计展开,其
26、中讨论包括核心功能设计和界面的设计;第六章是本游戏的具体实现。第七章是系统测试,第八章是总结和展望。基于Symbian平台的俄罗斯方块游戏的实现第二章 开发环境第二章 开发环境2.1 Symbian OS 简介2.1.1 Symbian的历史Symbian是一个手机巨头联盟的代名词,该公司成立于1987年,是摩托罗拉、西门子、诺基亚等几家大型移动通讯设备商共同出资组建的一个合资公司,专门研发手机操作系统8,9。而Symbian操作系统的前身是EPOC,而EPOC是 Electronic Piece of Cheese取第一个字母而来的,其原意为使用电子产品时可以像吃乳酪一样简单,这就是它在设计
27、时所坚持的理念。 Symbian操作系统在智能移动终端上拥有强大的应用程序以及通信能力,这都要归功于它有一个非常健全的核心-强大的对象导向系统、企业用标准通信传输协议以及完美的sun java语言。Symbian认为无线通讯装置除了要提供声音沟通的功能外,同时也应具有其它种沟通方式,比如触笔、键盘等。在硬件设计上,它可以提供许多不同风格的外型,像使用真实或虚拟的键盘,在软件功能上可以容纳许多功能,包括和他人互相分享信息、浏览网页、传输、接收电子信件、传真以及个人生活行程管理等。此外,Symbian操作系统在扩展性方面为制造商预留了多种接口,而且EPOC 操作系统还可以细分成三种类型:Pearl
28、QuartzCrystal,分别对应普通手机、智能手机、Hand Held PC场合的应用。Symbian分两个主要的智能平台,一个是适于单手操作的S60,代表产品是诺基亚7650、3650;另一个是双手操作的S80,代表产品是诺基亚的9210,以及现在的9500,主要针对商务用户。此外Symbian上还有另一个平台UIQ,以笔操作为主,代表产品是索尼爱立信的P802、P910、P910c。2.1.2 Symbian的特点Symbian操作系统是一种32位占先式多任务操作系统,具有功耗低,内存占用少等特点,非常适合手机等移动设备使用。而与微软产品不同的是,Symbian将移动设备的通用技术,也
29、就是操作系统的内核,与图形用户界面技术分开,这就使得它能很好的适应不同输入方式的平台,这也是我们能见到不同界面的Symbian系统的主要原因10。由于支持Symbian操作系统的的移动通讯终端设备厂商众多,因此商场上有相对较多的支持该系统的不同品牌和型号的终端产品,从而使得这个操作系统能够被迅速的推向市场,进而被消费者所接受和认可,而消费者本身也拥有了更多的产品选择。同时,由于这个系统为第三方应用程序开发商提供了一个开放、标准的开发平台,因此,这些开发商一方面可以很容易的开发、设计相关的应用程序,另一方面也拥有了较多可以使用的终端产品。不过支持Symbian操作系统的移动通讯终端设备厂商都是各
30、家自己独立开发设计用户接口程序的,因此往往互不兼容,在设计理念上差距往往会很大。另外,由于各移动通讯终端设备厂商并非专业的应用软件开发公司,因此在应用软件的开发上要面临很多的困难,尤其是在办公软件、媒体录播软件等方面,这样很可能会导致Symbian操作系统没有足够多的应用软件可以选用,不利于发挥Symbian操作系统的强大支持功能。2.1.3 Symbian应用程序框架Series 60的UI应用程序依赖于操作系统的很多组件。大多数常见的应用程序的需求,比如屏幕绘制,应用程序的数据,都不需要开发人员一一编写,这好像重新发明轮子。相反,应用程序的大多数需求都被操作系统的多种服务器所支持。例如,W
31、indow Server提供了UI扩展的支持,File Server提供了对持久性数据的支持8。应用程序框架包含一系列的核心类,它们是所有应用程序的基础。这些类形成了所有应用程序的结构,并且它们都封装了与应用程序和操作系统服务器之间的相互作用。这里使用的体系结构将会在Avkon 视图转换体系结构中详细解释。应该注意的是该图是一个UML类图,它表示了4个类的层次。在这些类层次当中的第一层分成了两个基本的部件,叫做AppArc和CONE。AppArc 代表Application Architecture。这些类提供了基本的应用程序结构,传递系统信息到应用程序和持久性数据使用的File Server
32、的机制。这是一个Symbian OS分类,在这些类当中的类以前缀Apa开头,比如CApaApplication。CONE是CONtrol Enviroment的缩写,在这些类中的组件提供了处理用户输入,创建用户接口的信息。这些类主要与Winow Server交互。Window Server是一个Symbian操作系统Server,它控制控件的绘制与用户输入的处理。这些类都是Symbian操作系统的组件,他们的类名都是以Coe为前缀的,比如CCoeControl。第二层类是Ukion组件。这是一个通用的,独立于设备的,高级功能实现的,非抽象化的框架类,它提供的UI库对所有Symbian操作系统平
33、台都是通用的。一些具体的UI控件,比如listboxes, scrollbars,可以在这层中被创建,这些有时候叫做Eikon控件。注意,在S60平台上应该使用Avkon控件来提供正确的行为。在类Uikon/Eikon中的组件的名字以Eik开头,比如CEikApplication。第三层包含了Avkon类,这些提供了S60平台的中核心的UI功能,比如菜单的支持。这层纯粹是一个S60特有的实现,并且你的类都应该继承自Avkon类,而不是通用的Symbian操作系统类。Avkon类的名字都以Akn为前缀,比如CAknApplication。第四层,是特定的应用程序层,表明了你应该如何从S60特有的
34、Avkon类继承下来设计自定义的应用程序。在第一层中的许多类都是抽象的,而且仅仅是定义了框架的API的接口。第二层添加了Symbian操作系统的实现,并且与其他Symbian操作系统UI平台共享。第三层添加了S60特定框架的实现,并且第四层添加了自定义应用程序的实现。2.1.4 S60 的简介Series 60是诺基亚公司基于Symbian,做了改进和修改设计而成的单用户数字键盘手机可视化界面平台,功能强大,同时支持Symbian和Java应用。基于S60的应用可涵盖基本的通信、彩信以及丰富的办公应用等诸多范畴,诺基亚Series60平台是一个源代码产品,终端制造商可以将其集成到自己的智能终端
35、硬件设计中。为了开发广阔的应用市场,诺基亚正在和Series60平台的授权使用者一起,推动创造一个开放的开发社区。这一开发社区为授权使用者提供完全的应用源代码,帮助授权使用者开发产品,并自由选择他们自己的Series60平台开发方向9。Series 60已经授权给Nokia手机公司NMP,Siemens, Samsung, Panasonic和Sendo。由于每个Series 60拥有厂商都具有所有的Series 60平台的原代码,并可开发扩展以增强相应的手机或移动终端。目前Series 60应用的一些特点:用户界面: 多彩色显示, 三个核心快速按键,多任务,个性化;驱动特点: 个人信息管理系
36、统,图像MMS彩信服务,XHTML,Java;增值特点: 个性化扩展,游戏;显示: 176*208,真彩色,QCIF 176*144图像;键盘: 五方向滚轮,两个软按键,Application应用键,Clear清除键,ABC键,Send/End键;文本行: 大多数应用提供行6行显示,浏览器可显示7行,信息浏览可显示8行。S60平台支持多种用户界面屏幕解析度,包括:肖像画解析度,风景画解析度。目前市场上数量最多的基于Symbian操作系统的终端就是S60终端,S60终端在今后仍有着极佳的市场发展前景。基于S60的应用开发不受限制,涉及商务、生活和娱乐等各领域。成熟的应用可运行于不同品牌、不同型号
37、的S60终端,这将有效降低S60应用的开发成本,加速运营商、开发商和终端生产商的市场运作进程,从而使包括最终用户在内的各方受益。S60的基础平台10,11,12是32位的多任务多线程操作系统源自Psion的EPOC操作系统。在以Nokia为首的手机大厂主导之下,S60在无线通信方面表现出较佳的性能,且由于对手机消费者了解较深,因此,在集成一些数据及个人信息管理的功能之后,对用户使用习惯的掌握程度较佳。于移动通信产业的生态已逐渐转变。随着NTTDoCoMoi-Mode的成功,移动通信厂商意识到他们在第一线面对消费者,最了解消费者对于移动应用服务的需求,因此转而成为规格的制定者,再交由手机制造厂商
38、去生产。过去由手机厂商主导,不管任何规格直接推给通信厂商照单全收的情况渐渐消失,移动通信厂商的规格逐渐兴起,诺基亚肯定会调整战略,将S60系列推向一个新的高度。2.1.5 S60模拟器介绍S60应用程序的开发、调试和最初的测试一般都在PC模拟器上进行,该模拟器提供了一种基于微软Windows的S60设备的实现。在大多数情形中基于模拟器的开发过程与在真实的设备上运行的应用程序的操作是非常相似的。模拟器的精确界面与提供的图形会有很大的不同,它依赖于你使用的目标平台、S60的版本和所选择的IDE。此外,还可能添加或删除一些按钮或其它的操作元素以模拟现实的设备的配置。模拟器和真实的设备之间有些差异无法
39、避免。真实的S60设备可能带有硬件附件(例如照相头)和其它特性(例如后台振动)。此外,基于PC的模拟器不能精确地模拟精确计时、应用程序性能和内存管理的问题。对于基于PC的开发,编辑/编译/建立周期是基于微软Windows开发工具集的。但是,与依赖Win32或MFC类库进行链接和建立不同,开发者将依赖于S60 SDK安装的头文件和PC格式的类库来进行链接和建立。作为结果的Windows格式的二进制可执行文件就可以在以PC的模拟器上运行了。在开发过程中,特定IDE的项目文件管理所有的链接和建立细节信息。它同时确保了建立操作的所有输出和其它需要的资源文件都被放到了适当的位置以供在模拟器环境下进行运行
40、和调试。根据下图,S60显示屏逻辑上被分成三个区域:状态块、主块和控制块。图2.1 S60模拟器状态块是屏幕顶部的刻度条(在模拟器上是蓝色的)加上它上面的区域。主块是屏幕中间的,位于状态条和屏幕底部之间的软按键(soft key)标签之间的部分。控制块是紧接着主块,包含了软按键标签。2.2 Symbian编程基础知识由于手机应用程序开发和和PC应用程序开发有很大的不同,因此在进入深入的讨论之前,对Symbian变成基础知识做一下介绍。2.2.1 Symbian C+和标准C+的区别13,14,15,16象智能电话这样的小型手持设备,通常是资源非常紧张的设备。 这种设备的尺寸和制造费用限制了可用
41、的存储器,处理速度和电池寿命。 尽管以上这些资源缺乏,但是这些设备还是需要能够稳定运行相当长的一段时间,甚至数个月。 一旦出现资源溢出的错误,对于系统来说重要的事情就是返回到前一个稳定的状态,而不失去任何重要的数据。 这使得完全地捕捉和处理每个运行错误对于系统和应用程序来说是非常重要的。 由于资源溢出而出现的错误,和所有的运行期错误一样被称为异常。 在标准的C+中,这些异常是使用try-catch-throw机制处理的,但是因为它造成了代码长度的负面影响,所以Symbian OS提供了它自己的称为trap harness的机制。Symbian开发他们自己的异常处理程序的另一个原因是开发Symb
42、ian OS的时候,try-catch-throw机制还不是C+标准的一部分。trap-harness的概念是使用一个TRAP宏把可能引发异常的函数封装起来。这个宏可用于捕获多个函数,并且这些函数可以嵌套。万一出现一个异常,导致异常的函数的执行就会通过User:Leave函数终止,相当于标准的C+异常处理中的throw。这被称为一个leave(离开),它将返回程序执行到结束的TRAP宏,在那里相应的恢复动作可以被执行。Symbian OS还提供一个工具,以便清除异常。一个cleanupstack被用于引用只被一个自动变量引用,并且如果出现一个leave的时候需要被释放的对象。TRAP宏将销毁c
43、leanupstack中自动变量分配的内存。Symbian OS提供一个用于在单一线程之内非抢先式多任务处理技术的系统。这个包括活动对象和活动调度程序的系统的设计目标是降低运行时间成本和解决与优先计划线程冲突的同步问题。Symbian OS中的每个应用程序由一个活动调度程序和一个或多个活动对象组成。这个调度程序封装一个需要异步的服务和依照它们的优先权安排活动对象的等待循环。活动对象封装实际的异步服务本课题中的开发是在Symbian平台下进行的,Symbian平台的C+环境和标准的C+环境有很大的差别,它拥有更加完善的异常处理机制和对内存利用的严格要求,所以在课题开始之前,必须掌握这个平台基础知
44、识,下面对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也包括一
45、个虚析构函数。R类Rfile、RWindow任何拥有不在默认堆上的资源的类。大多数R类使用Close()释放他们的关联资源。M类、接口MGraphicsDeviceMap由虚函数组成的接口。实现该接口的类应该从它派生。在Symbian OS中,只赞成M类使用多重继承.M类通常定义为回调(callback)接口或监听器(observer)接口。静态类User、Math只由不能实例化为对象的静态函数组成的类。这样的类是库函数的有用容器3.数据名称表2.2 数据命名约定表类别示例说明枚举常量EMonday,ETuesdayE代表枚举常量KMaxFileName#defined类型或const Tin
46、t类型的常量。Kmax类型的常量倾向于和长度或大小限制关联成员变量iDevice, iX任何非静态成员变量应该有一个i前缀。i指类的“实例”参数aDevice, aX声明为参数的变量。a代表“参数”自动变量device, x声明为自动变量的变量4.函数名称表2.3 函数的命名约定表类别示例说明非退出函数Draw()使用首字母大写。由于函数执行动作,所以使用动词而不使用名词退出函数CreateL()、NewL()、RunL()使用尾字母L。退出函数可能需要分配内存、打开文件等等。通常执行一些可能因为没有足够资源或因为其他环境相关条件(不是程序员的错误)而失败的操作。当调用退出函数时,必须总是考虑
47、它成功和退出时将发生什么,这是Symbian OS中最重要的命名约定LC函数CreateLC()、OpenLC()、NewLC()当LC函数返回时,它在清除栈上留下一些东西。这一般是指向已分配对象的指针,但是更通常是一个清除项。如果函数失败它将退出简单getterSize()获取对象的一些属性或成员数据。常常当该成员是私有时使用getter.使用对应成员名称的名词复杂getterGetTextL()获取属性需要更多工作,甚至可能需要资源分配。简单和复杂getter之间的界限不是绝对的setterSetSize()、SetCommand Handler()设置属性。一些setter只设置某个成员。一些setter涉及资源分配(可能失败),所以也是一个L函数2.2.3 活动对象Symbian官方推荐使用活动服务对象19,20 (CActive)来代替多线程的使用,我想这个道理是很明了的,在手机这样的小内存设备里,运行多线程的程序是非常耗资源的,为了节约资源,Symbi