基于Android的中国象棋的设计与实现毕业论文.doc
《基于Android的中国象棋的设计与实现毕业论文.doc》由会员分享,可在线阅读,更多相关《基于Android的中国象棋的设计与实现毕业论文.doc(39页珍藏版)》请在咨信网上搜索。
实 训 报 告 实训项目名称基于Android象棋游戏的开发与测试 二 级 学 院 信息工程学院 专 业 班 级 11级计科(2)班 姓 名 完圆圆、李城城、孙超、胡迪 学 号 1142151221、14、20、08 日 期 2014-11-19 项目 名称 基于安卓象棋游戏的开发与测试 地点 教13 603 报 告 内 容 在本报告中,首先介绍了安卓的现状以及开发的相关知识,其次是关于开发游戏过程中用到的开发工具和系统的运行环境配置等。 通过对Android系统架构和应用开发进行初步研究,设计一款中国象棋游戏。在对系统进行详细需求分析的基础上,确定了系统的功能和性能要求,对游戏的菜单界面、屏幕绘制、时间控制、布局算法和动画等进行了设计,并最终实现了一个界面友好、高效稳定和富有娱乐性的手机益智游戏。 最后,实现的是对本次游戏的测试并列举了测试用列以及给出了测试结果。 教师评语 成绩: 教师签名: 摘 要 中国象棋是一款智力休闲游戏,具有历史悠久而且拥有巨大的游戏爱好者群体,他们以中国象棋陶冶情操、锻炼智力、体验象棋带来的快乐,中国象棋还是一个老少皆宜的娱乐游戏。随着手持设备、智能手机的普及,搭载Android操作系统的智能手机也已经走进了千家万户,当人们闲暇偶尔需要娱乐时,却发现没有实物象棋,该软件不失为一个很好的替代品,供大家进行娱乐享受,尤其是在现在这个快节奏的社会中 ,人们更满足于手机的使用,可以方便地随意移动,不像实物象棋那样静静的坐着。 本论文通过实际应用软件的开发深入分析和研究Android开发技术。实现中国象棋的人机会话。本文实现了中国象棋在计算机中表示问题,基于Android平台应用,人机对战模拟现实中的人人对战;讨论走棋规则和着法的实现等一系列问题,最终电脑能够通过产生着法,搜索,估计来产生一步最优的走棋,实现人机会话的目的。 关键字:中国象棋,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系统架构图 应用层由所有的Android应用程序组成。其中包括电子邮件客户端,SMS程序,地图,浏览器,联系人及其他。所有的应用程序都是用Java编程语言编写的。 应用框架层定义了Android应用程序框架。所有的Android应用程序都是基于应用框架的。Android应用框架包括: l 丰富及可扩展性的视图,可以用来建立一个美观的用户界面,包括列表,网格,文本框,按钮,甚至是嵌入到Web浏览器的应用程序。 l 一组内容提供商,使应用程序能够访问其他应用程序的数据(如电话簿),或共享自己的数据。 l 资源管理器提供了访问的非编码资源的途径,如本地化的字符串,图形,布局文件。 l 通知管理器允许所有应用程序显示定制的提示或通知在状态栏里。 l 活动管理器可以管理应用程序的生命周期,并提供一个通用的后台堆栈导航。 库层包括了一套被各类Android 系统组件使用的C / C + +库并对应用程序框架提供支持。 Android 的运行环境包括一套核心库和 Java 虚拟机(Dalvik虚拟机),已经由谷歌重新设计和优化来适合Android平台。 Linux 内核位于 Android 系统的底层并作为硬件和软件之间的一个抽象层。它提供了核心系统服务,如安全,内存管理,进程管理,网络协议栈和驱动模型。此外,一些底层功能如 Dalvik 虚拟机线程管理也依赖于Linux内核。 1.2 本论文研究意义 中国象棋是一项智力和策略的游戏,以往都是人和人下棋,现在有了计算机我们可以和计算机竞技,人可以与计算机进行对弈。控制计算机的是人类,而人机会话综合性很强的一门边缘学科,它的中心任务是研究使计算机如何去做那些过去只能靠人的智力才能做的工作。因此,对游戏开发过程中的人工智能技术的研究自然也就成了业界的一个热门研究方向。 本次论文的研究,主要是对中国象棋在Android系统中的兼容行性,对游戏界面可观性,游戏中人机会话的研究。对于游戏中的人机会话的要点: a 某种在及其上表示棋局的方法,让程序知道会话的状态; b 产生合法的走棋法则,使得会话双方公正,并可以判断人类对手是否乱走; c 从所有和法定的走法中选择最佳的走法的技术; d 一种评估局面优化的方法,同上面技术配合做出智能选择; e 一个实现游戏的界面; 通过对游戏的设计,来实现游戏中棋牌的表示,着法的生成,对着法的搜索,最后对局面的评估来实现中国象棋的人机会话。 2 游戏系统开发平台及搭建 2.1 JDK和 Eclipse: JDK是Sun公司针对java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的java SDK。JDK是整个java的核心。包括运行环境Java工具和Java基础类库。JDK是学好Java的第一步。 安装Eclipse的开发环境需要JDK的支持,如果没有JDK,则启动Eclipse时会报告错误。在windows上安装JDK非常简单首先在Sun官网上下载,按照默认路径进行安装。安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java –version 查看JDK的版本信息。出现类似下面的画面表示安装成功了: 图 2.1 JDK测试 Eclipse如果你还没有Eclipse的话,从官网上下载Eclipse IDE for Java Developers解压之后即可使用。 2.2 Android SDK AndroidSDK 提供了在 windows 平台上的开发安卓应用程序的开发组件,也就是说,不论读者使用什么样的平台都可以开发出安卓平台的应用软件,其中包含了安卓平台上开发移动应用的各种工具集。它不仅包括了安卓模拟器和用于Eclipse的安卓开发工具插件(ADT),而且包括了各种用来调试,打包盒在模拟器上安装应用的工具。 安卓主要是以 java 语言为基础,用户可以使用 java 语言来开发 安卓平台上的软件应用。通过SDK提供的一些工具将其打包成安卓平台使用的apk文件,然后在使用SDK中的模拟器(Emulator)来模拟和测试软件在安卓平台运行情况和效果。 安装安卓的SDK,安装好JDK和Eclipse后,打开Eclipse IDE。依次单击Menu项中的windows->Android SDK Manager项,进入Android SDK Manager界面选择Tool和需要的Android版本项进行更新安装。 2.3 ADT Android为Eclipse定制了一个插件,及ADT(Android Development Tools),目的是为用户提供一个强大的综合环境用于开发Android应用程序,ADT扩展了Eclipse的功能,可以让用户快速的建立Android项目,创建应用程序界面,在基于Android API的基础上添加组件,以及用SDK工具集调试应用程序,甚至导出签名(或未签名)的APKs以便发行应用程序。 安装Android Development Tool plug-in,打开 Eclipse IDE。依次单击Menu项中的Help->Software Update项 3 系统分析 3.1 可行性研究 本次实训的题目是:基于Android象棋游戏的开发与测试;主要是在基于Android平台开发一个手持设备应用游戏,使得游戏具有兼容性和人机对战;并对整个系统分析,设计过程给出一个论证。 中国象棋游戏是棋牌类游戏,体现的是一种策略。对于行棋走棋不同的棋子有不同走棋规则,走棋都必须按照走棋规则要求,双方轮换走棋,吃子,将军。本游戏设计无疑是模拟现实人人博弈,虚拟的替换了真实的棋子棋盘,由人来和电脑直接对弈;在一个人闲暇时也可以体验博弈的乐趣。 该应用游戏的设计主要从以下几方面做起:系统流程分析、系统的功能设计、系统的数据结构设计。做好这些工作需要对Android开发平台了解,并搭建平台;深入了解数据结构、Android应用程序以及各种组件(API)库函数。 3.2 界面的需求分析 通过以往手持设备游戏的体验,和用户对中国象棋游戏需求逻辑,游戏的功能以及操作方法把整个设计划分成单元;先是运行游戏,进入欢迎游戏界面,随后单击欢迎界面的图片进入菜单界面,在菜单中可以点击“打开声音”/“关闭声音”按钮来控制声音开关,单击“帮助”菜单可以进入帮助界面显示游戏操作方法,而在菜单界面单击“开始游戏”菜单将进入游戏主界面开始游戏,在游戏界面玩家可以通过单击自己的棋子按照行棋规则来走棋,同时可以单击声音按钮打开关闭声音,当游戏一方的“将”或者敌方的“帅”被吃掉是,会出现游戏失败或游戏胜利的界面,在游戏过程中玩家可以随时通过单击“退出”按钮返回到游戏主菜单,主菜单中还可以点击“退出游戏”结束关闭游戏。 3.3 游戏走棋需求设计分析 进入游戏界面,游戏提示当前走棋为“帅”或者“将”,双方各走一着,直至分出胜负或者直接点击退出结束游戏,轮到走棋的一方,将某个棋子从一个交叉点走到另一个交叉点,或者吃掉对方的棋子而占领其交叉点,都算走一着,双方各走一着即一个回合,吃子时,任何棋子走动,如果目标位置上有对方的棋子,就可以把对方的棋子拿出棋盘,即屏幕上消失在显示自己的棋子。 玩家走完棋后电脑相对应搜索出自己相对应的走法。程序需要让计算机在轮到它走子的时候能够执行一步它认为最有利的着法,而不是乱走;那么它就要有在诸多可供选择的着法,提供所有候选着法的列表就是着法生成器所要完成的。之后用搜索函数来搜索列表,并用局面评估函数逐一打分,最后就可以选择出最佳着法并执行。 4 游戏系统的设计与实现 4.1 类框架的设计 通过对中国象棋游戏的了解,对基于Android技术的中国象棋人机对弈游戏的需求分析,游戏实现的理解并结合自己对知识点所掌握的程度;对中国象棋游戏总体设计,主要由三个类组成:共有类,辅助界面相关类,游戏界面相关类。 共有类是Activity的实现类ChessActivity,该类是通过扩展基类Activity得到的,是整个游戏的控制器,也是整个游戏程序的入口;辅助界面相关类由WelcomeView欢迎界面类(该类为游戏欢迎界面的实现类,主要负责欢迎界面的绘制工作),HelpView帮助界面类(该类为帮助界面的实现类),MenuView菜单界面类(该类为菜单界面的实现类,负责绘制菜单界面以及对菜单界面的屏幕进行监听)三个类实现;游戏界面相关类由GameView游戏界面类(该类为游戏程序中最主要的类,负责绘制游戏过程中所有的信息,如棋盘、棋子、各个按钮以及胜利或失败菜单等),GuiZe象棋规则类(该类是象棋规则的实现类,其中包含所有棋子的走棋规则以及当前棋牌所有可能走法),ChessMove走法类(该类为棋子的走法的封装类,包括棋子的名称,出发点以及目标点)。之间关系如图4.1所示: 图4.1游戏类图 4.2 共有类ChessActivity的实现 该类的主要作用是通过接受Handler消息变量,根据各个界面发送的Handler消息的类型判断所需要执行的操作。在适当的时间初始化相应的用户界面,各个界面初始化方法被调用时,并根据其他界面的需求直接将用户界面切换到相应的界面 4.3 辅助界面相关类的实现 该游戏的第一个用户界面即欢迎界面如图4.2所示,通过WelcomeView类来实现该界面加载了一个欢迎中国象棋图片,并通过监听菜单图片,向Activity发送Handler消息通知控制器切换用户界面;然后切换到菜单界面MenuView。 图 4.2 游戏欢迎界面 MenuView类中通过监听“开始游戏”切换到游戏界面;通过监听“打开声音”/“关闭声音”进行声音的打开与关闭,与此同时“打开声音”、“关闭声音”按钮进行切换;通过监听“帮助”来切换都帮助界面;通过监听“退出游戏”结束游戏用行退出游戏。 帮助界面HelpView,该类中加载图片,图片中显示该游戏“怎么玩”同时监听“返回”按钮,向Activity发送Handler消息通知控制器切换用户界面从而返回到菜单界面,如图4.3所示。 图 4.3 菜单界面 4.4 游戏界面相关类的实现 游戏界面GameView,该类是整个程序中最主要的类,该类首先是绘制屏幕上的内容棋盘和对应的棋子。提示一方先走;当“黑帅”或者“红将”被吃的话,弹出您赢了或者您输了通过监听结束游戏切换到菜单界面。或者点击退出按钮也可结束游戏切换至菜单界面。监听声音按钮来控制声音的开与关并以红色显示声音开,消失即为关,如图4.4所示。 图 4.4 游戏界面 4.5 中国象棋的规则及走法的实现 (1) 行棋规则 中国象棋分为红黑双方,以楚河汉界为分界线,双方各执16字,分别为2车2马2相2仕2炮1将5卒,各自走法不同,具体如下: 马:只可以走“日”字方格,因此一匹马的最理想落子点有8个,但存在绊马腿的情况,即从马的位置到要走到的目标位置,顺着此方向,“日”字方格有两个方向,即两格长度和一个长度,马紧挨的两格长度方向的位置不能有子,否则即被绊住,不能走动。若目标位置为空,即可走过,若为对方的棋子,即可吃掉。 图4.5马的走法 红黑马规则走法的介绍: case 10://红马 case 3://黑马 if(!((Math.abs(toX-fromX)==1 && Math.abs(toY-fromY)==2) || (Math.abs(toX-fromX)==2 && Math.abs(toY-fromY)==1))){ return false;//马走的不是日字时 } if(toX-fromX==2){//向右走 i=fromX+1;//移动 j=fromY; } else if(fromX-toX==2){//向左走 i=fromX-1;//移动 j=fromY; } else if(toY-fromY==2){//向下走 i=fromX;//移动 j=fromY+1; } else if(fromY-toY==2){//向上走 i=fromX;//移动 j=fromY-1; } if(qizi[j][i] != 0) return false;//绊马腿 break; 炮:只可以走直线,且一步可以走任意距离,其起始点与目标点之间不得存在其他棋子。炮吃子的条件是与目标棋子在一条直线上,且两子之间必须有且只有一个棋子作为“跳板”,让炮进行跳跃式攻击。 红黑炮规则走法的介绍: 图4.6炮的走法 case 11://红砲 case 4://黑炮 if(fromY!=toY && fromX!=toX){//炮走直线 return false;//返回false } if(qizi[toY][toX] == 0){//不吃子时 if(fromY == toY){//横线 if(fromX < toX){//想右走 for(i = fromX + 1; i < toX; i++){ if(qizi[fromY][i] != 0){ return false;//返回false } } } else{//向走走 for(i = toX + 1; i < fromX; i++){ if(qizi[fromY][i]!=0){ return false;//返回false } } } } else{//竖线 if(fromY < toY){//向下走 for(j = fromY + 1; j < toY; j++){ if(qizi[j][fromX] != 0){ return false;//返回false } } } else{//向上走 for(j = toY + 1; j < fromY; j++){ if(qizi[j][fromX] != 0){ return false;//返回false } } } } } else{//吃子时 int count=0; if(fromY == toY){//走的是横线 if(fromX < toX){//向右走 for(i=fromX+1;i<toX;i++){ if(qizi[fromY][i]!=0){ count++; } } if(count != 1){ return false;//返回false } } else{//向左走 for(i=toX+1;i<fromX;i++){ if(qizi[fromY][i] != 0){ count++; } } if(count!=1){ return false;//返回false } } } else{//走的是竖线 if(fromY<toY){//向下走 for(j=fromY+1;j<toY;j++){ if(qizi[j][fromX]!=0){ count++;//返回false } } if(count!=1){ return false;//返回false } } else{//向上走 for(j=toY+1;j<fromY;j++){ if(qizi[j][fromX] != 0){ count++;//返回false } } if(count!=1){ return false;//返回false } } } } break; 象、相:只可以在己方阵营走动,且仅限于7个点,即己方“田”字格上的7个点,走的是斜线,走动时,起始点与目标点构成一条斜线,若该斜线的中点位置存在其他棋子,则被绊住无法走动。 图4.7象的走法 case 6://黑象 if(toY>4){//不能过河 return false; } if(Math.abs(fromX-toX) != 2 || Math.abs(fromY-toY) != 2){//相走“田”字 return false; } if(qizi[(fromY+toY)/2][(fromX+toX)/2] != 0){ return false;//相眼处有棋子 } break; case 13://红相 if(toY<5){//不能过河 return false;//返回false } if(Math.abs(fromX-toX) != 2 || Math.abs(fromY-toY) != 2){//相走“田”字 return false;//返回false } if(qizi[(fromY+toY)/2][(fromX+toX)/2] != 0){ return false;//相眼处有棋子 } break; 将、帅:只可以在己方阵营走动,且仅限于9个点,即己方底三行中三列形成的9个交叉点,也就是俗称的“九宫”,一步只可以走动一个方格的直线距离作为本方的主将,镇守大本营,双方的主将是不能够处于同一条直线而主将之间不存在其他的棋子进行隔挡。 图4.8将帅的走法 case 1://黑帅 if(toY>2||toX<3||toX>5){//出了九宫格 return false; } if((Math.abs(fromY-toY)+Math.abs(toX-fromX))>1){//只能走一步 return false; } break; case 8://红将 if(toY<7||toX>5||toX<3){//出了九宫格 return false; } if((Math.abs(fromY-toY)+Math.abs(toX-fromX))>1){//只能走一步 return false; } break; (2) 棋盘的表示 针对棋盘的设计,每一种棋子对应一个固定的值用以识别该棋子的类型,那么设计就根据红黑双方的棋子以及每个类型的棋子,设计规则类(GuiZe类,调用其中的canMove方法用以判断某一步走棋的是否可行。规则类的设计则采用了常规的办法,因为棋子的种类只有7种,且红黑双方处于棋盘的两端,某些棋子走动时的方向不一样,设计时就要进行分类讨论设计,供存在14中不同的判别方法来对所以的棋子走法进行判别是否可行,每一个判别方法都对应于其独有的判断算法。 棋盘上各种棋子以及棋盘的初始布局的设计采用10*9的数组来进行标识,如下图4.9所示 : 图 4.9棋盘初始布局 各个数字的对应关系如下: 0-无棋子;1-黑方的帅;2-黑方的车;3-黑方的马;4-黑方的炮;5-黑方的士;6-黑方的象;7-黑方的卒;8-红方的将;9-红方的车;10-红方的马;11-红方的炮;12-红方的士;13-红方的相;14-红方的兵。 坐标(0,0)到坐标(8,4)之间的坐标代表楚河汉界的一方,坐标(0,5)到坐标(8,9)之间的坐标代表楚河汉界的另一方,即红黑双方各自的领土。 电脑走棋时通过构造一个走法类ChessMove,创建一个对象调用NegamaxEngine类中的Search()函数根据当前局势查询一个最好的走法记录棋子的原有位置坐标、目标位置坐标、棋子类型并对该对象进行初始化。然后根据该对象记录的原有位置坐标和目标位置坐标进行数据改变达到行棋目的。 玩家走棋是通过对屏幕进行监听,从而记录棋子类型,原有位置坐标和目标位置坐标,通过调用规则类GuiZe中的CanMove判断该棋子走法是否可行符合棋子走棋规则,可行就改变原有位置和目标位置数据,达到行棋的目的 轮到走棋的一方,游戏界面当前位置显示走棋一方的“黑帅”或者“红将”,将某个棋子从一个交叉点走到另一个交叉点,或者吃掉对方的棋子而占领其交叉点,这样一方走棋结束当前位置显示改变轮到另一方走棋。 任何棋子走动,如果目标位置上有对方的棋子,就可以把对方的棋子拿出棋盘,即在10*9数组中相应位置的数字变为自己棋子所对应的数字,自己棋子原来所在的位置对应数组的数字变为0,刷帧线程不断的刷新界面改变屏幕显示,这样对方的棋子就被吃掉,在屏幕上消失在对应显示自己的棋子;如果目标位置上没有对方棋子,10*9数组对应目标位置数字改变,原有位置数字变为0,刷帧线程更新界面改变显示。 4.6 游戏人机对战的实现 (1) 首先产生所有可能的走法,定义一个ArrayList容器,把可能的走法放入ArrayList容器里面。 public List<ChessMove> allPossibleMoves(int qizi[][]){//产生所有可能的走法 List<ChessMove> ret = new ArrayList<ChessMove>();//用来装所有可能的走法 for (int x = 0; x < 10; x++){ for (int y = 0; y < 9; y++){//循环所有的棋牌位置 int chessman = qizi[x][y]; if (chessman != 0){//当次位置不为空时,即有棋子时 if(chessman > 7){//是红方,即是玩家棋子时跳过 continue; } .......... } } } return ret.isEmpty() ? null : ret;//当ret中没有走法时,返回空,有时返回ret } (2) 利用随机数从容器中取出一种走法,完成移动。 public ChessMove searchAGoodMove(int[][] qizi){//查询一个好的走法 List<ChessMove> ret = allPossibleMoves(qizi);//产生所有走法 try { Thread.sleep(1000);//睡眠四秒钟,以便调试 } catch (InterruptedException e) {//捕获异常 e.printStackTrace();//打印堆栈信息 } return ret.get((int)(Math.random()*ret.size())); } 4.7 系统流程图 游戏流程图如图4.10所示 图4.10系统流程图 5 运行测试 5.1 测试用例表 测试编号 测试目标 期望结果 实际结果 001 测试象棋“马”是否“绊马腿” 游戏过程中,“马”在绊马腿情况下不能移动。 能实现“绊马腿” 002 测试一方棋子能否被另一方吃掉,并消失 棋子被吃后消失,吃子的棋子能代替被吃棋子的位置 一方棋子能被另一方吃掉,并消失 003 测试对手的象棋“将”能否被将死,能结束游戏 对手的象棋“将”被将死,并出现提示“你赢了” ,结束游戏 对手的象棋“将”被将 死,能结束游戏 004 测试象棋“炮”是否能隔子吃掉对手的棋子,即“炮打隔子” “炮”隔子吃掉对手棋子 “炮”能“炮打隔子” 005 测试游戏棋子是否能移动 棋子从一个到另一个位置 游戏棋子能移动 006 不同分辨率模拟器能否正常运行 能够正常运行 不能正常运行 007 能否对将 可以对将 不能对将 5.2 测试结果 (1) 测试001“马”是否“绊马腿”测试结果如图5.1所示 图5.1测试绊马腿 (2) 测试002一方棋子能否被另一方吃掉测试结果如图5.2所示 图5.2测试吃子 (3) 测试003“将”能否被将死测试结果如图5.3所示 图5.3测试能否赢棋 (4) 测试003“将”能否被将死测试结果如图5.4所示 图5.4测试对将 (5) 测试006不同分辨率模拟器能否正常运行如图5.5所示 图5.5测试不同分辨率模拟器 6 小结 三周的Android实训,已接近尾声。在这短暂的三周之内,有成功有失败;有喜悦有心酸。在实训老师的带领下,我学到了很多。我们小组在老师的协助下最终成功的完成实训项目。在这次实训中让我学到了,对于每一个项目开发,都需端正态度,量力而行,发挥自己的长处,这样不仅有利于促进团队项目开发的进度,还有利于把自己代入这个项目中。当自己融于这个项目时,就能多思考。这样是一个自我学习的过程,这里本来不会做,但是经过这个项目或这个模块后,这里也就会了,把不会的变成会的,把别人的知识变成自己的,这才是会学习。 通过为期三周的Android实训,这次的实训让我学到了很多知识。在项目中,除了让我明白工作中需要能力,素质,更重要的是学会如何去完成一个任务,懂得了享受工作。当遇到问题时要冷静去想办法一点一点的排除障碍,到最后取得成功,一种自信油然而生,这就是工作的乐趣。有时候也需要虚心请教,从别人身上能够学到自己没有的知识,每一次的挫折只能使我们更接近成功。在这次项目中让我体会到了团队合作的重要性,团队合作注重沟通和信任,不能不屑于做一些小事,永远要保持亲和诚信,把专业理论运用到具体实践中,不仅加深我对理论的掌握和运用,这是实训中最大的收获。 刚开始接触Android感觉到他很有意思,在界面开发和web也可以形成想通的架构,更加方便,视觉上也非常的酷,前期我通过大量的Android SDK开发范例和Android提供的API文档中学习,通过这些例子的学习我从中发现了很多和以前Java相同的思想。在这为期三周的实训中让我学到了很多课堂上学不到的知识,让我基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握使用,对其事件的监听也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。 通过这次的实训,让我学到了很多,因为我们都是第一次接触Android,所以老师先给我们讲的每一个程序我们都去认真编写,通过这些小程序,让我们知道了如何去创建一个Android项目,了解了Android项目里的每一个文件夹和文件的作用。在这次项目中让我体会到了团队合作的重要性,团队合作注重沟通和信任。同时还让我知道做任何事都需端正态度,量力而行,发挥自己的长处,这样不仅有利于促进团队项目开发的进度,还能让我们知道我们自己的位置。总之在这次的实训中让我学到了知识,同时也让我学到了经验,这让我在以后的工作中有重大帮助。 参考文献 [1] 刘敏. 移动终端的Android移植与应用程序设计[D]. 西安电子科技大学 2011 [2] 王蕾. 哈尔滨招行Android手机银行汇率换算模块的设计与实现[D]. 吉林大学 2011 [3] 施金兰. 基于Android平台的网络共享研究与实现[D]. 华东师范大学 2011 [4] 赵建勋. 基于Android平台的移动位置服务的开发与实现[J]. 现代商贸工业. 2010(20) [5] 李林涛,朱珊虹. 基于Android系统的手机游戏黑白棋的设计与实现[J]. 新乡学院学报(自然科学版). 2011(03) [6] 丛秋波. 用于Android手机操作系统的视频引擎[J]. 电子设计技术. 2010(07) [7] 郭国勇. Android启动过程优化研究[D]. 兰州大学 2012 [8] 摆云. 基于Android开放平台和无线通信网络的实时音视频传输系统设计与实现[D]. 兰州大学 2012 [9] 刘牛. 基于Android平台的数字电视机顶盒模拟器的研究与开发[D]. 兰州大学 2012 [10] 王康. Android RIL研究及其在无线通讯模块上的实现[D]. 太原科技大学 2012 附录: ChessActivity.java package com.example.chessgame; import android.app.Activity;//引入相关的包 import android.media.MediaPlayer; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Window; import android.view.WindowManager; public class ChessActivity extends Activity { boolean isSound = true;//是否播放声音 MediaPlayer startSound;//开始和菜单时的音乐 MediaPlayer gamemusic;//游戏声音 Handler myHandler- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 中国象棋 设计 实现 毕业论文
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文