学术论文网
基于cocos2dx的中国象棋开发
发布日期:2024-11-01 22:06:37

  绪论

  1.1 象棋程序研究进展概述

  早期的象棋软件都是需要人机高手来辅助的,所谓人机高手便是指本身能力就较为不错,借助象棋软件就能够达到顶尖象棋高手水准的棋手。棋局的对决往往是象棋软件选择不同的开局,在中盘中,棋手根据自己的爱好选择软件给出的着法,在残局时,完全由棋手主导比赛。在经历了无数年的发展,象棋的开局库、残局库、中局库都不断完善和发展,在布局方面也是越来越强大,形成了真正的智能,棋力也越来越强悍。

  国内中国象棋程序的发展相较于国际象棋程序稍慢一步,最早最为出名的是一款叫做“zmbl”(纵马奔流)的象棋软件于2003年在第八届电脑奥林匹克大赛中以六胜二和的战绩夺得了当时的中国象棋项目的冠军,但当时中国象棋程序才处于起步阶段,总共只有五个参加比赛的项目。到2004年,象棋的运算都还是采取单核cpu,由于硬件效率的低下,故在中局布局方面象棋软件展现的能力普遍不强。到2005年,随着硬件技术的发展,进入了双核时代,出现了一款名为象棋奇兵的软件,夺得了多个第一并且携手五名业余选手击败了当时著名的职业棋手吕钦、许银川带领的广东队,展现出了超越职业棋手的棋力。2005年可谓百花齐放,先有象棋奇兵后于下半年便出现了棋天大圣,棋天大圣在中局布局方面的能力优于象棋奇兵,布局和中局都展现了十分强大的能力,在2006年,占据网络,并于8月份和许银川、胡荣战成和局。

  2006年以后,国内每年都会举办专业性的象棋软件大赛,硬件技术也逐步提升到四核,象棋发展也进入了飞速发展的时期。在之后直到2008年,象棋旋风和天机象棋都通过布局库的制作逐渐摆脱了人机高手而独立出来,开始真正超越人类智能。到现在,中国象棋软件已呈现一种百花齐放的状态。

  1.2 课题意义

  对于即将离开校园从事计算机相关行业的同学,逻辑能力和代码设计能力是最为重要的两项能力。在临近毕业时,最后一段学习的时间,通过这样经典的游戏项目设计能够全方位的提高面向对象编程能力、c/c++开发实践、算法设计方面的能力,全面总结复习大学所获所得,为毕业后走入工作岗位打下良好基础。

  象棋游戏是一款优秀的休闲游戏,也是中国传承下来的文化瑰宝,具有深刻的文化内涵。现如今,象棋依旧是玩家基数相当庞大的一款游戏,在人工智能博弈方面也是人们经常选择的一类课题,具有一定的研究价值。人工智能是综合性很强的一门边缘学科,在这个领域的学习研究对于逻辑和学习能力都具有一定的要求。

  1.3 课题目的

  本课题出发意向是综合大学期间学习的程序课程、逻辑能力课程,通过自主学习windows图形界面,将其转化为一种应用能力,拓宽自身对于代码的认知,从而能够进行简单的人机博弈方面的代码设计。

  四年里学习了大量的编程理论知识,在实际应用于开发领域,能力还是显得较为薄弱,毕业设计正是将四年所学集中实践的机会,借此机会,借助游戏编程使得在未来无论工作还是科研岗位都能拥有扎实的代码功底,并拓宽自身的能力,不断在学习和工作中发光发热。

  第2章 开发与运行环境

  2.1 系统开发工具的选择和介绍

  开发工具:visual stadio 2013

  引擎:cocos2dx

  运行环境:windows7/andirons

  Visual stadio是微软公司为开发者提供的非常好的编译器,迄今已经到2015版本了,并不断推出新的标准。Coscos2dx只能够在visual stadio 2012及后续版本使用,它是一款非常好的跨平台引擎框架,支持windows和andirons开发移植。

  第3章 需求分析

  3.1 用户总体需求概述

  一款良好的人机对弈程序,应当能够迅速对鼠标点击事件做出相应的响应,符合象棋经典规则的象棋布局和棋子走法,并且对于用户不正确的走法和点击应当作出合理的处理。在人机对战中,ai应当能够走出符合象棋规则,具有一定思维能力的着法。界面的渲染清晰美观,具有必要的按钮,对胜负判断准确无误。每次着法的生成应当具有音乐方面的交互,使得人机之间具有更强的交互性,并且避免或是只具有较少的异常。

  3.2 棋盘棋子的局面

  棋盘分为两块,分别为红方和黑方,在楚河汉界两侧呈镜像。红方为默认第一视角,棋子分为车马炮象士卒(兵)将(将),每个子的正中心位于棋盘上的交叉点,棋盘横向九个交叉点,纵向十个交叉点,对弈方式为执红先走,黑棋后走,采用回合制,在一方行走的时候另一方不能行走。每方的走棋方式,在各自第一视角中应当一致。完全公平和美观的棋局是非常重要的用户需求。

  3.3音效、按钮和点击响应

  音效方面应当尽量简洁明白就可以了,分别在点击中、吃子、被吃子、点击按钮、将军、被将军和将死设置不同的音效,起到提示的作用。在人机交互的体验上,点击事件的响应是最为重要的方面,灵敏和正确的响应点击事件能够给用户十分良好的体验。要有十分准确的案件响应就应当设置每个元素正确的触发区域并且能明确点击的元素、点击应当触发的事件。

  第4章 可行性分析

  一个项目的开始,最为重要的是可行性研究分析,只有做充足的可行性分析和规划才能开始。正确充分的可行性分析能够让项目的开发具有事半功倍的效果。通常可行性分析是由开发者本人和指导老师共同分析得出。在需求分析方面我做了如下调查分析需求。

  4.1 市场可行性

  现在的游戏行业异常火爆,每年世界各大游戏制造公司都会出产数量不菲的游戏,纵观而来,游戏行业是由“小作坊”和“正规军”构成。在“小作坊”(或是个人)开发游戏普遍是开发周期短,技术相对没有那么复杂的小型休闲游戏。中国象棋是休闲游戏中的佼佼者,最早起源于宋朝时期,可想而知,象棋是趣味性极强的一项智力休闲游戏,延续至今依然具备顽强的生命力。受众众多并且轻松便携导致棋牌类游戏的产生层出不穷,中国象棋依旧是其中玩家几乎最为广泛的游戏,经过市场调研,确定中国象棋却有其市场。

  4.2 硬件可行性

  该项目的代码规范,没有涉及炫酷的画面效果,内存方面也做了一些功课,使得项目并不是十分的大,并且运行流畅。在各方面的测试下,一般的andirons智能手机或是windows系统下都能够流畅运行,不存在任何硬件不支持的问题。

  4.3 技术可行性

  中国象棋开发和研究室一直以来大家广泛研究的一个课题,无论是学生还是科研人员、算法爱好者都十分钟情于中国象棋的编程研究,一方面来源于这个课题对于编程能力的增长,另一方面来自于它涉及知识十分广泛但却不算艰深难懂,十分适合用来学习增长编程能力。因而现在已经存在很多的方法和理论,从众多方法中寻找适合的方法,并作针对性的优化就能实现简单的中国象棋ai。

  第5章 项目功能模块设计

  5.1 项目总体代码结构设计

  5.1.1 象棋博弈思想

  中国象棋程序人工智能的实现都是来自于象棋博弈思想。博弈论是现代数学的一个新的分支,也是运筹学的一个重要学科,又称对策论。博弈论(对策论)会充分的考虑到游戏中对弈的双方的预测动作和实际动作,并着眼于研究它们的优化方案。我们首先考虑人是如何下棋的:

  首先着眼与局面,是否被将军?将军必须结将,而后再做走棋的考量。

  在中国象棋中,对弈双方在每走一步棋时会有如下几种考量:

  单步回合获得最大收益

  n步回合后自身获得最小收益最大

  n步回合后对方获得最大收益最小

: 思考

在本程序中采用了第二种思考方式,为何着眼于此?在博弈当中,首先假定对弈双方具备相同水平,即在每一步中都会选择最优解,那么在n步之后持子方必定只有得分最大值最小的选择。从当前回合考虑所得最优走法即为未来n步之后所能得到得分最小值最大的选择。如图5-1-1对弈过程:

输入 输出

 
 

  图5-1-1 对弈流程

  5.1.2 项目整体框架

  项目是基于cocos2dx框架来开发和设计的,在cocos2dx中封装了一个main函数,作为整个函数的入口,在入口中调用Application::getInstance()->run();开始第一个场景,通常第一个场景都是进入游戏的logo,然后就可以基于此来进行开发,组织我们自己创建的场景。代码结构如图 5-1-2-1:

  图 5-1-2-1 代码结构

  可以看到,将各个类进行封装,而且类的数目并不多,是因为总共做了两版,第一版类的数目众多,各种数据分门别类管理,通过接口访问交互,条理清楚却效率低下。对应的.h文件都是对每个类中的方法和子对象的声明,.cpp文件中都是方法和子对象对应的定义。项目的整体是由gameing类来控制(在game文件中),allinclue中封装了所有的全局对象和一些宏,AppDeletegate提供了场景切换加载音乐的一些方法,button主要负责按钮的管理,network实现了游戏的多人对战(socket网络编程)。Main作为整个项目的入口。

  项目框架如图5-1-2-2:

       
   
 
 

: 图形界面(渲染)

发送消息(点击事件)

  图5-1-2-2 项目框架

 1/3    1 2 3  
Copyright © 2008-2020 学术论文网 版权所有 粤ICP备16093775号