毕业论文 基于java的手机游戏《中国象棋》的设计与实现.docx

上传人:b****5 文档编号:28419126 上传时间:2023-07-13 格式:DOCX 页数:74 大小:402.09KB
下载 相关 举报
毕业论文 基于java的手机游戏《中国象棋》的设计与实现.docx_第1页
第1页 / 共74页
毕业论文 基于java的手机游戏《中国象棋》的设计与实现.docx_第2页
第2页 / 共74页
毕业论文 基于java的手机游戏《中国象棋》的设计与实现.docx_第3页
第3页 / 共74页
毕业论文 基于java的手机游戏《中国象棋》的设计与实现.docx_第4页
第4页 / 共74页
毕业论文 基于java的手机游戏《中国象棋》的设计与实现.docx_第5页
第5页 / 共74页
点击查看更多>>
下载资源
资源描述

毕业论文 基于java的手机游戏《中国象棋》的设计与实现.docx

《毕业论文 基于java的手机游戏《中国象棋》的设计与实现.docx》由会员分享,可在线阅读,更多相关《毕业论文 基于java的手机游戏《中国象棋》的设计与实现.docx(74页珍藏版)》请在冰豆网上搜索。

毕业论文 基于java的手机游戏《中国象棋》的设计与实现.docx

毕业论文基于java的手机游戏《中国象棋》的设计与实现

 

毕业设计说明书

(2014届)

 

基于java的手机游戏《中国象棋》的设计与实现

 

 

摘要

作为国粹,中国象棋发展至今已有2000余年的历史了,它是中华民族智慧的结晶。

在我国,中国象棋的普及程度是其它棋类无法相比的,大至国际、国内比赛,小至社区街道。

如今,仅中国就有2亿人会下中国象棋,且中国象棋的发展趋势日益国际化。

  在信息技术飞速发展的今天,随着的手机日益普及,手机游戏也成了人们生活中不可缺少的一部分。

Java在移动设备上的功能实现也越来越具影响力,为丰富人们的生活,提供服务等方面提供了诸多方便。

本文主要介绍一款基于Java语言开发的手机游戏——中国象棋,该设计主要是应用J2ME技术,结合JDK,使用IDEEclipse3.4与EclipseMe1.7.9作为开发工具,以Sun J2ME Wireless Tool Kit 2.5.2软件作为模拟测试工具的综合性的开发设计。

本设计主要是对手机游戏的开发过程的各个环节做了详细的介绍,其中包括:

手机游戏开发平台的搭建与测试、具体设计及开发步骤、软件测试运行与打包生成等,实现了经典游戏——中国象棋的手机嵌入,以便满足一些手机用户的娱乐需求。

关键词:

中国象棋;J2ME;WTK;Eclipse;手机游戏

Abstract

AsthequintessenceofacountryforChina,ithaspassed2300or2400yearssinceChineseChessdeveloped.Otherchesscouldn’tbecomparedwithit’spopularizationinChina,fromlarge-internationalornationalcompetitiontosmallerpiecescommunitystreet.ItisthedistillateofChinesepeople’swisdom.Now,thereare200millionpeoplecanplayChineseChessonlyinChina.AndChineseChessisdevelopinginthewayofinternationalization.

In the day of rapid development of information technology, with the growing popularity of mobile phone, mobile games also become the indispensable part in daily life. Java in the function realization of the mobile device is also more and more influential for rich people's life and providing services offered many convenient. This paper mainly introduces a mobile game--snake of Java language development. This design is a comprehensive development design,which mainly applied 1.6.0 JDK J2ME technology, combined with the Eclipse, EclipseMe1.7.9 as 3.4 development Tool, Tool Kit to 2.5.2 from J2ME Wireless software as simulation test tools. This design is mainly to the mobile games every parts of the development process are described in detail, including:

 the cellular phone game development platform and testing, specific design and development steps, software test, operation and packaged generation. Realize the classic game –ChineseChess  phone embedded, in order to meet some cell phone users entertainment demand. 

Keywords:

ChineseChess;J2ME;WTK;Eclipse;MobileGame

2.1.1简单性……………………………………………………………………7

2.1.2面向对象…………………………………………………………………7

2.1.3多线程……………………………………………………………………7

2.1.4分布式……………………………………………………………………7

2.1.5体系结构中立……………………………………………………………7

2.1.6安全性……………………………………………………………………8

4.4.1va…………………………………………………………………………32

……………………………………………………………………..32

…………………………………………………………………...32

……………………………………………………………………32

……………………………………………………………………………….32

……………………………………………………………………………...32

……………………………………………………………………………...32

……………………………………………………………………….32

……………………………………………………………………………...36

第四章软件测试…………………………………………………………………………………38

4.1走子规则测试…………………………………………………………………………..40

4.2吃子规则测试…………………………………………………………………………..45

第一章绪论

面对未来的趋势,象棋发展现状令人担忧,职业化道路依然任重而道远。

如今科学技术十分发达,移动设备盛行,手机发张迅速,前景十分广阔,许多用户不太像从前依赖电脑,有些游戏可以手机上直接进行,而我认为将中国象棋也移植到移动app上可以为广大棋友提供方便,平时出门随时可以下。

本人作为一名学生,在系统的学习了Java语言之后,经常用它编一些小程序。

这次毕业设计,我就想将学过的Java语言中的各种技术综合起来,编写一个小游戏,既对自己学过的技能进行一次检验,也能系统地将学过的知识复习巩固。

1.1中国象棋

中国象棋是我国国粹,历史悠久,普及流行。

下棋双方根据对棋局形势的理解和对棋艺规律的掌握,调动车马,组织兵力,协调作战在棋盘这块特定的战场上,进行着象征性的军事战斗。

.棋盘和棋子:

象棋的棋子共三十二个,分为红黑两组,各十六个,由对弈双方各执一组,兵种是一样的,分为七种:

红方:

帅、仕、相、车、马、炮、兵

黑方:

将、士、象、车、马、炮、卒

其中帅与将、仕与士、相与象、兵与卒的作用完全相同,仅仅是为了区分红棋和黑棋。

棋子活动的场所,叫做“棋盘”,在长方形的平面上,绘有九条平行的竖线和十条平行的横线相交组成,共九十个交叉点,棋子就摆在这些交叉点上。

中间第五、第六两横线之间未画竖线的空白地带,称为“河界”,整个棋盘就以“河界”分为相等的两部分;两方将帅坐镇、画“米”字方格的地方,叫做“九宫”。

.将或帅

移动范围:

它只能在王宫内移动。

移动规则:

它每一步只可以水平或垂直移动一点。

.士

移动范围:

它只能在王宫内移动。

移动规则:

它每一步只可以沿对角线方向移动一点。

.象

移动范围:

河界的一侧。

移动规则:

它每一步只可以沿对角线方向移动两点,另外,在移动的过程中不能够穿越障碍。

.马

移动范围:

任何位置。

移动规则:

每一步只可以水平或垂直移动一点,再按对角线方面向左或者右移动。

另移动的过程中不能够穿越障碍。

.车

移动范围:

任何位置。

移动规则:

可以水平或垂直方向移动任意个无阻碍的点。

.炮

移动范围:

任何位置。

移动规则:

移动起来和车很相似,但它必须跳过一个棋子来吃掉对方的一个棋子。

.兵

移动范围:

任何位置。

移动规则:

每步只能向前移动一点。

过河以后,它便增加了向左右移动的能力,兵不允许向后移动。

1.2中国象棋发展的现状

在中国,若说历史悠久、群众基础雄厚的运动,中国象棋毫无疑问占有一席之地。

而对胡荣华、赵国荣、吕钦、许银川等特级大师来说,他们的梦想是把这项运动推向世界。

1956年,围棋、国际象棋、中国象棋被列为我国正式体育项目。

50年来,我国棋类项目的发展有目共睹。

全国政协副主席霍英东先生从1985年第五届五羊杯开始慷慨解囊、1988年承诺永远赞助五羊杯赛。

至今,英东先生已连续赞助了22届赛事。

如今,五羊杯赛所创下的办赛纪录和赛事水平,国内外的象棋赛事无出其右;而英东先生二十余载风雨无阻扶掖中国象棋的赤子之心,更令世人折服。

具调查参与网络棋类游戏的人中,象棋每天的在线人次,经常是围棋和国际象棋在线总人次的两倍!

窗体顶端在中国作为中华文化珍贵传统国粹的象棋有着广泛的群众基础。

中国选手在世界范围内一直鲜逢对手。

去年是“人工智能诞生50周年”“超级计算机天梭与中国象棋世界冠军的人机大战有助于把IT高科技的元素导入中国象棋,树立中国象棋主流、时尚、风雅的品牌形象。

国际化普及方面,1984年英东先生曾悬奖50万美元,鼓励全球非华人棋手击败一直由中国人占据的中国象棋世界冠军……中国象棋和中国文化有很深的渊源,国外选手实力不够,一方面是推广不够,另一方面则是文化的差异。

真正要学得精,必须要学中文,对中国文化有所了解,这样才能真正理解象棋的精华,这对外国人而言的确比较难。

随着中国被世界越来越了解,中国的文化,包括象棋会被全世界更多的人了解。

相信会有相当一部分人对象棋有兴趣。

这样就会派学生、派棋手到中国来学习,可以把象棋当职业。

到那天,想必欧美国家也会有很多人下象棋。

中国象棋发展至今已有二千三、四百年的历史了,早在战国时期就有正式记载,堪称中国的国粹。

据统计,中国有2亿人会下中国象棋,这相当于平均6至7个人中就有1人会下,可见它有着广泛的群众基础。

然而,如今中国象棋的发展前景却令人堪忧。

导致这种现象的主要因素有:

第一,就东亚地区,围棋的影响力胜于中国象棋。

第二,中国象棋虽然在国内很受欢迎,但在世界舞台上名声却不如国际象棋那么响亮。

之所以会存在这两个因素,都是因为在国际赛事上中国象棋的参赛选手大都是华人,而非华裔的选手又大都是业余选手,这无疑使比赛失去了竞争力,而围棋有韩国和日本的参与,国际象棋有全世界国家的加入。

第三,进入了21世纪后,供人们娱乐活动的选择越来越多,中国象棋在年轻人的心中已开始渐渐失去魅力。

1.3手机游戏《中国象棋》理论

《中国象棋》是一个由java语言编写的手机游戏,能进行人机对战,是一款出门必备的休闲类小游戏。

(1)初始态游戏界面:

(2)欢迎游戏界面:

(3)游戏帮助界面:

3

 

(4)开始游戏界面:

4

 

第二章JAVA简介

JAVA是SunMicrosystem公司开发的编程语言,是一个简单,面向对象,分布式,解释性,强壮,安全,与系统无关,可移植,高性能,多线程和动态的语言[3]。

2.1JAVA的基本特点

2.1.1简单性

Java与C++语言非常相近,但Java比C++简单,它抛弃了C++中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。

Java实现了自动的垃圾收集,简化了内存管理的工作[3]。

2.1.2面向对象

Java提供了简单的类机制和动态的构架模型。

对象中封装了它的状态变量和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而既实现了代码的复用,又提供了一种动态的解决方案[3]。

2.1.3多线程

多线程使应用程序可以同时进行不同的操作,处理不同的事件。

在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容易实现网络上的实时交互操作[3]。

2.1.4分布式

Java是面向网络的语言。

通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便的访问其他对象[3]。

2.1.5体系结构中立

Java是一种网络语言,为使Java程序能在网络的任何地方运行,Java解释器生成与体系结构无关的字节码结构的文件格式。

为了使Java的应用程序能不依赖于具体的系统,Java语言环境还提供了用于访问底层操作系统功能的类组成的包,当程序使用这些包时,可以确保它能运行在各种支持Java的平台上[3]。

2.1.6安全性

用于网络、分布环境下的Java必须要防止病毒的入侵,Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误[3]。

2.2JAVA的主要技术

过滤流DataInputStream和DataOutputStream除了分别作为FilterInputStream和FilterOutputStream的子类外,还分别实现了接口DataInput和DataOutput。

接口DataInput中定义的方法主要包括从流中读取基本类型的数据、读取一行数据、或者读取指定长度的字节数,如readBoolean()、readInt()、readLine()、readFully()等。

接口DataOutput中定义的方法主要是向流中写入基本类型的数据或者写入一定长度的字节数组,如writeChar()、writeDouble()。

DataInputStream可以从所连接的输入流中读取与机器无关的基本类型数据,用以实现一种独立于具体平台的输入方式;DataOutputStream可以向所连接的输出流写入基本类型的数据[4]。

 

第三章游戏详细设计与实现

3.1功能描述

本程序中,利用JAVA实现了一个中国象棋对弈的软件,它主要包括如下功能:

.游戏初始界面,点击菜单能进入欢迎游戏界面。

.点击开始游戏按钮进行象棋对弈。

首先红方走棋,然后黑方走棋,直到一方获胜。

.点击退出按钮,然后重新打开游戏开始新的游戏。

.点击声音按钮,进行声音的开和关。

.点击帮助按钮。

提示帮助信息状态。

3.2理论基础

3.2.1中国象棋简介

中国象棋的棋盘是方型的,棋盘的中间有一条“界河”,把对垒的双方隔在两边。

两边画有交叉线的地方共有90个交叉点,棋子就摆在这些交叉点上。

中国象棋共有32枚棋子,分为黑红两组,下棋的双方各用一组,每组各有一帅(将)、两士(仕)、两相(象)、两马、两车、两炮、五兵(卒)。

两人对局时,按照规定的位置将各自的棋子摆好,按照“红先黑后”的原则,红方先走,然后轮流下棋子。

各种棋子走法不同,最后把对方将死为胜,不分胜负则为和棋。

3.2.2中国象棋走子规则

.帅(将)每一次只允许走一步,前进、后退、横走都可以,但不能走出“九宫”。

.士每一次只许沿“九宫”斜线走一步,可进可退。

.相(象)不能越过“河界”,每一次斜走两格,可进可退,即俗称“相(象)走田字”。

当田字中民有别的棋子时,俗称“塞相(象)眼”,则不可以走过去。

.马每次走一直(或一横)一斜,可进可退,俗称“马走日字”,如果在要去的方向上有别的棋子挡住。

俗称“蹩马腿”,则不许走过去。

.车每一次可直进、直退、横走、不限步数。

.炮在不吃子的时候,走法同车一样。

.兵(率)在没有过“河界”前,每次只许向前直走一步,过“河界”后每次可向前直走或横走一步,但不能后退。

3.2.3国象棋吃子规则

在走棋时,如果棋子能够走到的位置有棋子存在,且该棋子为对方棋子时,就可以把对方棋子吃掉而占领那个位置。

只有炮在吃子时必须隔一个棋子(隔的棋子无论是哪一方的都可以)跳吃,即俗称“炮打隔子”。

除帅(将)外其它棋子都可以听任对方吃,或主动送吃。

吃子的一方,必须立即把被吃的棋子从棋盘上拿走。

如果帅(将)被吃掉则本局游戏结束。

3.3总体设计

手机游戏《中国象棋》的程序由文件XIActivity.java、WelcomeView.java、WelcomeThread.java、CAIMenuView.java、Help.java、Game.java、Move.java、TimeThread.java和GuiZe.java实现。

XIActivity.java在此文件中定义了类XIActivity,这是本实例游戏控制器类,功能是在合适的时候初始化相应的用户界面,根据其他界面的要求切换到需要的界面。

WelcomeView.java在此文件中定义了类WelcomeView,此类是一个辅助界面类,是刚进入游戏系统后显示的欢迎界面框架。

在此文件中定义了类WelcomeThread,此类也是一个辅助界面类,用于生成欢迎界面的动画效果。

CAIMenuView.java在此文件中定义了类CAIMenuView,功能是在欢迎界面单击【菜单】按钮时进入菜单界面。

Help.java在此定义了类Help,这也是一个辅助界面类,功能是显示游戏系统的使用方法。

Game.java此文件和前面介绍的界面辅助类不一样,在此文件中定义的Game类是一个核心类,功能是实现游戏界面框架。

Move.java在此文件中定义了象棋的走法类Move,在走法中包含了什么棋子、起始点的位置、目标点的位置以及估值时所用到的score。

GuiZe.java在里面定义了象棋GuiZe。

我们知道象棋是有规则的,例如马走日,象走田。

文件Game.java实现流程如下:

定义继承于SurfaceView的类Game,然后定义了类中需要的成员变量、分别定义系统中的构造器和对应构造方法、定义绘制方法onDraw,该方法是自己定义的并非重写的,只会根据数据绘制屏幕、定义重写的屏幕监听方法onTouchEvent,该方法是游戏主要逻辑接口,用于接收玩家输入。

它会根据点击的位置和当前的游戏状态做出相应的处理,当需要切换View界面时,通过给Activity发送Handler消息来处理、定义方法getPo,用于将将坐标换算成数组的维数。

其中棋子的移动规则被定义为内部类,名为GuiZe.java。

GuiZe.java类中的方法用于定义各个棋子的移动规则和吃子规则。

详细设计

publicclassXIActivityextendsActivity{

booleanisSound=true;//是否播放声音

MediaPlayerstartSound;//开始和菜单时的音乐

MediaPlayergamesound;//游戏声音

HandlermyHandler=newHandler(){//用来更新UI线程中的控件

publicvoidhandleMessage(Messagemsg){

if(msg.what==1){//WelcomeView或HelpView或GameView传来的消息,切换到MenuView

initMenuView();//初始化并切换到菜单界面

}

elseif(msg.what==2){//MenuView传来的消息,切换到GameView

initGameView();//初始化并切换到游戏界面

}

elseif(msg.what==3){//MenuView传来的消息,切换到HelpView

initHelpView();//初始化并切换到帮助界面

}

}

};

publicvoidonCreate(BundlesavedInstanceState){//重写的onCreate

super.onCreate(savedInstanceState);

//全屏

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

startSound=MediaPlayer.create(this,R.raw.startsound);//加载欢迎声音

startSound.setLooping(true);//设置游戏声音循环播放

gamesound=MediaPlayer.create(this,R.raw.gamesound);//游戏过程的背景声音

gamesound.setLooping(true);//设置游戏声音循环播放

this.initWelcomeView();//初始化欢迎界面

}

publicvoidinitWelcomeView(){//初始化欢迎界面

this.setContentView(newWelcomeView(this,this));//切换到欢迎界面

if(isSound){//需要播放声音时

startSound.start();//播放声音

}

}

publicvoidinitGameView(){//初始化游戏界面

this.setContentView(newGame(this,this));//切换到游戏界面

}

publicvoidinitMenuView(){//初始化菜单界面

if(startSound!

=null){//停止

startSound.stop();//停止播放声音

startSound=null;

}

if(this.isSound){//是否播放声音

gamesound.start();//播放声音

}

this.setContentView(newCAIMenuView(this,this));//切换View

}

publicvoidinitHelpView(){//初始化帮助界面

this.setContentView(newHelp(this,this));//切换到帮助界面

}

}

3.4.2

publicTutorialThread(SurfaceHoldersurfaceHolder,WelcomeViewwelcomeView){//构造器

this.surfaceHolder=surfaceHolder;//得到SurfaceHolder引

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1