关键词不能为空

当前您在: 首页 > 育儿 >

基于android的中国象棋的设计与实现

作者:陕西保健网
来源:http://www.xapfxb.com/yuer
更新日期:2021-01-27 06:29

古灵精探大结局-

2021年1月27日发(作者:赵令欢)




















实训项目名称
基于
Android
象棋游戏的开发与测试
















信息工程学院
































11
级计科(
2
)班
























完圆圆、李城城、孙超、胡迪

















1142151221

14

20

08


























2014-11-19


























项目

名称

地点


13 603
在本报告中,首先介绍了安卓的现状以及开 发的相关知识,其次是关于开
发游戏过程中用到的开发工具和系统的运行环境配置等。

通过对
Android
系统架构和应用开发进行初步研究,设计一款中国象棋游
戏。 在对系统进行详细需求分析的基础上,确定了系统的功能和性能要求,
基于安卓象棋游戏的开发与测试< br>



对游戏的菜单界面、屏幕绘制、时间控制、布局算法和动画等 进行了设计,
并最终实现了一个界面友好、高效稳定和富有娱乐性的手机益智游戏。

最后,实现的是对本次游戏的测试并列举了测试用列以及给出了测试结
果。









教师评语





成绩:



















教师签名:















中国象棋是一款智力休闲游戏,具有历史悠久而且拥有巨大 的游戏爱好者群体,他们以中
国象棋陶冶情操、锻炼智力、体验象棋带来的快乐,中国象棋还是一个老少 皆宜的娱乐游戏。随
着手持设备、智能手机的普及,搭载
Android
操作系统的智 能手机也已经走进了千家万户,当人
们闲暇偶尔需要娱乐时,却发现没有实物象棋,该软件不失为一个很 好的替代品,供大家进行娱
乐享受,尤其是在现在这个快节奏的社会中

,人们更满足于手机的使用,可以方便地随意移动,
不像实物象棋那样静静的坐着。


本论文通过实际应用软件的开发深入分析和研究
Android
开发技术。
实现中国象棋的人机会
话。本文实现了中国象棋在计算机中表示问题,基于
Andro id
平台应用,人机对战模拟现实中的
人人对战;讨论走棋规则和着法的实现等一系列问题,最 终电脑能够通过产生着法,搜索,估计
来产生一步最优的走棋,实现人机会话的目的。


关键字

中国象棋,
Android
,智能手机,人机对战

































目录


1
绪论
....... .................................................. .................................................. ........................ 1

1.1
研究背景
..................................... .................................................. .......................... 1
1.2
本论文研究意义
.................................. .................................................. ................. 3
2
游戏系统开发平台及搭建

.................................................. ............................................. 4

2.1 JDK


Eclipse

.. .................................................. ................................................ 4
2.2 Android SDK .............................. .................................................. ............................ 4
2.3 ADT ....... .................................................. .................................................. ............... 5
3
系统分析
............. .................................................. .................................................. .......... 6

3.1
可行性研究
........... .................................................. ................................................ 6
3.2
界面的需求分析
.......................... .................................................. ......................... 6
3.3
游戏走棋需求设计分析
............................... .................................................. ........ 6
4
游戏系统的设计与实现

.......... .................................................. ....................................... 7

4.1
类框架的设计
........................... .................................................. ............................ 7
4.2
共有类
ChessActivity
的实现
.............. .................................................. ................ 8
4.3
辅助界面相关类的实现
.... .................................................. ................................... 8
4.4
游戏界面相关类的实现
............................... .................................................. ........ 9
4.5
中国象棋的规则及走法的实现
......... .................................................. ................ 10
4.6
游戏人机对战的实现
.... .................................................. ..................................... 18
4.7
系统流程图
.................................... .................................................. ..................... 19
5
运行测试
...... .................................................. .................................................. ............... 20

5.1
测试用例表
..... .................................................. .................................................. .. 20
5.2
测试结果
....................... .................................................. ...................................... 20
6
小结
....................................... .................................................. ........................................ 23

参考文献
..................................... .................................................. ...................................... 24

附录:
...................................... .................................................. ......................................... 25



1
绪论

1.1

研究背景

(1)

中国象棋背景

中国象棋发展 至今已有两千三、
四百年的历史,
早在战国时期就有正式的记载,
堪称中
国的 国粹。
中国象棋具有悠久的历史,深的人们的喜爱,
象棋的爱好者也更是数不胜数,远
在战国中国象棋便在贵族阶层广为流传,
早期的象棋是象征着当时战斗场面的游戏,
后来这种观念慢慢被改变,
经过千年的流传不断的完善和改进,
成为人们休闲娱乐、
锻炼 脑力思维
不可获取的好方式。

中国象棋体现的是一种策略,
方寸之间包含天 地玄机,
人生哲理,
使人越是细玩越觉其
味悠然深远。由于简单的行棋规则,
趣味性强,便捷的载体,
使得象棋成为雅俗共赏的竞技
项目。因此,也成为流行极为广泛的棋艺 活动。是我国正式开展的
78
个体育项目之一,为
促进该项目在世界范围内的普及和推 广,
在中国古代,
象棋被列为士大夫们的修身之艺,

在则被视为怡神益智的 一种有益的活动。有着数以亿计的爱好者。它不仅能丰富文化生活,
陶冶情操,
在棋战中,人们 可以从攻与防、虚与实、整体与局部等复杂关系的变化中悟出某
种哲理;更有助于开发智力,启迪思维, 锻炼辨证分析能力和培养顽强的意志。


(2)

Android
系统简介

Android
系统构架简介:



Android
是一个基于
Linux?V2.6
内核的交互性操作环境,同时它也是一个分层系统,
Android系统架构显示如下图
1.1



1



1.1
系统架构图






应用层由所有的
Android
应用程序组成。
其中包括电子邮件客户端,< br>SMS
程序,
地图,
浏览器,联系人及其他。所有的应用程序都是用
J ava
编程语言编写的。





应用框架层定 义了
Android
应用程序框架。所有的
Android
应用程序都是基于 应用框架
的。
Android
应用框架包括:

?

丰富及可扩展性的视图,
可以用来建立一个美观的用户界面,
包括列表,
网格,文本框,按钮,甚至是嵌入到
Web
浏览器的应用程序。






?

一组内容提供商,使应用程序能够访问其他应用 程序的数据(如电话簿)
,或
共享自己的数据。

?

资源 管理器提供了访问的非编码资源的途径,
如本地化的字符串,
图形,
布局
文件 。

?

通知管理器允许所有应用程序显示定制的提示或通知在状态栏里。

?

活动管理器可以管理应用程序的生命周期,并提供一个通用的后台堆栈导航。






库层包括了一套被各类
Android
系统组件使用的
C / C + +
库并对应用程序框架提供支
持。


Android
的运行环境包括一套核心库和

Java 虚拟机(
Dalvik
虚拟机)
,已经由谷歌重
新设计和优化来适合Android
平台。


Linux
内核位于

Android
系统的底层并作为硬件和软件之间的一个抽象层。
它提供了
核心系统服务,如安全,内存管理,进程管理,网络协议栈和驱动模型。此外,一些底层功
能如

Dalvik
虚拟机线程管理也依赖于
Linux
内核。


2

1.2

本论文研究意义

< br>中国象棋是一项智力和策略的游戏,以往都是人和人下棋,现在有了计算机我们可以
和计算机竞技 ,
人可以与计算机进行对弈。
控制计算机的是人类,
而人机会话综合性很强的
一门边缘学科,
它的中心任务是研究使计算机如何去做那些过去只能靠人的智力才能做的工
作。
因此,
对游戏开发过程中的人工智能技术的研究自然也就成了业界的一个热门研究方向。


本次论文的研究,主要是对中国象棋在
Android
系统中的兼容行 性,对游戏界面可观
性,游戏中人机会话的研究。对于游戏中的人机会话的要点:

a
某种在及其上表示棋局的方法,让程序知道会话的状态;

b
产生合法的走棋法则,使得会话双方公正,并可以判断人类对手是否乱走;

c
从所有和法定的走法中选择最佳的走法的技术;

d
一种评估局面优化的方法,同上面技术配合做出智能选择;

e
一个实现游戏的界面;

通过对游戏的设计,
来实现游戏中棋牌的表示,着法 的生成,
对着法的搜索,最后对局
面的评估来实现中国象棋的人机会话。




















3

2
游戏系统开发平台及搭建

2.1

JDK


Eclipse


JDK

Sun
公司针对
java
开发员的产品。自从
Java
推出 以来,
JDK
已经成为使用最广
泛的
java
SDK
。< br>JDK
是整个
java
的核心。包括运行环境
Java
工具和
Java
基础类库。
JDK
是学好
Java
的第一步。
安装
Eclipse
的开发环境需要
JDK
的支持,如果没有
JDK
,则启动
Eclipse
时会报告错
误。在
wind ows
上安装
JDK
非常简单首先在
Sun
官网上下载,按照默认路 径进行安装。安
装完成之后,可以在检查
JDK
是否安装成功。打开
cmd< br>窗口,输入
java

version
查看
JDK
的版本信息。出现类似下面的画面表示安装成功了:




2.1 JDK
测试

Eclipse
如果你 还没有
Eclipse
的话,从官网上下载
Eclipse IDE for Java Developers
解压
之后即可使用。

2.2

Android SDK
AndroidSDK
提供了在

windows
平台上的开发安卓应用程序的开发组件,也就是说,
不论读者使用什 么样的平台都可以开发出安卓平台的应用软件,
其中包含了安卓平台上开发
移动应用的各种工具 集。它不仅包括了安卓模拟器和用于
Eclipse
的安卓开发工具插件

A DT

,而且包括了各种用来调试,打包盒在模拟器上安装应用的工具。

安卓主要是以

java
语言为基础,
用户可以使用

java
语言来开发

安卓平台上的软件应
用。
通过SDK
提供的一些工具将其打包成安卓平台使用的
apk
文件,
然后在使 用
SDK
中的
模拟器(
Emulator)
来模拟和测试软件在安卓 平台运行情况和效果。

安装安卓的
SDK

安装好
JDK

Eclipse
后,
打开
Eclipse IDE
依次单击
Menu
项中的
windows->Android
SDK
Manager
项,进入
Android
SDK
Manager
界面选择
Tool
和需要的
Android
版本项进行更新安装。< br>

4

2.3

ADT
Androi d

Eclipse
定制了一个插件,及
ADT

Andr oid
Development
Tools

,目的是为
用户提 供一个强大的综合环境用于开发
Android
应用程序,
ADT
扩展了Eclipse
的功能,可
以让用户快速的建立
Android
项目,创 建应用程序界面,在基于
Android API
的基础上添加
组件,以及用
SDK
工具集调试应用程序,甚至导出签名(或未签名)的
APKs
以便发行应
用程序。

安装
Android
Development
Tool
plug-in
,打开

Eclipse
IDE
。依次单击
Menu
项中的
Help->Software Update

























5

3
系统分析

3.1

可行性研究


次实 训的题目是:基于
Android
象棋游戏的开发与测试;主要是在基于
Androi d
平台
开发一个手持设备应用游戏,
使得游戏具有兼容性和人机对战;
并对整 个系统分析,
设计过
程给出一个论证。

中国象棋游戏是棋牌类游戏,
体现的是一种策略。
对于行棋走棋不同的棋子有不同走棋
规则,走棋都必须按照走棋规则要求 ,双方轮换走棋,吃子,将军。本游戏设计无疑是模拟
现实人人博弈,
虚拟的替换了真实的棋子 棋盘,
由人来和电脑直接对弈;
在一个人闲暇时也
可以体验博弈的乐趣。
< br>该应用游戏的设计主要从以下几方面做起:
系统流程分析、
系统的功能设计、
系 统的数
据结构设计。
做好这些工作需要对
Android
开发平台了解,并搭建平台;
深入了解数据结构、
Android
应用程序以及各种组件
(API)
库函数。

3.2

界面的需求分析


通过以往手持设备游戏的体验,和用户对中国象棋游戏需求逻辑,游戏的功能以及操
作方法把整 个设计划分成单元;
先是运行游戏,
进入欢迎游戏界面,
随后单击欢迎界面的图
片进入菜单界面,在菜单中可以点击“打开声音

/
“关闭声音

按钮来控制声音开关,单击
“帮助”菜单可以进入帮助界面显示游戏操作方法,而在菜单界面单击
“开始游戏”菜单将
进入游戏主界面开始游戏,在游戏界面玩家可以通过单击自己的棋子按照行棋规则 来走棋,
同时可以单击声音按钮打开关闭声音,当游戏一方的“将”或者敌方的“帅”被吃掉是,会出现游戏失败或游戏胜利的界面,
在游戏过程中玩家可以随时通过单击
“退出”
按 钮返回到
游戏主菜单,主菜单中还可以点击“退出游戏”结束关闭游戏。

3.3

游戏走棋需求设计分析

进入游戏界面,游戏提示当前走棋 为“帅”或者“将”
,双方
各走一着,直至分出胜负
或者直接点击退出结束游戏,轮到走棋的一方,
将某个棋子从一个交叉点走到另一个交叉点,
或者吃掉对方的棋子而占领 其交叉点,都算走一着,双方各走一着即一个回合,吃子时,任
何棋子走动,
如果目标位置上有 对方的棋子,
就可以把对方的棋子拿出棋盘,
即屏幕上消失
在显示自己的棋子。

玩家走完棋后电脑相对应搜索出自己相对应的走法。
程序需要让计算机在轮到它走子的时候能够执行一步它认为最有利的着法,
而不是乱走;
那么它就要有在诸多可供选择的着法 ,
提供所有候选着法的列表就是着法生成器所要完成的。
之后用搜索函数来搜索列表,
并用局
面评估函数逐一打分,最后就可以选择出最佳着法并执行。


6

4
游戏系统的设计与实现

4.1

类框架的设计

通过对中国象棋游戏的了解,对基于
Android
技术的中国象棋人机对弈游戏的需求分
析,
游戏实现的理解并结合自己对知识点所掌握的程度;
对中国象棋游戏总体设计,
主要由
三个类组成:共有类,辅助界面相关类,游戏界面相 关类。

共有类是
Activity
的实现类
ChessActiv ity
,该类是通过扩展基类
Activity
得到的,是整
个游戏的控制器 ,也是整个游戏程序的入口;辅助界面相关类由
WelcomeView
欢迎界面类
( 该类为游戏欢迎界面的实现类,
主要负责欢迎界面的绘制工作)

HelpView< br>帮助界面类
(该
类为帮助界面的实现类)

MenuView
菜单界面类(该类为菜单界面的实现类,负责绘制菜
单界面以及对菜单界面的屏幕进行监听)
三 个类实现;
游戏界面相关类由
GameView
游戏界
面类(该类为游戏程序 中最主要的类,负责绘制游戏过程中所有的信息,如棋盘、棋子、各
个按钮以及胜利或失败菜单等)
GuiZe
象棋规则类(该类是象棋规则的实现类,其中包含
所有棋子的走棋规 则以及当前棋牌所有可能走法)

ChessMove
走法类(该类为棋子的走法的封装类,包括棋子的名称,出发点以及目标点)
。之间关系如图
4.1
所示:< br>

















4.1
游戏类图


7

4.2

共有类
ChessActivity
的实现
该类的主要作用是通过接受
Handler
消息变量,根据各个界面发送的
Han dler
消息的类
型判断所需要执行的操作。
在适当的时间初始化相应的用户界面,< br>各个界面初始化方法被调
用时,并根据其他界面的需求直接将用户界面切换到相应的界面


4.3

辅助界面相关类的实现

该游戏的第一个用户界 面即欢迎界面如图
4.2
所示,通过
WelcomeView
类来实现该界< br>面加载了一个欢迎中国象棋图片,并通过监听菜单图片,向
Activity
发送
Handler
消息通知
控制器切换用户界面;然后切换到菜单界面
MenuVie w

















4.2
游戏欢迎界面





MenuView
类中通过监听“开始游戏”切换到游戏界面;通过监听“打开声音”
/
“关闭
声音” 进行声音的打开与关闭,与此同时“打开声音”

“关闭声音”按钮进行切换;通过监
听“帮助”来切换都帮助界面;通过监听“退出游戏”结束游戏用行退出游戏。

帮助界面HelpView
,该类中加载图片,图片中显示该游戏“怎么玩”同时监听“返回”
按钮 ,

Activity
发送
Handler
消息通知控制器切换用户 界面从而返回到菜单界面,
如图
4.3
所示。


8




4.3

菜单界面

4.4

游戏界面相关类的实现

游戏界面
GameVie w
,该类是整个程序中最主要的类,该类首先是绘制屏幕上的内容棋
盘和对应的棋子。提示一方 先走;当“黑帅”或者“红将”被吃的话,弹出您赢了或者您输
了通过监听结束游戏切换到菜单界面。< br>或者点击退出按钮也可结束游戏切换至菜单界面。

听声音按钮来控制声音的开与关并以 红色显示声音开,消失即为关,如图
4.4
所示。
















4.4

游戏界面


9

4.5

中国象棋的规则及走法的实现

(1)

行棋规则

中国象棋分为红黑双方,以楚河汉界为分界线,双方各执
16字,分别为
2

2

2

2

2

1

5
卒,各自走法不同,具体如下:

马 :只可以走“日”字方格,因此一匹马的最理想落子点有
8
个,但存在绊马腿的
情况, 即从马的位置到要走到的目标位置,顺着此方向,
“日”字方格有两个方向,即两
格长度和一个 长度,马紧挨的两格长度方向的位置不能有子,否则即被绊住,不能走动。
若目标位置为空,即可走过, 若为对方的棋子,即可吃掉。















4.5
马的走法

红黑马规则走法的介绍:

case 10://
红马


case 3://
黑马









if(!(((toX-fromX)==1 && (toY-fromY)==2)


}
if(toX-fromX==2){//
向右走



}

10
i=fromX+1;//
移动

j=fromY;

|| ((toX-fromX)==2 && (toY-fromY)==1))){
return false;//
马走的不是日字时

















else if(fromX- toX==2){//
向左走



}
else if(toY-fromY==2){//
向下走



}
else if(fromY-toY==2){//
向上走



}
if(qizi[j][i] != 0)

return false;//
绊马腿

i=fromX;//
移动

j=fromY-1;
i=fromX;//
移动

j=fromY+1;
i=fromX-1;//
移动

j=fromY;
break;
炮:只可以走直线,且一步可以走任意距离,其起 始点与目标点之间不得存在其他
棋子。炮吃子的条件是与目标棋子在一条直线上,且两子之间必须有且只 有一个棋子作
为“跳板”
,让炮进行跳跃式攻击。

红黑炮规则走法的介绍:















4.6
炮的走法


11


case 11://
红砲

case 4://
黑炮































if(fromY!=toY && fromX!=toX){//
炮走直线


}
if(qizi[toY][toX] == 0){//
不吃子时



























if(fromY == toY){//
横线















}
else{//
竖线










if(fromY < toY){//
向下走






}
else{//
向上走


for(j = toY + 1; j < fromY; j++){

12
for(j = fromY + 1; j < toY; j++){



}
if(qizi[j][fromX] != 0){

}
return false;//
返回
false
if(fromX < toX){//
想右走






}
else{//
向走走






}
for(i = toX + 1; i < fromX; i++){



}
if(qizi[fromY][i]!=0){

}
return false;//
返回
false
for(i = fromX + 1; i < toX; i++){



}
if(qizi[fromY][i] != 0){

}
return false;//
返回
false
return false;//
返回
false








































}
else{//
吃子时


























int count=0;
if(fromY == toY){//
走的是横线





















}
else{//
走的是竖线


if(fromY向下走


13
if(fromX < toX){//
向右走









}
else{//
向左走









}
for(i=toX+1;i


}
if(count!=1){

}
return false;//
返回
false
if(qizi[fromY][i] != 0){

}
count++;
for(i=fromX+1;i


}
if(count != 1){

}
return false;//
返回
false
if(qizi[fromY][i]!=0){

}
count++;





}




}



}
if(qizi[j][fromX] != 0){

}
return false;//
返回
false



































14




















}
break;



















}








}
else{//
向上走









}
for(j=toY+1;j


}
if(count!=1){

}
return false;//
返回
false
if(qizi[j][fromX] != 0){

}
count++;//
返回
false
for(j=fromY+1;j


}
if(qizi[j][fromX]!=0){

}

count++;//
返回
false
if(count!=1){

}
return false;//
返回
false

象、相:只可以在己方阵营走动,且仅限于
7
个点,即己方“田”字格上的
7
个点,
走的是斜线,走动时,起始点与目标点构成一条斜线,若该斜线的中点位置存在其他棋< br>子,则被绊住无法走动。















4.7
象的走法

case 6://
黑象

if(toY>4){//
不能过河


}
if((fromX-toX) != 2 || (fromY-toY) != 2){//
相走“田”字


}
if(qizi[(fromY+toY)/2][(fromX+toX)/2] != 0){

}
break;
case 13://
红相

if(toY<5){//
不能过河


}
if((fromX-toX) != 2 || (fromY-toY) != 2){//
相走“田”字


15
return false;//
返回
false
return false;//
相眼处有棋子

return false;
return false;


}
if(qizi[(fromY+toY)/2][(fromX+toX)/2] != 0){

}
break;

将、帅:只可以在己方阵营走动,且仅限于
9
个点,即己方底三行中三列形成的
9
个交叉点,
也就是俗称的“九宫”

一步只可以走动一个方格的直线距离作为本方的主将,
镇守大本营,双 方的主将是不能够处于同一条直线而主将之间不存在其他的棋子进行隔
挡。















4.8
将帅的走法

case 1://
黑帅

if(toY>2||toX<3||toX>5){//
出了九宫格


}
if(((fromY-toY)+(toX- fromX))>1){//
只能走一步


}
break;

16
return false;
return false;
return false;//
相眼处有棋子

return false;//
返回
false

古灵精探大结局-


古灵精探大结局-


古灵精探大结局-


古灵精探大结局-


古灵精探大结局-


古灵精探大结局-


古灵精探大结局-


古灵精探大结局-



本文更新与2021-01-27 06:29,由作者提供,不代表本网站立场,转载请注明出处:http://www.xapfxb.com/yuer/429924.html

基于android的中国象棋的设计与实现的相关文章