基于Android环境下人机对弈五子棋的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1 项目背景和意义 (2)
2 相关技术介绍 (2)
2.1 Android体系构架 (2)
2.2 Android系统核心 (3)
3 软件设计 (4)
3.1 总体设计 (4)
3.2 模型建立 (6)
3.3 控制模块介绍 (6)
3.4 显示模块设计 (7)
3.5 人工智能设计 (7)
4 系统实现 (8)
4.1 设计描述 (8)
4.2 初始化模块 (8)
4.3 主控制模块 (9)
4.4 落子模块 (10)
4.5 胜负判断模块 (11)
5 人工智能算法 (12)
5.1 搜索算法 (12)
5.2 评值算法 (13)
5.3 算法的主要设计思路 (14)
5.4 具体想法 (15)
6 实现效果 (16)
基于Android环境下人机对弈五子棋的设计与实现
专业:计算机科学与技术学号:201113007501 学生姓名:薛俊文
指导老师: 刘亮龙讲师
【内容摘要】本文围绕基于Android操作系统,实现五子棋游戏的人人对战和人机对战程序,分析了五子棋的常用人工智能算法,并设计了算法,基于Android平台上以Java为语言开发了一个简单的五子棋小游戏,实现了五子棋的人机对战和人人对战。
【关键词】移动平台;Android;五子棋;人工智能
1 项目背景和意义
智能手机有Symbian、Windows Phone、Android、IOS、BlackBerry 10这些系统。Android 系统鹤立鸡群占据着巨大的市场份额,随着人们接触的手机时间越来越长,针对Android系统的程序和游戏层出不穷。每个手机都有手机游戏,是人们闲暇时间的一种娱乐方式,而因为Android的巨大市场份额,Android平台下的手机游戏更是受到青睐。手机游戏不仅操作方便,还能开发思维,让用户在休闲的同时拓展了思维增长了见识。手机的小巧便捷,方便的特性成为我们日常生活中必备通讯工具。拥有巨大市场空间的手机平台游戏会着智能手机的普及和应用必然会迎来新一轮的热潮。在新一轮的热潮中,Android手机客户量大,所以手机小游戏的发展空间很可观。
2 相关技术介绍
2.1 Android体系构架
在Android SDK中,定义了让开发者使用与核心应用程序相同API的权限。但要被应用程序架构的安全机制限制,使用者以用同样的机制来新增、置换组件。目前所有的应用程序是由服务及系统来组成,包含有: 内容提供者、资源管理器、通知管理器、活动管理器、视窗管理器、位置管理器、电话管理器、包管理器。具体的框架如图1所示:
图1Android架构的五个部分
一些C/C++的类库被Android使用,使用这些类库的组件各不相同。这些功能可以通过应用程序框架被开发者使用。包含以下核心类库: surface Manager、 3Dlibraries: SGL、Media Frame work、Free Type、SSL、SQLite:SQLite、web Kit、lib c。
虽然Android开发、撰写应用程序是利用Java语言,但不使用Java相应的组件来运行程序,而是利用Google开发的Android组件运行。核心类库和Dalvik虚拟机是Android运行时的两个重要的部分。
2.2 Android系统核心
一个应用程序可以利用其它应用程序的元素是Android的主要特点。
应用程序发出请求的时候,不管它请求的是哪个部分,系统都应该能启动这些进程而且要把它的Java对象实例化。Android应用程序的入口点可能不止一个。实例化和运行所需要活动、服务、广播接收者、内容提供者这四种组件。如图2所示:
图2:实例化和运行所需组件
不是所有的应用程序都一定需要这四种组件,可能只有一个或者几个组成。确定了要用什么组件的话,就应该把所需要的组件列在AndroidManifest.xml文件中,在这个文件中你可以声明应用程序组件以及它们的特性和要求。
3 软件设计
3.1 总体设计
该设计是Android平台下的五子棋游戏。系统的总体设计模型如图3所示:
图3 总体设计模型
图4 五子棋类说明图
该游戏又分为以下几个模块:初始化模块、主控制模块、人工智能模块、落子模块、胜负判断模块。
相应的数据流动如图5所示:
图5系统主流程图
3.2 模型建立
五子棋分黑白两种颜色,若那种颜色首先在横、竖、左斜、右斜这任意方向大于等于五个棋子,就胜利了。
所以,该游戏模型的重点就在于棋盘和棋子。流程如图6所示:
图6模型建立流程
常见的五子棋的棋盘为15×15,我所绘制的棋盘为了满足不同型号手机的需求,设为根据游戏界面的大小自动调整。所以就必须设置棋盘上每个点的大小,从而计算出游戏界面上的横竖坐标。
首先画出棋盘的框架,再根据计算出的横竖坐标,产生棋盘上所有的线,这样棋盘模型就建立好了。
棋子就应该利用方法与设置好的点对应,通过对点的属性修改载入相应的棋子模型,棋子模型就建立好了。
3.3控制模块介绍
控制模块分为主控制模块、胜负判断模块、落子模块中的处理分析部分。控制模块如图7所示:
图7 控制模块设计
主控制模块被用来转换下棋的顺序,当下棋顺序到了某一方的时候,把整个数据和流程转到响对应的模块里。
胜负判断模块将根据预先设定的规则,判断游戏胜负。
玩家与电脑落子模块中的处理分析部分是把用户点击界面的事件接收后进行处理分析。
3.4 显示模块设计
游戏界面初始化模块、落子模块中的接收点功能与显示棋子功能都属于显示模块。显示模块设计如图8所示:
图8 显示模块设计
运行游戏用户直接进入主界面,初始化模块运行,用户将看到主界面上的棋盘与选择游戏模式的提示窗口。用户选择游戏模式后,提示框将消失,游戏开始。
落子模块接受用户的触摸,在棋盘上对应的位置显示出棋子。游戏胜利后再弹出提示窗口说明胜负,并提示如何继续进行游戏。
3.5人工智能设计
本游戏的人工智能是根据五子棋下法的特点从而计算出最佳的落子位置,或防守或进攻,从而达到胜利的目的。人工智能总体的流程是:人机对战游戏开始,轮到手机落子的时候先计算搜索范围,清空上一轮搜索结果。进行第一次搜索,扫描所有空白点是否在搜索范围内,判断是否可能连成五子,是否为活1、半活2,抛弃该点是否有一方即将胜利。接着进行第二次搜索,在即将胜利位置落子,不再往下分析。判断是否有一方可以制造出活4是否整理出可以制造活3,半活4等棋型的位置,在制造活4处落子,不再往下分析。最后进行第三次搜索,找出最佳落子位置落子。