




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于Android操作系统的中国象棋手机游戏 Chinese Chess Application based on Android Mobile OS 指导老师: XXXXXXXXXXX 姓 名: XXXXXXXXXX 学 号: XXXXXXXXXX 学 院: 软件学院 专 业: 软件工程 摘要 cnChess是运行在Android平台上的一款支持双人联网对局、即时聊天、对 弈记录的休闲棋牌类手机游戏。 系统釆用面向对象的编程思想进行构思与分析设计;使用UML构建软件模型; 使用MVC架构模式实现系统的整体架构及各模块之间的接口设计;在系统的实践 过程中还釆用了部分GoF的设计模式进行编码与开
2、发。 本文详细系统地阐述了在Android平台上,应用MVC分层架构模式及面向对 象的软件开发思想对cnChess游戏系统的分析、设计及实现过程。在项LI的实践 过程中,主要用到了以下技术:手机布局主要使用了 XML设讣,程序及其子模块 的生命周期管理用到了 Activity流程控制,数据储存方面使用的是轻量级数据库 SQLite、网络通讯部分使用的是XMPP即时通讯协议进行数据的传输、对弈的画面 更新使用的是手机的2D图形编程。本论文的前半部分将简要介绍系统相关的行业 信息及基础的技术知识,后半部分将对本人在系统各模块中所使用的关键技术的 实现进行了全面的介绍。 关键词:联网对弈;中国象棋;
3、手机游戏:Android平台 ABSTRACT ABSTRACT CnChess is a Chinese Chess game that running on the Android platform.lt support many of the features such as playing games through the network, real-time chat, and play chess records of casual mobile games The CnChess game is object-oriented programming design and an
4、alysis of the idea of thinking; build software models using UML; use of MVC architecture patterns to achieve the overall system and the interface between the module designs; in practice the system also uses some of the GoFs design patterns to coding and development. This paper systematically expound
5、ed in the Android platform, the application of MVC pattern and hierarchical structure of object-oriented software development thoughts cnChess game system analysis, design and implementation process Practice in the course of the project, mainly used in the following technologies: cell phones primari
6、ly use XML layout design, process and life cycle management sub-module uses the Activity process control, data storage areas using a lightweight database SQLite, netwrok communication Some use the XMPP instant messaging protocol for data transmission, public debate of the frame using a mobile phone
7、2D graphics programming. The first part of this paper will briefly introduce the system based on relevant industry information and technical knowledge, the latter part of each module in the system; I will be in the key technology used in the realization of a comprehensive introduction Keywords: Netw
8、ork of games; Chinese chess; Mobile Games; Android platform II 第1章绪论1 1.1 IlLi1 1.2相关研究综述1 1.2.1 Android手机操作系统的发展历程1 1.2.2国内外关于Android手机应用程序的研究及开发现状2 1.3研究目标与内容2 1.3.1研究目标2 1.3.2研究主要内容2 第2章Android程序设计相关技术概述4 2.1 XUL界面布局4 2.2 Android 勺 Activity 组件4 2.3 SQLite 数据库5 2.4 XMPP 协议5 2.5 Android 2D 图形编程5 2.
9、6 MVC模式简介5 第3章系统的分析与实现7 3系统分析7 3.1.1系统功能分析7 3.1.2系统流程分析8 3.1.3系统数据流分析9 3.2系统数据库设计9 3.2.1 系统 E-R 图9 3.2.2数据库表设计10 3.3面向对象的系统设计10 3.3.1系统文件组织结构10 III 3.3.1用例的设计-11 3.3.2类的设计12 3.3.3系统交互模式的设计12 第4章模块的实现15 4MVC分层结构16 4.2总体控制模块17 4.3数据存储模块18 4.4数据传输模块20 4.5对局模块22 4.6 XML界面布局模块24 4.7系统中关键技术的应用及实现24 4.7SQL
10、ite3 的应用24 4.7.2 XML界而设计25 4.7.3 cnChess 的 2D 图像编程25 4.7.4对弈过程中双方棋盘上棋子的同步27 4.7.5 XMPP数据传输27 4.7.6走棋规则的判断28 第5章结束语30 5后续硏究展望30 参考文献31 致谢 错误!未定义书签。 IV 第1章绪论 第1章绪论 1.1问题的提出 随着3G移动网络应用的推广,手机游戏的规模、复杂程度日益增强;其技 术手段、设讣思想、系统体系结构都发生了深刻的变化。手机操作系统正朝着高 处理能力.多功能、智能化的方向发展。近年来,网络文化市场发展很快,随着 互联网的迅速普及、宽带的接入社区和家庭,我国网
11、络游戏市场发展迅速并进入 了一个高速增长期,并已经创造了较大的产值,带动了相关产业的发展。 如今网络上的提供免费中国象棋游戏,大多数是单机版的,界面单一,功能 单一。本系统将实现在网络上对战的中国象棋功能:还对在下棋界面美化,以及 下棋中可能出现的意外进行了处理。这样中国象棋休闲游戏将不在是一个功能单 一界面枯燥的游戏,而是一个较完善的休闲游戏。 在国内外Android手机应用开发如火如荼、日益盛行的大背景下,本人决定 开发一款界面友好、操作简单,支持双人联网对局、数据记录、智能规则判断的 手机休闲游戏。 12相关研究综述 近年来,国内外的专家学者以及一线的开发人员从理论、方法、技术等不同 的
12、角度对Android手机操作系统进行了一定的研究。本小节将从Android手机操 作系统的发展历程、研究现状、程序开发设计简介四个方面分析总结国内外的相 关研究结果。 12.1 Android手机操作系统的发展历程 Android是Google于2007年11月5日宣布的基于Linux平台开源手机操作 系统名称,该平台山操作系统、中间件、用户界面和应用软件组成,号称是首个 为移动终端打造的真正开放和完整的移动软件。 表1. 1 Android手机操作系统的发展阶段 发展阶段 阶段特征 2007.11.5 Android平台发布 2008.9.22 T-Mobile 2009年1季度 G1销售1
13、00万台 2009.3 MWC华为发布Android手机,Moto,三星,LG计划2009 年下半年推出Android手机 2009 获得 0range, Vodafone, 02 Telefonica 支持 2009 进军上网本 第1章绪论 1.2.2国内外关于Android手机应用程序的研究及开发现状 Android是基于Linux内核的软件平台和操作系统,早期由Google开发,后 山开放手机联盟Open Handset Alliance)开发。它采用了软件堆层(software stack, 乂名以软件叠层)的架构,主要分为三部分。低层以Linux内核工作为基础,只 提供基本功能;其他
14、的应用软件则山各公司自行开发,以Java作为编写程序的一 部分。另外,为了推广此技术,Google和其它儿十个手机公司建立了开放手机联 盟。Android在未公开之前常被传闻为Google电话或GPhone。大多传闻认为 Google开发的是自己的手机电话产品,而不是一套软件平台。2010年1月,Google 开始发表自家品牌手机电话的Nexus One,訂前最好的是Android2.1 o 1-3研究目标与内容 1.3.1研究目标 本项口主要研究的标分为:程序设计思想实践改进目标、Android平台手 机开发技术的研究口标以及对XMPP网络传输协议的使用与研究口标。 (1)运用面向对象的编程
15、思想及RUP统一过程,对cnChess中国象棋手机 游戏的系统结构、过程、功能等要素进行可视化的描述,为Android程序设计的 可视化提供方法、技术上的支持,为系统的理论模型和软件建模提供参照。 (2)本系统中使用了多种基于Android平台的软件开发技术,根据要实现的 系统功能,系统需要使用到的技术及技术研究的目标主要有: 手机游戏用户界面的人性化、个性化界面布局,给用户以良好的游戏体验; 移动设备上的图形编程,提供流畅靓丽的游戏过程界面; 使用文件、SQLite等数据存储方式,提供游戏配置保存,游戏过程保存、游 戏过程回放、游戏结果记录等功能,方便用户查看; (3)使用XMPP即时通讯协
16、议传输数据,提供即时聊天的以及在线探测的 功能,实现游戏的实时性。 1.3.2研究主要内容 项目研究的内容主要有以下四大块: 笫一部分是手机游戏的界面设计和背景音效的设计。和PC上的游戏开发有 些许不同,手机游戏更加的注重用户体验,一个人性化的、时尚靓丽的游戏界面 和优美个性化的音效设计是一个成功的手机游戏要达到的基本要求。 第二部分是手机之间的通信模块设计。3G时代,手机通信受流量的限制很大, 所以必须尽可能的使用简洁的通信协议,减少数据的流量,减少用户的通讯资费; 再者,双人对局这样的在线游戏,必须体现其即时性,在一方因为电话打入或其 他原因导致游戏挂起或掉线时,另一方能及时得知道对方的状
17、态,以便做出处理。 另外,为了增加游戏的互动性,项目提供了即时聊天的功能。 第三部分是对局智能程序的设计。在没有朋友在线的情况下,可以和设计好 的Al (Artificial Intelligence)算法进行游戏人工智能程序设计是一项对算法要 第1章绪论 求很高的程序设讣,特别是在手机这种硬件资源紧缺的环境中,更是需要一个高 效的算法来提供强大的AI对局支持。 第四部分是逻辑控制模块的设计。当有紧急事件(如电话打入,电池没电等) 发生时,需全局模块对当前的游戏状态进行保存或退出等处理,并发送相关信息 给对局的伙伴;用户通过触摸屏进行走棋,棋子的走动规则山软件进行智能规则 判断;对局结束,软件
18、将对对局的过程及结果使用与国际接轨的棋谱记录格式 (PGN, FEN)进行记录,在对局结束后,用户可用软件读入PGN格式的对局过 程文件,进行战局的回放。 软件采用面向对象的编程思想进行构思设计,使用UML设计软件的模型, 釆用了部分GoF的设计模式进行编码与开发。 第2章Android程序设讣相关技术槪述 Android程序设计相关技术概述 Android作为一个移动设备的平台,其软件层次结构包括了一个操作系统 (OS),中间件(Middleware)和应用程序(Application)o根据Android的软件 框图,其软件层次结构自下而上分为以下儿个层次: Applications Ho
19、me Conucu Phone Browser Application Framework Activity Manager Window Mmager Contes Providers View Syttem PacJaje Manager Telephony Minajer Resource Marager Locaoon Manager Nocdicaoon Manijer Surface Manager OpenGL|ES Libraries Mfda Framework Freelype SSL SQLite WebKit Android Runtime Core Libraries
20、 “叫斶血笳L Machine Linux Kernei Display Dnver Keypad Driver Camera Driver WiFi Driver Huh Memory Driver Aucfo Driven Binder (PC) Driver Power Management 图2.1 Android系统架构 2.1 XUL界面布局 XUL是一种基于XML的语言,因此需要对XML (特别是XML名称空 间)很熟悉。XUL是英文“XML User Interface Language”的首字母缩写。顾名 思义,它是一种应用XML来描述使用者界面的标示语言。 2.2 Andr
21、oid 的 Activity 组件 Activity, 一般代表手机屏幕的一屏,相当于浏览器的一个页面。在Activity 中添加view,实现应用界面和用户交互。一个应用程序一般山多个Activity构成, 这些Activity之间可互相跳转,可进行页面间的数据传递。每个Activity都有自 己的生命周期。 第2章Android程序设讣相关技术槪述 2.3 SQLite数据库 在Android平台上,集成了一个嵌入式关系型数据库一SQLiteo SQLite是支 持结构化查询的轻量级数据库,能很好得适应于移动设备的应用。 Android提供了一个名为SQLiteDatabase的类,该类封
22、装了一些操作数据库 的API,使用该类可以完成对数据进行添加(Create)x查询(Retrieve)、更新(Update) 和删除(Delete)操作(这些操作简称为CRUD)o 2.4 XMPP 协议 1. 什么是XMPP XMPP (可扩展消息处理现场协议)的前身是Jabber, 一个开源形式组织产 生的网络即时通信协议。具有即时信息传输以及在线现场探测的功能。 2. XMPP的基本网络结构 XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任 意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路 山功能。网关承担着与异构即时通信系统的互联互通,异构系统
23、可以包括SMS(短 信),MSN, ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器, 然后在之上传输XMLo 3. XMPP通过TCP传输的数据 XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了 XML 格式的纯文本。XMPP的核心部分就是一个在网络上分片断发送XML的流协议, 这个流协议是XMPP的即时通讯指令的传递基础。 2.5 Android 2D 形编程 1、Simple Graphics in View:就是直接使用Android已经实现的一些画图操作, 比如说images, shapes, colors, pre-defined animation
24、等等。这种方式只能画静态 或者极为简单的2D图画,对于实时性很强的动画,高品质的游戏都是没法实现 的。2、Canvas:首先我们要明口这个Canvas是一个2D的概念,是在Skia中定 义的。也就是说在这个方式下还是说的画2D图形。 2.6 MVC模式简介 整个系统釆用了 MVC模式进行设il oMVC模式是一种流行的软件设计模式, 它把系统分为3个模块:模型(Model)、视图(View)和控制器(Controller)o 各个模块的功能说明参见表2.1 第2章Android程序设讣相关技术槪述 表2. 1 MVC的三个模块 MVC模块 描述 模型 代表应用程序状态和业务逻辑 视图 提供可交
25、互界而,向客户显示模型数据 控制器 响应客户的请求,根据客户的请求来操纵模型,并把模型 的响应结果经由视图展现给客户 各个模块之间的相互作用如图2.2所示。釆用MVC模式有很多好处:一是 能将显示、逻辑和数据分开,某一方面的改变不会影响另一方面;其次是可以在 不更改视图显示的情况下,更改控制器,以达到更改视图与用户交互的响应模式 的目的。 图2.2MVC模型图 第3章系统的分析与实现 第3章系统的分析与实现 游戏对用户界面的要求较高,需达到人性化:美观大方、便于操作,个性化: 游戏界面时尚靓丽、别具一格,最好能做到自定义皮肤之类的。本游戏是使用即 时通讯协议进行通信的,所以,实时的游戏效果、即
26、时聊天以及在线探测是必须 做到用户体验良好的。数据存储方面,需存储游戏的配置信息.对局的胜负信息、 对局的过程信息。 3.1系统分析 本系统的定位是:cnChess中国象棋手机游戏是运行在Android开源手机操作 系统平台上的支持双人联网对战的一款手机游戏。 山于对国际国内3G移动应用的前景看好,另外也对游戏开发有很大的兴趣, 决定开发一款基于Android手机操作系统的中国象棋手机游戏。 结合当前移动开发的形式,初步构想之后,定下“基于Android手机操作系 统的中国象棋游戏应用”应该是这样一款休闲游戏:以3G方式连入互联网;支 持双人之间的游戏互动;支持即使聊天以及在线探测;支持游戏过
27、程记录及回放; 支持人机对战;游戏界面布局人性化、个性化;支持紧急事件处理(如电话打入、 电池没电等)。可能的话,进行WiFi编程,实现“局域网”对局。 3.1.1系统功能分析 本系统的基本功能主要有三大块: 即时聊天:方便玩家的交流学习; 象棋对弈:游戏的联网互动以及即时性,是本程序与一般的象棋游戏的 不同; 战绩统计:用于统计玩家的对弈胜负情况。 详细的系统功能分析图如图3-1所示。 第3章系统的分析与实现 中国象棋手机游戏, 关 于 5退出游腹 图3-1 cnChess系统功能结构图 421开发商信恳孕 本系统的执行流程较简单,进入系统后有五个选项:联网对局;XMPP设置; 查看胜负情况
28、;查看开发者信息及用户帮助信息;退出游戏。在联网对局前,XMPP 连接设置必须是已经配置好的,否则无法连接jabber服务器,不能进入对局界面。 系统主要的输入输出及模块间的调用情况用IPO图表示如图3-2: 图3-2 cnChess IPO图(输入一处理一输出图) 3.1.2系统流程分析 系统流程分析是软件丄程图表(例如流程图、判定表等)辅以必要的说明来 第3章系统的分析与实现 表示本程序的逻辑流程。本系统釆用XMPP协议进行网络的连接、数据的交换。 站在用户的角度来看,用户之间的信息交流是端对端的;但是站在程序设计开发 者的角度来看,数据其实是要经过jabber服务器的。 从设讣开发者的角
29、度描述系统的数据交互模式,如图3-3o I棋僧 M): I . XMPPClicnl. Umpire. 散笃代 KU |Manascr 刈 切 員册;Q化的请以來惮说検型 图3-3系统交互模式图 3.1.3系统数据流分析 cnChess手机游戏系统需要储存的主要数据有XMPP网络连接的配置信息以 及走棋的胜负信息。系统的数据流图如图34所示。 数据査询 I 通知数据变化 模型(M): XMPPClient、Umpire4 Manager 类 般据客户的请求来操纵模型 图34系统数据流图 3.2系统数据库设计 3.2.1系统ER图 系统使用SQLite轻量级数据库进行数据的储存和管理。用户可根据
30、自己的需 第3章系统的分析与实现 要进行XMPP网络连接的配置以及胜负情况的查看和清空。系统的E-R图如图 3-5所示。 图3-5系统E-R图 3.2.2数据库表设计 本程序釆用轻量级数据库SQLite存储管理数据,数据库名称为Datas.db。 Datas.db数据库含有两张表,两张表的名称以及字段属性等定义如下: scoreTable (id,winning,falling,peace),对局得分表主要用来储存对局的胜负信息; settingsTable (id.host,port,service,partnered,userIDjiserPWD),网络连接配置表主 要用来储存XMPP网络
31、连接配置。 3.3面向对象的系统设计 本系统使用面向对象的开发思想、UML建模方法、MVC三层架构、GoF的 部分设计模式编码设计开发,便于后续的软件扩展。下面将从系统文件组织结构, 系统用例图,系统类图以及系统三个角度对系统进行设计方面的说明。 3.3.1系统文件组织结构 一个 Android 程序由 Android Library、src、Referenced Libraries res AndroidManifest.xml 组成。其中 Android Libraiy 为 Android 系统类库,src 内为程 丿了:员的代码包,Reserenced Libraries为第三方开发包,
32、res为程序所要用到的资源 (如图片,音视频文档,界面布局xml文档等)存放的文件夹,AndroidManifest.xml 为程序的主配置声明及版本说明文件。本系统的简要文件组织结构如图3-6所示。 10 第3章系统的分析与实现 W罗 crh 二、用户选择聊天菜单,startGame进行相应的逻辑处理,启动聊天对话 框;用户输入聊天信息,按下发送按钮,消息发送到对方的服务器 帐号,与此同时,在用户自己的聊天记录单里面显示; 三、用户进行走动棋子或者悔棋等请求信息,startGame接收到按键事件 或者触摸屏事件后,将相应的信息转交XMPPClient进行信息的发 送;XMPPClient还负
33、责客户端监听,当有对方有走棋等信息发送过 来时,XMPPClient将分辨是否为cnChess程序格式的信息并进行解 码解包之后将信息转交给startGame, startGame对转交过来的信息 进行处理。 图3-10 startGame用例的顺序图 14 第4章模块的实现 第4章模块的实现 需求分析阶段回答了H标软件系统“要做什么”的问题,而软件设计阶段则 需要回答LI标软件系统“要怎么做”以实现用户需求的问题:。 在cnChess手机游戏系统的软件设计建模阶段,主要是以需求分析阶段的成 果(需求分析模型)作为输入,进行系统的体系结构设计、类的详细设计和用例 实现设计。总体来说,cnChe
34、ss系统的软件设计建模阶段是对分析建模结果的进 一步精化和调整。 图4lcnChcss的项目开发流程 项目要实现的模块主要有四部分。 第一部分是手机游戏的界面设计和背景音效的设计。和PC上的游戏开发有 些许不同,手机游戏更加的注重用户体验,一个人性化的、时尚靓丽的游戏界面 和优美个性化的音效设计是一个成功的手机游戏要达到的基本要求。 第二部分是手机之间的通信模块设计。3G时代,手机通信受流量的限制很大, 所以必须尽可能的使用简洁的通信协议,减少数据的流量,减少用户的通讯资费; 再者,双人对局这样的在线游戏,必须体现其即时性,在一方因为电话打入或其 他原因导致游戏挂起或掉线时,另一方能及时得知道
35、对方的状态,以便做出处理。 另外,为了增加游戏的互动性,项目提供了即时聊天的功能。 第三部分是对局智能程序的设计。在没有朋友在线的情况下,可以和设计好 的Al (Artificial Intelligence)算法进行游戏。人工智能程序设计是一项对算法要 求很高的程序设计,特别是在手机这种硬件资源紧缺的环境中,更是需要一个高 效的算法来提供强大的AI对局支持。 第四部分是逻辑控制模块的设计。当有紧急事件(如电话打入,电池没电等) 发生时,需全局模块对当前的游戏状态进行保存或退出等处理,并发送相关信息 给对局的伙伴;用户通过触摸屏进行走棋,棋子的走动规则山软件进行智能规则 判断;对局结束,软件将
36、对对局的过程及结果使用与国际接轨的棋谱记录格式 15 第4章模块的实现 (PGN, FEN)进行记录,在对局结束后,用户可用软件读入PGN格式的对局过 程文件,进行战局的回放。 软件采用面向对象的编程思想进行构思设计,使用UML设计软件的模型, 采用了部分GoF的设计模式进行编码与开发。 4.1 MVC分层结构 在cnChess系统的设计建模阶段,是回答如何实现系统功能的问题,主要完 成软件体系结构设计和详细设计两个方面的工作。 软件体系结构设计是高级设计,主要包括以下步骤: (1)体系结构的层次划分。 (2)体系结构的子系统划分。 (3)建立三层体系结构与类之间的映射关系。 详细设计中首先要
37、详细描述每一个类,包括类的属性.操作.类之间的关系, 同时对系统用例进行设计。详细设计包括如下内容: (1)设计实体类的属性和操作。 (2)设计边界类的功能组成和操作。 (3)设计类之间的关系。 (4)构造设计类图模型。 (5)借助交互图实现用例设计。 (6)数据模型的设计。 (7)实现模型的设计。 (8)设计建模的评审。 本系统使用MVC设计模式W进行体系的基础架构,如图4-2所示: 数据査询 I 通知数据变化 模型(M): XMPPClient Umpire Manager 类 根据客户的请求來操纵模型 图4-2 cnChess的MVC三层架构 Android 应用程序的一般架构为:Vie
38、ws + Content Providers + Resource Manager + Notification Manager + Activity Manager ,你可以选择其中的若干项作 16 第4章模块的实现 为你应用的架构元素。 系统的项目文件组织结构如图43所示,其中: 源代码包中的View类和Dialog类以及res资源文件夹中的所有XML文件, 充当视图的角色,负责手机界面的显示和与用户的交互;cnChess,startGame两个 类充当“ C ”的角色,重要控制程序界面的切换和信息的分发; BoardView,Umpire,XMPPClient分别是棋盘类、裁判类、信息收
39、发类,充当模型的 角色,分别负责棋盘模型的显示与更新、裁判对象模型的建立、即时信息通信模 型的建立;DataManager,SettingsManager两个类负责与SQLite数据库的沟通, 分别负责战绩胜负次数、XMPP联接设置的数据存取。 十住 cnChess Android Library E!品 android.jar - C: AhdSdkandroid-sdk-windows-1.11 审 edusoFt.jxnuunchess 国 田 playing E-0 AnswerDialog.java 由 jj Board View, java 由“Hl Chat Dialog, ja
40、va 囱 国 cnChefs.java 田company I nF oj 3) 表的创建与删除、记录的添删修:数据的存取都是通过系统API接 口中的execSQL()函数来完成的,例如:当需要删除scoreTable这张 表,语句为db.execSQL(sql), db为所要操作的数据库的句柄,sql为 所要执行的语句。 Manager的这两个类有些类似JavaBean,是为了保证数据的安全、完整、一 致,其他类必须通过数据库Manager类才能与SQLite数据库进行沟通,完成对数 据的操作。 实践编程难点在类Umpire、Manager,由分析设计的结果生成各模块的详细 编码单元以及各类的
41、模型。Umpire是裁判员类,主要用于判断棋子走动是否规则、 对弈的胜负结果。系统源码包中,带Manager后缀的都是属于数据管理相关类。 Manager 类主要调用系统 API 如 android.database. * 或者 android.database.sqlite. * 进行数据的存取。如图4-6所示,各类作用相关作用如下: 图4-6查看战绩、连接设置以及走棋模块的类图 19 第4章模块的实现 本程序釆用轻量级数据库SQLite:33存储管理数据,数据库名称为Datas.db。 Datas.db数据库含有两张表,scoreTable表用来储存对局的胜负信息, settingsTab
42、le用来储存XMPP网络连接配置。 表4-1 scoreTable存储对局的胜负信息: 字段 含义 数据类型 是否为空 初始值 id 记录的编号 Int 否 0 winning 获胜次数 Int 否 0 falling 失败次数 Int 否 0 peace 平局次数 Int 否 0 表4-2 settingsTable存储XMPP的连接设置: 字段 含义 数据类型 是否为空 初始值 id (PK) 记录的编号 Int 否 0 host 服务器地址 String 否 Talk google com port 服务器端口 Int 否 5222 service Jabber服务 提供商 String
43、 否 Gmai1. com partnerID 对手gmail 帐号 String 否 examplegmai1. com userID 用户gmail 帐号 String 否 example2gmai1 com userPWD 用户密码 String 是 123456 4.4数据传输模块 数据传输模块有两个类,很多算法及技术难点都需要用到笫三方开发包 20 第4章模块的实现 smack.jar中的XMPP组件及其API完成,模块说明如下: ConnectDialog用来连接或者断开XMPP网络连接,当连接上服务器后,启 动对局模块,进行游戏; XMPPClite接受startGame模块转交
44、过来的数据,在信息分类、格式化、加 密后,发送给网络中的jabber服务器;同时,监听服务器发送过来的cnChess格 式化数据,解密、解包分类后转交给startGame模块;另外,也监听对手的在线 状态等信息,以便在发生突发情况时进行相应的处理,从而真正的达到即时游戏 的效果。 系统在进行联网对局前,必须对网络连接进行有效的配置。游戏的网络连接 配置UI界面以及各配置项的说明如图4-7及表4-3所示,配置信息的数据存储流 程图如图4-7所示。 D ttBSOio4iAM use the default setting. Hort/Port: Serzce: PartnerlD: userID
45、: example2gmaiLcom Pas/wrd: el 图4-7 SettingsDialog对话框输入项 游戏连接配置对话框各输入项的详细定义如表4-3所列。 表4-3 XMPP设置界面各项目详细左义 标识 名称 数据类型 数据值有效 范围 输入媒体 安全保密条件 UserID 用户Gmail 帐号 String *gmai1 com SettingsDia log SQLite限制访问 Password 用户密码 String * SettingsDia log SQLite限制访问、MD5 加密 PartnerlD 对方Gmail 帐号 String *gmai1 com Sett
46、ingsDia log SQLite限制访问 21 第4章模块的实现 Host 提供IM服务 的主机 String talk google com SettingsDia log SQLite限制访问 Port 提供IM服务 主机的端口号 Int 5222 SettingsDia log SQLite限制访问 Service 所用的服务 类型 String gmai1 com SettingsDia log SQLite限制访问 系统使用SQLite数据库,若无游戏配置信息或者配置信息无效,系统将提示 进行正确的网络连接配置,并对正确的配置进行存储。配置信息的存储数据流程 图如图4-8所示。
47、愉入数抵 XMPP设垃处理 存入数据 荻看数抵 读取数据 图4-8 XN1PP网络连接设置数据流程图 为保证用户手机之间数据传输中各类数据的区分,系统在数据发送前需对各 类数据信息进行一定的格式化,待数据信息到达对方的手机后,系统再进行相应 的解包。另外,为保证数据在网络间传输的安全性,在手机发送信息至互联网这 一段使用了 smack.jar类库中的加密函数。 未格式化聊天信息 用尸 显示信息 XMPP客户端: 聊天信息的发送 与接收处理 聊天对话框:聊 天信息的输入与 显示处理 解包后的聊天信息 图4-9 Chat聊天模块数据流程图 4.5对局模块 对局模块是本系统设计编码中较复杂,内容比较
48、多的一个模块。主要有以下 子模块: 1) startGame:用来启动对局、网络连接以及对各局子模块进行协调; 2) Umpire:裁判类,定义走棋规则,用来控制走棋的顺序以及对弈双方的 22 第4章模块的实现 同步,判定对局的胜负; 3) AnswerDialog:回话类,回答对方的对局请求等信息; 4) ChatDialog:对话聊天类,走棋的过程中,用来启动对话框以和对方进行 即时聊天; 5) RestorePoint:用来记录游戏过程中的一定走棋记录,创建还原点,以方 便悔棋时,棋盘上棋子的回滚; 6) companylnfo:用来显示开发商信息以及用户帮助信息的UI类; 7) Err
49、orDialog:用来显示游戏过程中出现的错误信息; 8) ExitGameDialog:用来结束游戏进程,包括游戏相关的各线程; 9) smack.jar:第三方开发包,提供XMPP服务接口,数据加密等功能。 对局模块主要处理的是用户之间对弈的过程同步、规则控制等信息。 用户走棋,产生走棋信息,系统捕获到按键事件或者触摸屏事件后,会进行 数据的分类以及格式化,然后加密发送到对手的手机中。 在接收到对手发来的走棋信息时,系统则先通过smack.jar类库进行解密,然 后解包,进行走棋信息的逻辑处理,最后通过界面显示类呈现于用户的手机屏幕。 图410走棋模块数据流程图 对弈过程中,可打开聊天框与
50、对手进行即时聊天。聊天框如图411所示。对 局的棋盘界面以及菜单的设置显示如图412所示。 HeBo.xca* Send QhflBa 10:41 AM (kafSC iidt chat dialog box YES I hi、Ercxrdiu i、uiriu XMKF* proluul You are chatting with sol onemo 图4-11 chatDialog对话框输入项 23 QQ8DO 3:45 AM Mdy with you friends :用妹伯!T:orwrcr for your START request 认5 认检 退出 图4-12 startGame对
51、弈界而 第4章模块的实现 4.6 XML界面布局模块 cnChess系统使用XML进行游戏界面的基础布局,主要有以下布局界面, 各界面的布局内容以及与各Java类的映射关系为: 1) answerdialogbox.xml:回复对话框的界面布局; 2) chatdialogbox.xml:聊天对话框的界面布局; 3) companyinfo.xml:显示开发商信息以及用户帮助文件; 4) errordialog.xml:错误信息提示框布局; 5) exitgame.xml:退出游戏提示框: 6) main.xml:游戏主界面布局; 7) settings.xml:游戏XMPP连接配置界面布局;
52、 8) staitgame.xml:游戏对局界面布局: 9) sure_connect.xml:确认进行网络连接对话框布局; 10) toconfirm.xml:确认回复对方请求的对话框布局; 11) viewscore.xml:査看战绩界面布局。 图4-13为res文件夹下layout (界面布局资源)的文件组织结构。 arswerdialocbox.xml 溢res 由耳drawable 曰鉛hyout (?) chat_main.xml 血 chatdiabgbo:.xml 因 ccmparyinFo.xml 曲 erfordialog.)(ml “曲 exitgame.xrri IE)
53、 main.xml k-JRl multiJineJisLjtem.xml ;区I settings.xml i2) startgame.xml 力 sire_connect.xml : toconfirm.xrri 21 viewscore, xml (3 凸 values Cl AndroidManifest.xml 图4-13 XML界而布局文件 4.7系统中关键技术的应用及实现 4.7.1 SQLite3 的应用 SQLite是集成在Android平台上的嵌入式关系型数据库。它是一个支持结构 化存储、查询轻量级开源数据库。SQLite3支持的数据类型有NULL、INTEGER. 24
54、第4章模块的实现 REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支 持的类型虽然只有五种,但实际上sqlite3也接受varchar(n) char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型。 在Android系统,为我们提供了一个名为SQLiteOpenHelper的类,该类用于 对数据库版本进行管理,该类是一个抽象类,必须继承它才能使用。 为了实现对数据库版本进行管理,SQLiteOpenHelper类有两种重要的方法, 分别是 onCreate(SQLiteDatabasedb)和 onUpgrade(
55、SQLiteDatabase db, int oldVersion, int newVersion)o 在项LI的实现过程中:DataManager.java和SettingsManager.java两个类都是 通过调用Android的SQLiteOpenHelper类对SQLite数据库进行数据库以及其中的 数据进行创建、修改和删除。 4.7.2 XML界面设计 在本系统的软件设计开发过程中,xml的布局是最先开始的。 Android的界面力,需要写在res/layout的xml里面,一般情况下一个xml对 应一个界面。做android的界面有点像写html(连注释代码的方式都一样),要先给
56、 android定框架,然后再在框架里面放控件,android提供了儿种框 架 ,AbsoluteLayout,LinearLayout,RelativeLzayout,TableLayout,FrameLayout.FrameLa yout:里面只可以有一个控件,并且不能设计这个控件的位置,控件会放到左上角 LinearLayout:里面可以放多个控件,但是一行只能放一个控件 TableLayout:这个要和TableRow配合使用,很像html里面的table AbsoluteLayout:里面可以放多个控件,并且可以自己定义控件的x,y的位置 RelativeLayout:里面可以放多个
57、控件,不过控件的位置都是相对位置(界面的 布局好像还可以直接引用一些view,如ScrollView等)框架的xml 如下: android:id=H+id/widget36H android:layout_width=HfiH_parentH android: layout匸 ”fill_parent” 上面代码中以andioid:开头,表示控件的属性,fill_parent是系统自带参数, 表示最大的宽或高,还有一个wrap_content,表示刚好合适的宽或高。除了上面 的三个属性外,还有一些其他的属性,如android:background= “#FF0000FF”,设 置框架的背景色
58、,androidrientation= “ verticaln用来设置这个框架里面的走向属性。 框架弄好,就可以在里面添加控件了,控件的基本写法也和框架一样,后面 用到的时候将具体研究各个控件的细节。 4.7.3 cnChess的2D图像编程 本系统的2D图像编程主要用于对局模块中棋盘、棋子、选择框、提示信息 等图像元素的更新。 SGL编程是本系统设计中的难点,在系统的开发过程中主要使用了 Android 系统类库中的2D图形库接口,达到了预期的效果,实现了项目的H标。 25 第4章模块的实现 通过使用Android提供的2D画图API,程序员能一笔一划或者使用Graphic 来画所需要的东西
59、了,要画什么要显示什么都完全可控。这种方式根据环境还分 为两种:一种就是使用普通View的canvas画图,还有一种就是使用专门的 Surface View的canvas来画图。两种的主要是区别就是可以在Surf ace View中定义 一个专门的线程来完成画图工作,应用程序不需要等待View的刷图,提高性能。 前面一种适合处理量比较小,帧率比较小的动画,比如说象棋游戏之类的;而后 一种主要用在游戏,高品质动画方面的画图。 本系统使用的是前一种图像处理方式,系统棋盘棋子以及对局信息的绘制、 棋盘的显示更新等图像处理部分主要使用了系统API中的android.graphics.*类库 进行处理。 在本项中,BoardView类主要是做棋盘模型的构建、更行以及图像方面的 处理工作。下面简要介绍下在本项LI的开发中,是如何构建棋盘模型以及如何实 现棋盘图形的重绘。 1)模型构建:棋盘的模型实际上是一个int109的二维数组,二维数组中 每一个数值代表棋盘上相应十行九列交叉点上的棋子代码。象棋一共32 个棋子,每个棋子的代码从1至32不等,棋盘网格线上没有棋子的交叉 点代码为0。对弈模块初次启动或者对弈完一局后,将进行棋盘的数学模 型以及手机屏幕上棋盘、棋子的初始化,初始化后的棋盘数学模型如图 4-14所示。 public void initChess() point = new int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 并发编程的挑战与解决方案的试题及答案
- 经济适应能力对政策执行的影响试题及答案
- 软件设计师考试考点回顾试题及答案
- 2025年技术员考试重点复习方法试题及答案
- 信息处理技术员的实战试题及答案
- 年度财务预算的制定与执行计划
- 计算机信息处理科技发展试题及答案
- 2025年法学概论考试的法律实践与试题及答案
- 软件水平测试的成功策略试题及答案
- 2025租赁合同范本常用版
- 保安定期开展心理健康培训
- Ceph之RADOS设计原理与实现
- 农行超级柜台业务知识考试题库(含答案)
- 免疫治疗免疫相关不良反应的处理PowerPoint-演示文稿
- 研究生英语翻译答案
- GB 15607-2023涂装作业安全规程粉末静电喷涂工艺安全
- 手表买卖合同协议书
- 2023门面装修合同范本
- DB34-T 4170-2022 软阔立木材积表
- 汽车租赁有限公司车队及车辆管理制度
- 2022公务员录用体检操作手册(试行)
评论
0/150
提交评论