基于Android的五子棋游戏的算法分析
2017-09-10邹元杰
邹元杰
【摘要】五子棋起源于中国古代的传统黑白棋种之一,它不仅能增强思维能力 提高智力,而且富含哲理,有助于修身养性。本文主要阐述以eclipse为开发工具, 基于智能手机Android设计一个五子棋游戏,并对其中相关算法进行研究。
【关键词】Android 五子棋 算法
一、Android开发环境介绍
Android的上层应用程序是使用的Java语言开发,同时还需要基于Dalvik虚拟机。所以,Google公司推荐使用主流的Java去继承开发环境Eclipse。不过只有Eclipse还是远远不够的,因为是使用Java语言进行开发,所以这部分还应该有由SUN公司提供的Java SDK(其中包括JRE:Java Runtime Environment)。此外,Android的应用程序开发和Java开发有较大区别的,所以还需要有Google提供的Android SDK。在Eclipse上安装一个AVD的虚拟机也是必要的。同时,还需要在Eclipse安装ADT,使得在有更新程序的时候可以能够为Android开发提供开发工具的升级或者变更,也是Eclipse下开发工具的升级下载的工具。
二、Android应用程序组件
Android的一个主要特点是,一个应用程序可以利用其他应用程序的元素(假设这些应用程序允许的话)。例如,如果你的应用程序需要显示一个图像的滚动列表,且其他应用程序已经开发了一个合适的滾动条并可以提供给别的应用程序用,你可以调用这个滚动条来工作,而不用自己开发一个。你的应用程序不用并入其他应用程序的代码或链接到它。相反,当需求产生时它只是启动其他应用程序块。
对于这个工作,当应用程序的任何部分被请求时,系统必须能够启动一个应用程序的进程,并实例化该部分的Java对象。因此,不像其他大多数系统的应用程序,Android应用程序没有一个单一的入口点(例如,没有main()函数)。相反,系统能够实例化和运行需要几个必要的组件。有四种类型的组件:活动(Activities)、服务(Services)、广播接收者(Broadcast receivers)、内容提供者(Content providers)。
然而,并不是所有的应用程序都必须包含上面的四个部分,你的应用程序可以由上面的一个或几个来组建。当你决定使用以上哪些组件来构建Android应用程序时,你应该将它们列在AndroidManifest.xml文件中,在这个文件中你可以声明应用程序组件以及它们的特性和要求。
三、设计思路
此游戏主要是采用Android的View框架编写,部分框架运用Android中的其他组件。主要运用了算法来实现对棋局的分析,棋盘输赢的判定。
UI方面:此游戏当进入游戏的界面时,调用的是一个用相对布局-AbsoluteLayout的XML布局文件。其中包括了一个IamgeView和4个Button.分别实现了不同的功能。第一个Button是进入新游戏,点击按钮进入新游戏,来选择对手。第二个Button是帮助,用了一个TextView来说明怎样来进行游戏。第三个Button是游戏的关于,用了一个AlertDialog来介绍了一下游戏的这个游戏的好处。第四个Button是游戏的退出按钮。在游戏中,用画线来布满了整个的手机屏幕,在上面用了TextView来进行了文字的说明和提示。
四、相关的算法研究
关于盘面情况的表示,首先得到屏幕的大小,然后根据所画棋子的大小来确定下一条棋盘的画线。产生棋盘上所有的线。分析规则中,判断各个四个方向的棋子:在某个方向(八个中的一个)可下多少棋子,判断是否还能下到满5个棋子,最核心的应该是胜负判断,实际上,是根据当前最后一个落子的情况来判断胜负的。需要从四个位置判断,以该子为出发点的水平,竖直和两条分别为 45度角和135度角的线,目的是看在这四个方向是否最后落子的一方构成连续五个的棋子,如果是的话,就表示该盘棋局已经分出胜负。部分核心算法实现如下:
开始分析,扫描所有空白点,形成第一次分析结果;
第二次分析,分析第一次形成的结果,第一次分析结果会把一步棋在四个方向上可形成的结果生成最多四个FirstAnalysisResult对象(敌我各四);
第三次分析,双方都不可以制造活4,找双活3棋子,不行就找半活4,再不行就找单活3,双活2;endprint