基于cocos2d-x引擎的国际象棋游戏的设计与开发

基于cocos2d-x引擎的国际象棋游戏的设计与开发[20191215143607]
摘 要
随着近年来手机的日渐普及,手机游戏已经成为整个游戏领域发展速度最快的部分。根据英国某媒体研究公布的统计数据,2014年的手机游戏市场的产值已经达到5.87亿美元,比去年年翻了一番。该公司预计到今后几年里这一市场的产值将达到目前的6倍,增至38亿美元。手机游戏快速发展的同时按内容可分为:角色扮演类、冒险类、格斗类、体育竞速类、电影改版类、棋牌类等。纷繁的手机游戏种类已成为人类线上娱乐生活的不可缺少的最主流载体而存在,各类智能手机伴随着PC网络游戏为基础、3G网络的不断强化为措施的条件下大力迅猛发展手机网络游戏。
本游戏是基于移动平台2D游戏引擎cocos2d-x开发的一款棋牌类游戏,采用的开发语言是C++,使用microsoft visual studio 2010开发工具进行开发。?国际象棋这一项运动在欧洲是一项比较普及的运动,在欧洲的很多学校的学生,特别是高等学校的学生,基本上都会学国际象棋这一项运动。国际象棋作为一种具有1000多年历史的世界性的运动,是全人类的文化遗产,蕴藏着无穷无尽的学问和经验。该游戏通过与国际象棋引擎Stockfish的交互,有人机对战,习题训练,编辑棋局等模式,并能实现在线习题和本地习题的存储,即具有收藏棋局的功能,主要面向的人群是象棋初学者,通过该软件进行习题和战术的训练,从而提高玩家的国际象棋水平,本游戏目前有android版和windows版。
 查看完整论文请+Q: 351916072 
关键字:】手机游戏、android、管道通信、国际象棋、cocos2d-x、c++
目 录
第1章 绪论 1
1.1国际象棋背景及意义 1
1.2国际国内外象棋现状 1
1.2.1 国际象棋基本规则简介 2
1.2.2 FEN(福斯夫-爱德华兹记号法)介绍 5
1.2.3 UCI(国际象棋通用引擎协议)介绍 5
1.2.4 国际象棋通用引擎介绍 9
第2章 开发平台介绍 13
2.1 cocos2d-x介绍 13
2.1.1 Cocos2d-x简介 13
2.1.2 Cocos2d-x主要功能 13
2.1.3 Cocos2d-x引擎的特点 14
2.1.4 Cocos2d-x应用介绍 15
第3章 游戏主要模块介绍 17
3.1 需求分析 17
3.2 系统代码整体框架介绍 18
3.2.1 场景分类 239
3.2.2 屏幕自适应的实现 231
3.3 游戏主界面GameScene设计 233
3.3.1 场景搭建 233
3.3.2触屏控制 288
3.3.3逻辑判断 31
3.3.4 管道通信 37
3.3.4 不同模式的实现 40
3.3.6 数据存储 41
3.3 存档场景SaveScene设计 43
3.3.1 json文件解析与存储 43
3.3.2 列表显示设计 46
3.4网络题库 DailyScene设计 49
3.4.1 HttpClient通信介绍 49
3.4.2 HttpClient基础编程 50
第4章 游戏android平台的移植 53
4.1 cocos2d-x交叉编译介绍 53
4.2 android环境搭建 53
4.3 android移植难点与解决方法 54
4.3.1 linux平台的管道通信 55
5.3.2 json文件的读写 59
第5章 开发总结 61
致 谢 62
参考文献 63
附录一 英文文献 64
附录二 中文翻译 71
附录三 部分程序代码 72
第一章 绪论
1.1国际象棋背景及意义
国际象棋,又称欧洲象棋或西洋棋,是一种二人对弈的战略棋盘游戏。国际象棋的棋盘由64个黑白相间的格子组成。黑白棋子各16个,多用木或塑胶制成,也有用石块制作;较为精美的石头、玻璃(水晶)或金属制棋子常用作装饰摆设。国际象棋是一种把战略战术和纯技术融为一体的理想游戏,几乎就是融艺术、科学、知识和灵感为一炉的一种游戏。分析对局时是一种逻辑的实验使用,而在攻王的战斗中和战略问题运筹的时候,就需要有一种创造性的灵感。不过,国际象棋不是像纵横字谜那样单纯是一种文字智力的测试。国际象棋的竞争使双方投入一场不流血的战斗,是双方思想和意志的一场激烈尖锐的战斗以及体力上的坚韧不拔的较量。
游戏一直是市场中最丰盛的蛋糕之一。在工作之余玩玩游戏,已经成为当下社会大多数人的生活习惯。在智能手机的带动下,玩手机游戏成了一个新的生活习惯与社会现象。无论是Android抑或是iOS平台,手机游戏都是应用类型中数量最多的应用类型,比如《植物大战僵尸2》、《愤怒的小鸟》、《水果忍者》等游戏。而Cocos2d-x引擎在国内手机游戏开发使用的份额接近70%,而国外使用份额则是接近25%,在苹果APP排行榜top10里面,有7个都是用Cocos2d-x引擎开发的。通过Cocos2d-x引擎将国际象棋放到智能手机平台上,利用的智能手机的便捷性,使国际象棋脱离了实体,玩家能够随时随地的通过游戏来提升自己的象棋水平。
1.2国内外国际象棋现状
在国外,国际象棋是一门相当普及的棋类运动,在欧洲的很多学校在校生,特别是高等学校的学生,基本上都会学国际象棋这一项运动。国际象棋进课堂在欧洲已经具有100多年的历史。其具有数学的基础,而且数学是科学技术语言和组织思想的基本工具。国际象棋发展识别能力、注意力、记忆力、智力和分析力,这是个个人成长因素的基础。
国际象棋在我国的发展还不是很好,不是一个主要的棋类项目,国际象棋普及率远远不及中国象棋的和围棋项目。这就造成了,国际象棋在我国学校中的发展还是比较的缓慢,以常州为例,只有很少的几所学校有象棋选修课。而且在大部分学校社团的棋类社团中,几乎都没有国际象棋这一项活动,会下国际象棋的人很少,更不用说了解国际象棋文化的人了。
国际象棋作为作为一个全球化的棋类运动,将其程序化也必须遵守国际上所制定的协议,主要面对的有三种协议:开放性的Winboard/Xboard协议、新兴的UCI协议、以及具有版权的Chessbase协议。近几年支持前两者协议的引擎层出不穷,几乎每个月都会冒出四、五种新的引擎。所以作为程序设计者,主要工作便是设计写作界面,因为引擎都能遵守相同的协议,更换引擎便能更换游戏的引擎难度。本毕业设计主要面向的是UCI协议的引擎。
本毕业设计的课题为:基于cocos2d-x引擎的国际象棋游戏的设计与开发。希望通过制作一款手机上的国际象棋游戏来增加国际象棋的普及率,并且是针对新手而设计的国际象棋游戏,根据引言对国际象棋与Cocos2d-x引擎的介绍可以知道,整个设计可以分解为:通过Cocos2d-x引擎来构建象棋UI界面,运行国际象棋引擎作为思考的核心,UI界面获得玩家的触摸操控转化为指令,将指令通过管道发送到引擎,将引擎反馈的消息发送给UI界面并发回给玩家。
1.2.1 国际象棋基本规则简介
1.棋盘和棋子:
  国际象棋是由两方对下,以把对方的王‘将死’为取胜。国际象棋由白方先走,而后双方轮流走棋,直到对局结束为止。
图1-1 象棋主界面
  (1)国际象棋的棋盘是一个正方形,等分为64个方格,因此又被称为“64格”。这些方格有深浅两种颜色,交替排列。深色的方格称为黑格,浅色的方格称为白格,棋子就放在这些格子中移动。摆放棋盘时,须使每方的右下角是白格。
(2)国际象棋的棋子通常是立体造型,一共32个棋子,黑白双方各有16个棋子,浅颜色棋子一方称白棋;深颜色棋子一方称黑棋。每方棋子分别是:王(1个)、后(1个)、车(2个)、象(2个)、马(2个)、兵(8个)。
2.每种棋子的走法:
  (1)王 :横、直、斜都可以走,可进可退,但每步仅限走1格。(王车易位时除外)。
  (2)后 :横、直、斜都可以走,可进可退,格数不限,但不能越子。它是所有棋子中威力最大。
  (3)车 :横、直都可以走,可进可退,格数不限,但不能斜走,也不能越子。
  (4)象 :只能斜走,可进可退,格数不限,但不能越子。每方各有两个象,占白格的称白格象,只能在白格里走;占黑格称黑格象,只能在黑格里走。
  (5)马: 走法有点特别,先横走或直走1格,再沿离开原在格子的方向斜走1格,合起来为一步棋。可以越子,可进可退,也没有“中国象棋”中“蹩马腿”的限制。
(6)兵: 只能向前直走,不能后退,而且每步只能走1格。但在初始位置的兵,第一步可以选走1格或2格,以后每步只能走1格。兵的吃子方法与其走法不同,它只能向前斜进1格吃掉对方的棋子,所以它是直进斜吃。
3.特殊走法:除了上面每种棋子的一般走法外,国际象棋中还存在下面三种特殊走法
(1) 吃过路兵:如果对方的兵从初始位置一步走了2格,刚好形成本方有兵与其横向紧邻并列,则本方的兵可以立即斜进,把对方的兵吃掉,但不是占据它到达的格子,而是占据它经过的格子,就像它一步走一格时的情况一样。吃过路兵必须在对方的兵走出之后立即吃,隔了一步后就不能吃了。
(2) 兵的升变:任何一个兵到达对方底线时,即可升变为后、车、象、马的任何一种。
(3) 王车易位:在每个对局中,双方各有一次机会,可以同时移动己方的两个棋子王和车,作为一步棋,称为王车易位,简称易位。易位的方法是让王向车的方向移动两格,然后车越过王,放在与王紧邻的格子上。王向王翼易位时,车移动2格,称为短距离易位,简称短易位;王向后翼易位时,车移动3格,称为长距离易位,简称长易位。
由于王车易位是唯一的可以一次同时走动两个棋子,既能使王进入安全区域,又能使车易于出动,因此王车易位是有条件的,即王和参加易位的车必须在初始位置,而且没有走动过。如已经走动,即使是回到初始位置也不允许易位。遇到下列情况之一时,暂时不能进行王车易位:
1)王正受到对方棋子的攻击,即被“将军”。
2)易位后王受到对方棋子的攻击。
3)王易位所经过的格子受到对方棋子的攻击。
4)在王和参加易位的车之间还有别的棋子。
5)易位中的车如果正受到对方棋子的攻击,或这个车经过的格子和到达的格子受到对方棋子的攻击,可以易位。
4.胜、负、和的判定:
国际象棋的对局目的是把对方的王将死。当一方的王受到对方棋子攻击时,称为王被照将,攻击方称为“将军”,此时被将军的一方一定要走一步棋使己方的王不被吃掉,称为“应将”。当被将军的一方无法应将时,也就是王在下一步必被吃掉,称为被将杀(或将死)。王被将杀,就意味着对局的结束,被将杀的一方输棋,对方则获胜。除“将杀”外,还有对方“超时判负”和“对方认输”两种输棋情况。以下几种情况,对局不分胜负,双方算作和局:
(1)轮到一方走棋,提议作和,对方同意,判和。
(2)双方都无法将死对方王时,判和。
(3)一方连续不断将军,对方王又无法避免被连续将军,称为“长将和”。
(4)轮到一方走棋,王没有被对方棋子将军,但又无合乎棋规的棋可走,同时己方的其他棋子也都不能走动,称为“无子可动”和棋(旧称“逼和”)。
(5)对局中同一局面出现三次,而且每次都是轮到同一方走棋,判为和局。
1.2.2 FEN(福斯夫-爱德华兹记号法)介绍
FEN就是“福斯夫-爱德华兹记号法”(Forsyth-Edwards Notation),这是一种使用ASCII码字符描述国际象棋局面的标准。FEN是建立在19世纪由报社记者S·D·福斯夫设计的记录局面的标准基础上的。后来为了适合象棋软件的需要,由爱德华兹对此做了少许修改。

版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/dzxx/txgc/2225.html

好棒文