Android环境下的中国象棋设计与实现
2018-01-31雷舒昊何欢
雷舒昊 何欢
【摘 要】中国象棋不仅娱乐性强,还能激发头脑的思考,集娱乐与智慧于一体。但由于实体中国象棋的娱乐受限于时间地点和对弈人的限制,不能达到业余时间随时随地娱乐的目的,因此,在熟练掌握中国象棋的行走规则的背景下,学习了在Android平台下的游戏开发技术,设计和实现了在Android系统下的中国象棋游戏的设计,经过系统调试,中国象棋游戏运行良好,实现最终设计目标。
【关键词】Android;中国象棋;游戏开发;
中图分类号: TP 393 文献标识码: A 文章编号: 2095-2457(2018)30-0266-003
DOI:10.19694/j.cnki.issn2095-2457.2018.30.118
The Design and Implementation of Chinese Chess in Android
LEI Shu-hao1 HE Huan2
(1.Anshan First Middle School,Anshan Liaoning 114041;
2.National Computer Experimental Teaching Demonstration Center,Northeastern University,
Shenyang Liaoning 110819,China)
【Abstract】Chinese chess is not only entertaining,but also stimulates the mind and integrates entertainment and wisdom.However,due to the restriction of time,place and players, the entertainment of Chinese chess in the entity can not achieve the purpose of entertaining anytime,anywhere in the spare time.Therefore,under the background of mastering the rules of Chinese chess,we learned the game development technology under Android platform,designed and realized the design of Chinese chess game under Android system.After debugging,Chinese chess game runs well and achieves the final goal.
【Key words】Android;Chinese chess;Game Development
中国象棋是受广大中国人喜爱的休闲娱乐活动之一。中国象棋[1]发展至今已有两千三百多年历史,是中华民族的国粹。以往经常见到路边一堆人围在一起下棋的场面,但随着信息技术的高速发展,智能手机已进入到普通人的日常生活,手机游戏[2]这种大众化的娱乐方式也受到人们的广泛欢迎。因此手机端的游戏开发,成为目前研究的热点。中国象棋爱好者遍布全球,通过网络,下棋没有了地域限制,人们甚至可以和电脑对弈。在对弈中,对战双方通过对游戏规则的掌握使游戏结果利于己方,机器博弈研究成果已广泛应用于众多领域[3]。中国象棋集文化、科学、军事、竞技于一体,有利于开发人的智力,锻炼人的思维能力,并增强人的竞争意识[4],使人更加轻松地感受象棋的魅力。
鉴于此,本文在Android系统[5]上开发了一款中国象棋游戏,提出一种简单、实用、易操作的象棋游戏系统,方便各个年龄阶层使用。
1 系统需求及总体设计
1.1 系统需求分析
游戏界面需求如下:
(1)运行游戏,首先出现欢迎界面,随后进入菜单页面;
(2)菜单页面设置“开始游戏”、“象棋历史”、“象棋 规则”、“退出游戏”几个板块。点击“象棋历史”与“象棋 规则”可分别进入象棋历史介绍与游戏玩法介绍页面;
(3)单击“开始游戏”进入游戏主界面,分为单机游戏和联机游戏。游戏界面中玩家按照象棋规则下棋,可单击声音按钮控制声音,当游戏一方的“将”或“帅”被吃掉时,出现“你输了”或“你赢了”界面。游戏中玩家还可随时通过“退出”按钮返回游戏主菜单。
1.2 系统总体设计
系统构架及功能设计,使用功能层次图或类图等描述,并进行说明,如图1所示。
整个系统主要分为四大块,分别为登录模块,注册模块,注销模块,下棋模块。
登录模块为游客登录APP操作。注册模块是游客注册为会员操作,注册功能和注销功能紧密相连,注销和注册都可以由管理员进行。而注册还可以由游客自行完成。下棋模块是APP的核心模块,通过本模块进行中国象棋游戏,游戏结束后可进行再来一局和返回菜单功能。
2 系统详细设计及方案
下面将分别实现各个模块的设计,由于涉及的模块较多,这里列出主要模块的设计实现。
2.1 注册模块
实现功能:游客注册成为用戶,将用信息写入数据库内。
实现过程:(1)系统获取用户输入的用户名、密码和昵称。
(2)若有空,则提示用户输入完整;若均已输入,则系统检验该用户名、邮箱和手机号是否已被注册,即遍历用户表查询是否有相同信息,若有相同记录则提示用户该用户名/邮箱/手机号已被注册,否则用户注册成功,跳转至登录界面。
2.2 登录模块
实现功能:游客登录到APP。
实现过程:(1)系统获取用户输入的用户名、密码。
(2)若有空,则提示用户输入完整;若均已输入,则系统检验该用户名和密码是否已被注册,即遍历用户表查询是否有相同信息,若有相同记录则提示用户登录成功,否则输出相应结果,即用户名、密码不存在,跳转至菜单界面。
2.3 注销模块
实现功能:管理员注销用户,将信息在数据库中修改或删除。
实现过程:(1)管理员选择要注销的用户。
(2)若不存在,则提示用户输入完整;若存在,则系统检验该用户名是否已被注册,即遍历用户表查询是否有相同信息,若不存在有相同记录则提示用户该用户名不存在,否则用户注销成功。
2.4 下棋模块
实现功能:用户进行象棋游戏,选择单机或者联机。
实现过程:
1.游戏开始之前,初始化棋盘。
2.选中棋子进行走子操作,如果已有选中的棋子,则不能选中其他棋子。如果想选择其他棋子,则需点击已选中的棋子,进行取消。
3.判断是哪种棋子,若游戏未结束,则循环执行步骤3。
当未选择棋子时:如果选择位置为空,则输出结果。如果选择位置不为空,先判断当前执方,再对执行次数进行判断,选中时,执行次数为1,落下时为2.如果大于1,则执行另一方棋子,输入已落子,请另一方落子。
(1)为“兵”或“卒”时:新建solider类,将落点和棋子的原横纵坐标及棋子执方存入。
判断走棋规则是否合法。
如果非法,输出结果;
如果合法,則判断落点是否有子。
如果落点没有棋子,更新棋盘。
如果落点有子,首先判断是否为本方棋子,
如果是本方棋子,输出结果;
否则,更新棋盘。
如果吃掉的棋子为敌方将帅,则输出结果胜利。执行步骤4
行棋结束后,判断两帅是否相对,如果相对执行步骤4。
(2)为“車”或“车”时:新建car类,将落点和棋子的原横纵坐标及棋子执方存入。
判断走棋规则是否合法。如果非法,输出结果;如果合法,则判断落点是否有子。如果落点没有棋子,更新棋盘。如果落点有子,首先判断是否为本方棋子,如果是本方棋子,输出结果;否则,更新棋盘。如果吃掉的棋子为敌方将帅,则输出结果胜利。执行步骤4行棋结束后,判断两帅是否相对,如果相对执行步骤4。
(3)为“帅”或“将”时:新建marshal类,将落点和棋子的原横纵坐标及棋子执方存入。
判断走棋规则是否合法。如果非法,输出结果;如果合法,则判断落点是否有子。如果落点没有棋子,更新棋盘。如果落点有子,首先判断是否为本方棋子,如果是本方棋子,输出结果;否则,更新棋盘。如果吃掉的棋子为敌方将帅,则输出结果胜利。执行步骤4行棋结束后,判断两帅是否相对,如果相对执行步骤4。
判断棋子的执方,将棋子的当前位置赋给相应的变量,判断两帅是否相对,如果相对执行步骤4。
(4)为“士”或“仕”时:新建housecarl类,将落点和棋子的原横纵坐标及棋子执方存入。
判断走棋规则是否合法。如果非法,输出结果;如果合法,则判断落点是否有子。如果落点没有棋子,更新棋盘。如果落点有子,首先判断是否为本方棋子,如果是本方棋子,输出结果;否则,更新棋盘。如果吃掉的棋子为敌方将帅,则输出结果胜利。执行步骤4行棋结束后,判断两帅是否相对,如果相对执行步骤4。
(5)为“马”或“馬”时:新建horse类,将落点和棋子的原横纵坐标及棋子执方存入。
判断走棋规则是否合法。
如果非法,输出结果;
如果合法,
判断是否蹩马脚,如果蹩马脚输出相应结果
否则,判断落点是否有子。
如果落点没有棋子,更新棋盘。
如果落点有子,首先判断是否为本方棋子,
如果是本方棋子,输出结果;
否则,更新棋盘。
如果吃掉的棋子为敌方将帅,则输出结果胜利。执行步骤4
行棋结束后,判断两帅是否相对,如果相对执行步骤4。
(6)为“相”或“象”时:新建prime minister类,将落点和棋子的原横纵坐标及棋子执方存入。
判断走棋规则是否合法。
如果非法,输出结果;
如果合法,
判断是否堵象眼,如果堵象眼输出相应结果
否则,判断落点是否有子。
如果落点没有棋子,更新棋盘。
如果落点有子,首先判断是否为本方棋子,
如果是本方棋子,输出结果;
否则,更新棋盘。
如果吃掉的棋子为敌方将帅,则输出结果胜利。执行步骤4
行棋结束后,判断两帅是否相对,如果相对执行步骤4。
(7)为“炮”或“砲”时:新建cannon类,将落点和棋子的原横纵坐标及棋子执方存入。
判断走棋规则是否合法。如果非法,输出结果;
如果合法,
判断起始点和落点之间间隔的子数,如果大于1,输出相应结果
如果中间隔了一个棋子,判断落点是否有子。如果落点没有棋子,输出结果。
如果落点有子,首先判断是否为本方棋子,如果是本方棋子,输出结果;否则,更新棋盘。如果吃掉的棋子为敌方将帅,则输出结果胜利。执行步骤4
如果中间没有棋子,判断落点是否有子。如果落点没有棋子,更新棋盘。如果落点有子,首先判断是否为本方棋子,如果是本方棋子,输出结果;否则,更新棋盘。如果吃掉的棋子为敌方将帅,则输出结果胜利。执行步骤4
4.游戏结束,弹出对话框,选择重新开始或再来一局。
5.联机模式下,用户创建房间,第二个用户会自动搜寻第一个未满的房间,来加入到游戏中。进入游戏后,通过比目提供的数据监听,来对数据进行更新操作。当本方为黑时,下棋结束后将执方继续置为黑,知道数据更新后才进行行棋操作。
3 电路调试与验收
3.1 本次开发所用环境及工具
系统开发所使用的操作系统为:Windows10
开发工具[6]为:Android Studio
Java SDK版本:1.8.0.1610.12
Android版本:Android 9.0 API 28
AndroidManifest:minSdkVersion=15,targetSdkVersion=23
3.2 测试项目
(1)使用不同型號的安卓手机,系统是否能够正常显示和运行。
(2)系统能否正常连接数据库,多用户登录,服务端会不会发生异常。
(3)能否正常实现用户注册和登录,注册信息是否被写入到后端数据库内的用户表中。
(4)玩家的昵称是否正确的显示出来。
(5)各种棋子的判断是否正确。
(6)当取消棋子时是否正确的取消棋子的选中,当取消后是否能正确的选择下一个棋子。
(7)当选择空位置时,是否正确的显示提示信息。
(8)各种棋子的行棋规则是否正确的表现出来。
(9)能否正确的判断是否对将。
(10)吃掉敌方将帅后是否正确的显示游戏结束和胜利结果。
(11)游戏结束后弹出的对话框是否正确的显示再来一局和返回,以及能否正确的进行下一步操作。
(12)数据是否能正确同步。
(13)修改各类个人信息后,是否正常更新了数据库数据。
(14)一系列其它运行过程中的细节测试,包括UI界面的效果等。
3.3 测试结果
所测试项目均符合预期目标,并且APP在运行过程中并未出现任何异常,测试顺利结束。
4 结束语
本文在熟练掌握中国象棋运行规则的前提下,在Android系统上开发了中国象棋游戏,界面简洁,步骤易操作,实现了网络人工对弈的效果,以后的设计中还可以引入人工智能等先进热点技术,优化游戏算法,提示游戏性能。
【参考文献】
[1]危春波.中国象棋博弈系统的研究与实现[D].昆明:昆明理工大学,2008.
[2]姚昱昱,刘卫国.Android的架构与应用开发研究[J].计算机系统应用,2008(11):110-112.
[3]徐心和,王骄.中国象棋计算机博弈关键技术分析[J].小型微型计算机系统,2006,27(6):961-969.
[4]杜帮国.基于Java平台的中国象棋游戏的设计与实现[D].大连:大连理工大学,2013.
[5]胡伟.Android系统构架及其驱动研究[J].广州:广播电视大学学报,2008.8.
[6]赵燕萍.Java程序设计语言基础研究[J].硅谷,2013(8): 61-62.