基于Android操作系统的中国象棋手机游戏Word格式.docx
《基于Android操作系统的中国象棋手机游戏Word格式.docx》由会员分享,可在线阅读,更多相关《基于Android操作系统的中国象棋手机游戏Word格式.docx(27页珍藏版)》请在冰豆网上搜索。
本论文的前半部分将简要介绍系统相关的行业信息及基础的技术知识,后半部分将对本人在系统各模块中所使用的关键技术的实现进行了全面的介绍。
关键词:
联网对弈;
中国象棋;
手机游戏;
Android平台0
ABSTRACT:
CnChessisaChineseChessgamethatrunningontheAndroidplatform.Itsupportmanyofthefeaturessuchasplayinggamesthroughthenetwork,real-timechat,andplaychessrecordsofcasualmobilegames.0
TheCnChessgameisobject-orientedprogrammingdesignandanalysisoftheideaofthinking;
buildsoftwaremodelsusingUML;
useofMVCarchitecturepatternstoachievetheoverallsystemandtheinterfacebetweenthemoduledesigns;
inpracticethesystemalsousessomeoftheGoF'
sdesignpatternstocodinganddevelopment.0
ThispapersystematicallyexpoundedintheAndroidplatform,theapplicationofMVCpatternandhierarchicalstructureofobject-orientedsoftwaredevelopmentthoughtscnChessgamesystemanalysis,designandimplementationprocess.Practiceinthecourseoftheproject,mainlyusedinthefollowingtechnologies:
cellphonesprimarilyuseXMLlayoutdesign,processandlifecyclemanagementsub-moduleusestheActivityprocesscontrol,datastorageareasusingalightweightdatabaseSQLite,netwrokcommunicationSomeusetheXMPPinstantmessagingprotocolfordatatransmission,publicdebateoftheframeusingamobilephone2Dgraphicsprogramming.Thefirstpartofthispaperwillbrieflyintroducethesystembasedonrelevantindustryinformationandtechnicalknowledge,thelatterpartofeachmoduleinthesystem;
Iwillbeinthekeytechnologyusedintherealizationofacomprehensiveintroduction.0
Keywords:
Networkofgames;
Chinesechess;
MobileGames;
Androidplatform0
目录0
一、前言………………………………………………………………….…40
1.1绪论……………………………………………………………..…40
1.2相关研究综述……………………………………………….….…40
Androi.d手机操作系统的发展历程…………….……………..….40
1.3研究的目的与内容……………………………………………..…50
1.3.1研究目标…………………………………………………….…50
1.3.2研究主要内容………………………………………………….50
二、Android程序设计相关技术概论…………………………………..60
2.1XUL界面布局……………………………………………….….60
2.2Android的Activity组件……………………………………60
2.3SQLite数据库………………………………………………….70
2.4Android2D图形编程…………………………………………70
三、游戏所需类的分析与实现…………………………………………60
3.1游戏的框架简介…………………………………………..……80
3.2各个类的简要介绍…………………………………..…………80
3.3游戏中象棋规则类的实现………………….…………….….100
四、论文总结……………………………………………………………270
五、参考文献……………………………………………………………280
致谢………………………………………………………………………...290
一、前言0
1、绪论0
随着3G移动网络应用的推广,手机游戏的规模、复杂程度日益增强;
其技术手段、设计思想、系统体系结构都发生了深刻的变化。
手机操作系统正朝着高处理能力、多功能、智能化的方向发展。
近年来,网络文化市场发展很快,随着互联网的迅速普及、宽带的接入社区和家庭,我国网络游戏市场发展迅速并进入了一个高速增长期,并已经创造了较大的产值,带动了相关产业的发展。
如今网络上的提供免费中国象棋游戏,大多数是单机版的,界面单一,功能单一。
本系统将实现在网络上对战的中国象棋功能;
还对在下棋界面美化,以及下棋中可能出现的意外进行了处理。
这样中国象棋休闲游戏将不在是一个功能单一界面枯燥的游戏,而是一个较完善的休闲游戏。
在国内外Android手机应用开发如火如荼、日益盛行的大背景下,本人决定开发一款界面友好、操作简单,支持人机对弈、数据记录、智能规则判断的手机休闲游戏。
2、相关研究综述0
近年来,国内外的专家学者以及一线的开发人员从理论、方法、技术等不同的角度对Android手机操作系统进行了一定的研究。
本小节将从Android手机操作系统的发展历程、研究现状、程序开发设计简介四个方面分析总结国内外的相关研究结果2.1Android手机操作系统的发展历程0
Android是Google于2007年11月5日宣布的基于Linux平台开源手机操作系统名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
表2.1Android手机操作系统的发展阶段0
发展阶段
阶段特征
2007.11.5
Android平台发布
2008.9.22
T-Mobile
2009年1季度
G1销售100万台
2009.3
MWC华为发布Android手机,Moto,三星,LG计划2009年下半年推出Android手机
2009
获得Orange,Vodafone,O2,Telefonica支持
进军上网本
3、研究的目标与内容0
3.1研究目标0
本项目主要研究的目标分为:
程序设计思想实践改进目标、Android平台手机开发技术的研究目标。
(1)运用面向对象的编程思想统一过程,对Chess中国象棋手机游戏的系统结构、过程、功能等要素进行可视化的描述,为Android程序设计的可视化提供方法、技术上的支持,为系统的理论模型和软件建模提供参照。
(2)本系统中使用了多种基于Android平台的软件开发技术,根据要实现的系统功能,系统需要使用到的技术及技术研究的目标主要有:
手机游戏用户界面的人性化、个性化界面布局,给用户以良好的游戏体验;
移动设备上的图形编程,提供流畅靓丽的游戏过程界面;
3.2研究主要内容0
项目研究的内容主要有以下二大块:
第一部分是手机游戏的界面设计和背景音效的设计。
和PC上的游戏开发有些许不同,手机游戏更加的注重用户体验,一个人性化的、时尚靓丽的游戏界面和优美个性化的音效设计是一个成功的手机游戏要达到的基本要求。
第二部分是对局智能程序的设计。
可以和设计好的AI(ArtificialIntelligence)算法进行游戏。
人工智能程序设计是一项对算法要求很高的程序设计,特别是在手机这种硬件资源紧缺的环境中,更是需要一个高效的算法来提供强大的AI对局支持0
二、Android程序设计相关技术概论0
Android作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS),中间件(MiddleWare)和应用程序(Application)。
根据Android的软件框图,其软件层次结构自下而上分为以下几个层次:
图2.1Android系统架构0
2.1XUL界面布局0
XUL是一种基于XML的语言,因此需要对XML(特别是XML名称空间)很熟悉。
XUL是英文“XMLUserInterfaceLanguage”的首字母缩写。
顾名思义,它是一种应用XML来描述使用者界面的标示语言。
0
2.2Android的Activity组件0
Activity,一般代表手机屏幕的一屏,相当于浏览器的一个页面。
在Activity中添加view,实现应用界面和用户交互。
一个应用程序一般由多个Activity构成,这些Activity之间可互相跳转,可进行页面间的数据传递。
每个Activity都有自己的生命周期。
2.3SQLite数据库0
在Android平台上,集成了一个嵌入式关系型数据库—SQLite。
SQLite是支持结构化查询的轻量级数据库,能很好得适应于移动设备的应用。
Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。
2.4Android2D图形编程0
1、SimpleGraphicsinView:
就是直接使用Android已经实现的一些画图操作,比如说images,shapes,colors,pre-definedanimation等等。
这种方式只能画静态或者极为简单的2D图画,对于实时性很强的动画,高品质的游戏都是没法实现的。
2、Canvas:
首先我们要明白这个Canvas是一个2D的概念,是在Skia中定义的。
也就是说在这个方式下还是说的画2D图形。
图2.2游戏流程图0
三、游戏所需类的分析与实现0
3.1游戏的框架简介0
图5.1游戏的类框架0
按照程序运行的顺序介绍各个类的作用以及整个运行框架,步骤如下:
(1)启动游戏,首先被创建的是ChessActivity,而在ChessActivity中首先将用户界面显示成欢迎界面WelcomeView。
(2)在显示欢迎界面的同时,启动WelcomeViewThread线程生成欢迎界面动画。
(3)当玩家单击“菜单”按钮时将进入菜单界面MenuView,在菜单界面会根据玩家的不同选择执行不同的操作。
(4)当玩家单击“帮助”菜单时,将进入帮助界面HelpView。
(5)而当玩家单击开始游戏菜单时,进入的将是游戏界面GameView,进入游戏界面的同时启动TimeThread线程计算玩家的思考时间。
(6)当玩家或者电脑走棋时,会根据规则类GuiZe进行判断,然后产生一个走法ChessMove。
(7)当游戏过程中,玩家同样可以随时单击“退出”按钮来返回到菜单界面。
3.2各个类的简要介绍0
(1)共有类0
Activity的实现类ChessActivity,该类是通过扩展基类Activity得到的,是整个游戏的控制器,也是整个游戏程序的入口。
(2)辅助界面相关类0
欢迎界面类WelcomeView:
该类为游戏欢迎界面的实现类,主要负责欢迎界面的绘制工作。
欢迎界面动画生成类WelcomeViewThread:
该类是为欢迎界面服务的,主要是通过更改欢迎界面中图片的坐标来实现动画效果。
帮助界面类HelpView:
该类为帮助界面的实现类。
菜单界面类MenuView:
该类为菜单界面的实现类,负责绘制菜单界面以及对菜单界面的屏幕进行监听。
图3.2.1欢迎界面0
(3)游戏界面相关类0
游戏界面类GameView:
该类为游戏程序中最重要的类,负责绘制游戏过程中所有的信息,如棋盘、棋子、各个按钮以及胜利或失败菜单等。
象棋规则类GuiZe:
该类是象棋规则的实现类,其中包含所有棋子的走棋规则以及当前棋牌某方的所有可能走法。
思考时间线程TimeThread:
该类为计算思考时间的线程类。
走法类ChessMove:
该类为棋子的走法的封装类,包含棋子的名称、出发点以及目标点。
图3.2.2游戏界面0
3.3游戏中象棋规则类的实现0
packagewyf.ytl;
importjava.util.ArrayList;
//引入相关包0
importjava.util.List;
/**0
*0
*该类是象棋的规则类,其他类通过调用canMove方法给出起始位置与结束位置0
*其他类通过调用searchAGoodMove方法得到最当然棋局最好的走法0
*而其中的allPossibleMoves方法得到的是当前棋局的所有的走法0
*/0
publicclassGuiZe{0
booleanisRedGo=false;
//是不是红方走棋0
publicbooleancanMove(int[][]qizi,intfromY,intfromX,inttoY,inttoX){0
inti=0;
intj=0;
intmoveChessID;
//起始位置是什么棋子0
inttargetID;
//目的地是什么棋子或空地0
if(toX<
0){//当左边出界时0
returnfalse;
}0
if(toX>
8){//当右边出界时0
if(toY<
0){//当上边出界时0
if(toY>
9){//当下边出界时0
if(fromX==toX&
&
fromY==toY){//目的地与出发点相同,0
moveChessID=qizi[fromY][fromX];
//得到起始棋子0
targetID=qizi[toY][toX];
//得带终点棋子0
if(isSameSide(moveChessID,targetID)){//如果是同一阵营的0
switch(moveChessID){0
case1:
//黑帅0
2||toX<
3||toX>
5){//出了九宫格0
if((Math.abs(fromY-toY)+Math.abs(toX-fromX))>
1){//只能走一步0
break;
case5:
//黑士0
if(Math.abs(fromY-toY)!
=1||Math.abs(toX-fromX)!
=1){//走斜线0
case6:
//黑象0
4){//不能过河0
if(Math.abs(fromX-toX)!
=2||Math.abs(fromY-toY)!
=2){//相走“田”字0
if(qizi[(fromY+toY)/2][(fromX+toX)/2]!
=0){0
//相眼处有棋子0
case7:
//黑兵0
if(toY<
fromY){//不能回头0
if(fromY<
5&
fromY==toY){//过河前只能直走0
if(toY-fromY+Math.abs(toX-fromX)>
1){//只能走一步,并且是直线0
case8:
//红将0
7||toX>
5||toX<
3){//出了九宫格0
case2:
//黑车0
case9:
//红车0
if(fromY!
=toY&
fromX!
=toX){//只能走直线0
if(fromY==toY){//走横线0
if(fromX<
toX){//向右走0
for(i=fromX+1;
i<
toX;
i++){//循环0
if(qizi[fromY][i]!
//返回false0
else{//向左走0
for(i=toX+1;
fromX;
else{//走的是竖线0
if(fromY<
toY){//向右走0
for(j=fromY+1;
j<
toY;
j++){0
if(qizi[j][fromX]!
=0)0
else{//想左走0
for(j=toY+1;
fromY;
case10:
//红马0
case3:
//黑马0
if(!
((Math.abs(toX-fromX)==1&
Math.abs(toY-fromY)==2)0
||(Math.abs(toX-fromX)==2&
Math.abs(toY-fromY)==1))){0
//马走的不是日字时0
if(toX-fromX==2){//向右走0
i=fromX+1;
//移动0
j=fromY;
0