基于Android的中国象棋游戏的模拟

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:wgz204
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:针对Android移动终端人机实时交互的特点,结合中国象棋的特点,牵涉到Android开发和Java程序设计以及算法分析等相关知识。即勾勒了整个程序的结构框架,又详细分析和设计了其中的功能模块,例如棋子绘制,局面状态变量的意义和变化逻辑,人机交互的全过程等。全面讲解了搜索算法,从棋局表示、走法生成、局面估计到搜索树的遍历和Alpha-Beta剪枝算法。
  关键词:Android;局面估值;Alpha-Beta搜索;历史表;人机交互
  中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2014)32-7742-02
  Abstract: This is the feature which is real-time human-computer interaction about android mobile terminal .Combined with the characteristics of Chinese Chess, involving many knowledge of Android development and Java program design and algorithm analysis. Draw the outline of the structure of the entire application framework, and analysis and design of the module in detail, such as chess, situation of state variables and change the meaning of logic, the whole process of human-computer interaction. There is comprehensive interpretation of the search algorithm, from chess said, move generation, situation estimate to search tree traversal and Alpha - Beta pruning algorithm.
  Key words:Android; Situation to valuation; Alpha-Beta Search; History lists; Human-computer interaction
  1 概述
  计算机博弈是博弈游戏与计算机决策系统的结合,是人工智能里一个重要的研究领域,是机器智能、兵棋推演等领域的科研基础。中国象棋是中国古老的游戏,逻辑性极强,中国象棋模拟涵盖场景建模、状态表示、棋局分布、走法生成、搜索算法等方面,如何实现中国象棋的人机对弈显得尤其重要。
  随着3G技术和android系统的发展,智能手机的市场占有率极高,智能手机游戏在人们生活中占有重要的位置。中国象棋以它的趣味性、逻辑性、哲理性在棋牌游戏中首屈一指,深受多数玩家的青睐和热衷。基于此,本课题的研究和开发应运而生,并且更加注重人性化(例如多步悔棋、将军等棋局状态提示)、友好操作接口的设计和开发。程序中随时都能进行难度设置,符合多种玩家的技艺要求,并且可以伴随玩家棋艺水平竞相成长。总之,本课题的开发,以逼真的视角,简便的操作方式,人性化的设计,生动的下棋环境,定能让玩家体验到中国象棋的智慧和乐趣。
  2 需求分析與设计
  2.1 欢迎界面
  对事物评价的好坏,第一印象至关重要。程序是通过设置两张精美的中国象棋图片来启动的,就像放映电影一样,使游戏更加有厚重感、故事性和趣味性,从而使玩家进入纯净高远而且玄妙有趣的象棋世界。
  2.2 游戏界面
  游戏界面是玩家和计算机对弈的阵地,是程序绘制棋盘,排布棋子,并走动棋子的界面。
  游戏界面具有动态智能性,要时刻反应人机双方走棋落子的信息,同时熟知走棋规则,对玩家的不合理落子予以拒绝,及时的提醒玩家将军和被将军等重要信息。此外还将对玩家举棋和落子添加声效处理,对人机双方的走棋都标识出走棋位置和落子位置,使整个下棋过程更逼真生动,交互更加清晰明确。
  2.3菜单
  菜单处于Android的系统级别。提供人机下棋的难度等级“容易”、“中等”和“困难”,并给以选择提示。此外提供悔棋功能,即使在实物象棋对战中,棋手们的悔棋也是不可避免的,甚至是人性化的、无可厚非的,更何况程序是通过不总是精确到像素点的触屏操作呢,并且设置悔棋步数限制。玩家在有悔棋需求时,点击菜单选项中的“悔棋亦君子”来返回上一步的棋局状态,并同时计入悔棋步数中。
  3 搜索算法分析
  象棋搜索算法是象棋程序的灵魂,体现程序的健壮性和高效性,是整个程序设计和开发的关键。
  3.1局面表示
  局面表示是象棋程序的基础,它的好坏直接关系到走法生成、局面评估和搜索算法的效率。本象棋程序采用的是16*16的二维数组表示法。
  3.2走法和全局走法生成
  走法就是一个棋子按照象棋的规则从一个位置移动到另一个位置。棋子走法所遵循的的走棋规则被逻辑映射成一个走棋方向数组,从棋子的原位置出发,朝着走棋数组的值所标识的方向前进并得到棋子的落子位置,记录这个走法即可。
  在走法数据结构和各种棋子走法生成的基础上,遍历整个棋盘,找出当前走棋方的棋子,然后逐个棋子生成其所有可能的走法,全部保存下来,就得到了整个局面的全部走法。
  3.3局面评估
  局面评估是判断局面对红方(或者黑方)的优势,并把这个优势量化。目的是为了在多个局面之间进行比较,然后选择对应局面的走法,从而得到有利的局面。   棋盘上棋子的存在本身就是一种价值,这种价值随兵种不同而有大小之分。我们会根据人们的下棋经验来分配给棋子不同的存在价值。在计算棋子的存在价值时,把当前下棋方所有棋子的价值累加起来即可。
  一个棋子在棋局的真正价值,不仅与固定的分值有关,还与所处的位置有联系。程序中我们可以定义一个二维数组,来表示不同棋子在不同位置的分值。该分值数组也是由人们从经验中总结而来的。计算局面价值时,把当前下棋方所有棋子在其对应的数组位置上的分值全部累加起来。
  4 搜索算法
  搜索算法就是计算机的思考下棋的过程。计算机根据当前局面,生成所有可能的走法,试走每一个走法来到不同的新局面。在每一个新局面的基础上,同样再生成所有走法,并试走下去,走到更新局面。如此递归下去到达一定的深度。根据数据结构的知识我们知道,这正是以一颗树的形式来对问题展开讨论。我们把这颗精致的树叫做“搜索树”。
  4.1遍历搜索树
  搜索树正是计算机的整个思考空间,遍历它的意义就是得到思考空间中的最佳思考分支。由于一次只能走一步棋,所以我们只需要得到最佳分支的第一层走法即可,不必对整个从根节点到叶子节点的分支进行存储。
  4.2搜索剪枝
  对整棵搜索树进行完全搜索肯定能够得到最佳走法,但效率上却是事倍功半的。搜索的目的是为了获得一个可能的最佳局面,从而得到当前要走的最佳走法。如果沿着一个结点搜索下去,绝对不可能有比当前已经搜索到的最佳局面更优,那么可以断定这就是一个无用结点,应该减掉。
  4.3 Alpha-Beta搜索
  为了在搜索过程中引起剪枝,在递归过程中向下传递两个参数。第一个参数是Alpha,表示当前搜索结点走棋方已经搜索到的最优值,任何比它小的局面估值都没有意义。第二个参数是Beta,表示对手目前的劣势,这是对手所能够承受的最坏的结果。Beta值越大,表示对方的劣势越明显。在对手看来,他总是希望找到一个不比Beta值更坏的对策。如果当前结点返回一个比Beta更大的值,作为父节点的对方是绝对不会选择的,这个时候也会发生剪枝。
  4.4搜索辅助工具
  除了上面介绍的局面表示、走法生成和局面评估等之外,搜索算法还需要一些小帮手。例如交换走子方,在棋盘上放置、拿走一枚棋子,历史表,走法生成函数、是否过河、获得走法的起点和落子点等。这些功能可以看成搜索算法的几种不同的单位操作,以函数形式提供给搜索算法调用。
  5 結论
  本文从象棋程序设计的背景讲起,牵涉需求分析中界面的设计、菜单设计等知识,从基本的局面表示,到关键的搜索引擎,最后到具体的代码实现,完成了游戏的框架,并且通过测试进行正常独立运行。
  参考文献:
  [1] 吴亚峰,苏亚光,等. Android游戏开发大全[M]. 北京: 人民邮电出版社, 2013.
  [2] 高彩丽,许黎民,袁海,等.Android开发范例精解[M]. 北京:清华大学出版社,2012.
  [3] Cay S.Horstmann(美),Gary Cornell(美)等.Java核心技术[M].北京:机械工业出版社,2008.
  [4] 吴健,胡振国, 邓郑工,等.编程方法论[M].北京:国防工业出版社,2008.
  [5] 余志龙,陈立勋,等. Android SDK开发范例大全[M]. 2版.北京:人民邮电出版社,2010.
  [6] 李华明,等. Android游戏开发之从零开始[M]. 北京:清华大学出版社,2011.
  [7] 臧利萍,刘燕美,高振.基于Android的飞行射击游戏的模拟[J]. 电子世界, 2014,6
  [8] 臧利萍, 李玲玲, 管涛.基于GPU的大规模水域场景的动态模拟[J]. 中原工学院学报, 2013(8).
  [9] 谷歌Android开发者. Android的编程指南. http://developer.android.com/guide/topics/fundamentals.html.
其他文献
摘要:实验教学是计算机专业教学环节中一个重要组成部分,是使学生理论联系实际的最直接、最有效的环节,对培养学生创新能力、动手能力、分析问题和解决问题能力,实现“知能共进”有着不可替代的作用。以湖北理工学院计算机学院为例,阐述了人才培养模式改革、课程建设改革和实践教学改革的探索与实践。从实践措施与效果来看,有一定的借鉴意义。  关键词:计算机专业;人才培养;实验教学;改革与实践  中图分类号:G642
摘要:在这信息飞速发展的时代,微小说、微博、微电影似乎都在一夜间成了热门话题。在新媒体的迅速更新及普及下,微电影由于其放映的方便性,制作成本较低,故事性强等特点以不可抑止之势进入大众生活中,更是对青少年产生巨大的影响。正确的在学校教育利用这一趋势,微电影将会是学校教学中的一种新的、有效的教学方式。  关键词:微电影;学校教育;现状;策略  中图分类号:G424 文献标识码:A 文章编号:1009-
摘要:本文介绍一种基于CAN总线的分布式微型自动灭火系统,包括系统组成、功能以及节点模块的设计,并结合实际应用给出了一些抗干扰措施。  关键词:CAN总线;分布式;微型自动灭火系统  中图分类号:TP273文献标识码:A文章编号:1009-3044(2008)09-11728-02    Distributed Control System of Mini-stream Auto-fire-ext
摘要:大数据技术的发展和大数据时代的来临将对极大地推动GIS的发展。该文主要介绍了GIS当前的发展现状及瓶颈,探讨了GIS在大数据时代下的数据采集、数据存储与管理及数据分析和挖掘所面临的问题和初步的解决办法,展望GIS在大数据时代下的发展前景。  關键词:GIS;大数据;空间数据  中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2014)32-7585-03  Abstra
摘要:无论是门户网站还是如今流行的B/S结构的企业MIS,都是靠网页来展现它的内容、与用户进行交流。网页可以简单地描述为“内容+表现”,CSS(Cascading Style Sheet,级联样式表)是最好的网页“表现”技术,它使用一套完整而且灵活的规则,将网页的内容和表现方法彻底分离,利用它能设计出具有复杂布局的精美网页,并且代码简洁、干净、易于调整和维护,为网页设计人员和维护人员节省大量的时间
摘要:工程教育在“回归工程”的CDIO教育理念下,掀起了高校教学模式改革的新浪潮。这就要求教师与时俱进,根据新时代教师角色转型的需求,积极主动地转变教育思想,提升教学能力,扮演好自己的角色。文章从CDIO改革的背景,CDIO对教师的标准要求,教师的角色需求和教师队伍现状及应对之策四个方面进行了探讨。以我校实际情况为例对过渡时期教师队伍的现状进行了详细分析,提出了促进专业教师主动角色转型的措施建议。
摘要:该文以武汉城市职业学院电子信息工程技术专业为例,从战略性新兴产业的角度,重点研究了高职电子信息工程技术专业的建设和改革的情况,分析了专业建设当中存在的困难。  关键词:战略性新兴产业;电子信息;人才培养模式;评价方式;专业建设  中图分类号:G642 文献标识码:A 文章编号:1009-3044(2013)34-7942-03  为积极促进高等教育与经济社会发展紧密结合,引导高等学校主动适应
唐卡 2.6m×172m 2019—2020年  《大熊猫百图唐卡长卷》总共绘制了600余只大熊猫,代表了截止2019年12月全球圈养大熊猫的总数量。创作采用世界非物质文化遗产唐卡艺术语言,画面融入阿坝州独特的藏羌风情、自然美景、传统服饰等,与大熊猫完美结合,描绘了一幅阿坝人民向世界讲述大熊猫故事的浩瀚长卷,借此表现“阿坝九大”的精神内涵,提升“净土阿坝熊貓家园”的知名度与美誉度。《大熊猫百图唐卡
一、选购常识  所谓MVA即全称为(Multi-domain Vertieal Alignment),它是较早投入应用的广视角液晶面板,作为一种多象限垂直配向技术,MVA面板是利用突出物使液晶静止时并非传统的直立式,而是偏向某一个角度静止;当施加电压让液晶分子改变成水平以让背光通过则更为快速,这样便可以大幅度缩短显示时间,同时达到了160度以上视角,让视野角度更为宽广。  事实上,MVA面板技术最
摘要:本文根据作者多年的CAD建筑工程制图教学的实践经验,分析了传统的建筑工程制图教学法存在的不足。论述了解决这些关键问题的方法,为CAD教学和建筑类专业的工程技术人员更好地进行工程绘图提供了有益参考。  关键词:建筑工程;CAD教学;实践教学;分层目标教学法  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)24-1349-02  CAD Technology in