文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6589025

学习Android系统开发之余,编写了一个小游戏--交互式人机对战五子棋,自娱自乐。之所以称之为交互式人机对战五子棋,一是因为在进入人机对战模式这前,你可以任意设置好开局,同时,在对战过程中,你可以看到机器的思考过程,还可以标识出每一个落子点的优劣势;二是因为可以为机器增加游戏经验,使得机器越来越聪明。希望喜欢五子棋的同学能够喜欢,同时,它也非常适合入门级练习。

首先展示一下这款五子棋的主界面,由于自娱自乐的小游戏,界面还是比较简陋,达不到产品发布的效果,见谅!

第一. 在CSDN下载这款五子棋游戏,下载链接:

http://download.csdn.net/source/3423512

下载后,解压,里面有三个文件,分别是Renju.apk、Renju.gif和交互式人机对战五子棋.docx,其中,Renju.apk就是我们的Android五子棋游戏程序了。

第二. 如果有Android SDK环境,请先创建一个2.1 API版本的模拟器。打开cmd命令窗口,进入到SDK目录的tools文件夹,例如,如果你的SDK目录放在D:\android-sdk-windows那么就进入到D:\android-sdk-windows\tools目录下。

1.  首先执行android list target查看目标平台列表命令:

从这里可以看出,2.1 API的target id为3。

2.  执行android create avd –n android2.1 –t 3命令创建名称为android2.1的模拟机:

3. 执行start /b android2.1命令在后台运行模拟机:

4. 如果tools目录下有adb工具,则把Renju.apk文件放在tools目录下,否则,把Renju.apk文件放在D:\android-sdk-windows\platform-tools目录下,并进入到D:\android-sdk-windows\platform-tools目录中,执行adb install Renju.apk命令安装Renju.apk到模拟机上:

第三.  如果没有Android SDK环境,请到新浪爱问:

http://ishare.iask.sina.com.cn/f/16902616.html

http://ishare.iask.sina.com.cn/f/16902614.html

下载Android 2.1 API模拟器(制作方法参考制作可独立分发的Android模拟器一文),解压后,可以参照里面的README文件运行模拟器和安装Renju.apk文件。

1.  假设压压缩包解压后放D:\AndroidEmulator目录下。打开cmd命令窗口,进入到D:\AndroidEmulator目录,执行start /b emulator.exe -sysdir d:\AndroidEmulator -system images\system.img -data images\userdata.img -ramdisk images\ramdisk.img -kernel images\kernel-qemu -skindir d:\AndroidEmulator\skins -skin HVGA命令在后台运行模拟器:

2. 模拟器运行起来之后,里面已经内置了Renju应用程序,不用再安装,如果没有,则执行adb install Renju\Renju.apk命令进行安装。

第四. 执行完上述第一步或者第二步后,交互式人机对战五子棋就安装好了,进入Home Screen屏幕上,可以看到Renju应用程序,如下图所示:

第五. 使用方法。

点击Home Screen上的Renju图标,便可以打开程序:

按住鼠标不放,在棋盘上移动,在鼠标位置会有一个“+”图标跟着鼠标移动;放开鼠标,即可选定一个落棋点:

主界面上有五个按钮:

Start:点击开始人机对战

Shoot:当棋盘上出现“+”图标时,点击按钮在“+”位置上落下一个棋子,Renju会自动计算当前应该下白棋还是黑棋

Undo:悔棋,点击一次悔一步棋

Reset:重新开始游戏

Annotation:显示/隐藏当前棋盘每个落子点的得分情况,第一个数字表示黑棋得分,第二个数字表示白棋得分。数字后面的h表示100,如5h,表示得分为500,类似地,k表示1000,w表示10000。得分越大,表示落子点优势越大,如下图所示:

程序有两种模式,一是手动对战模式,一是人机对战模式。打开程序时,默认是人人模式,点击Start按钮进入人机对战模式,进入人机模式对战模式后,不可以再切换至人人模式。人机对战模式时,电脑使用黑棋。

点击右边键盘区的menu按钮,显示菜单有四个菜单项:

Importing Opening:导入开局

Exporting Opening:保存开局。当前棋盘为空时,不可用

Add To Experiences:增加电脑经验。棋盘上为空或者只有一个棋子时,不可用

Manage Experiences:管理电脑经验

点击ExportingOpening菜单,保存开局:

在弹出框中输入开局名称,点击OK按钮即可。

点击Importing Opening菜单,出现开局列表,选中其中一个开局,即可导入开局:

点击Add To Experiences菜单,增加电脑经验。例如,当出现以下棋局时:

点击Add To Experiences菜单,在弹出框中输入经验名称:

点击OK按钮,即可保存经验。
         当下次进入人机对战模式时,如果电脑发现当前的棋盘形势如下图所示时:

就会自动在“+”位置上落下一个黑棋。
        点击Add To Experiences菜单,可以查看当前电脑经验列表:

第六.  人机对战原理。简单来说,就是通过获胜表的方法,轮到机器落子时,在获胜表中找到得分值最大的落子点,落下一个棋子,然后再用机器再预测对方下一个可能的落子点,模拟对方下一个棋子,这时再判断谁获得优势,如果机器处于劣势,再回到第一步中,找到得分值次大的落子点,落下一个棋子,同样,再预测对方下一个可能的落子点,并模拟对方下一个棋子,再判断谁获得优势,依次类推,这就是回溯算法了。所以,总的来说,机器的智能来自获胜表+回溯算法,有时间再详细描述,感谢关注。

欢迎交流和合作,Email: shyluo@gmail.com.

老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注!

介绍一款Android小游戏--交互式人机对战五子棋的更多相关文章

  1. 或许您还不知道的八款Android开源游戏引擎

    很多初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于iPhone下有诸如Cocos2d-iphone之类的免费游戏 ...

  2. [转载]或许您还不知道的八款Android开源游戏引擎

    或许您还不知道的八款Android开源游戏引擎         分类:             技术文章              2010-08-04 20:27     17430人阅读     ...

  3. 从零开始开发一款H5小游戏(二) 创造游戏世界,启动发条

    本系列文章对应游戏代码已开源 Sinuous game 上一节介绍了canvas的基础用法,了解了游戏开发所要用到的API.这篇文章开始,我将介绍怎么运用这些API来完成各种各样的游戏效果.这个过程更 ...

  4. 从零开始开发一款H5小游戏(三) 攻守阵营,赋予粒子新的生命

    本系列文章对应游戏代码已开源 Sinuous game. 每个游戏都会包含场景和角色.要实现一个游戏角色,就要清楚角色在场景中的位置,以及它的运动规律,并能通过数学表达式表现出来. 场景坐标 canv ...

  5. 我用Axure制作了一款火影小游戏 | PM老猫

    Axure不仅仅是一个原型工具,除了原型之外还可以用来制作一些静态网页,这点对于不懂代码或前端的同学来说挺实用.之前整理了一版<Axure函数自查表>,因为感觉内容太多又对前端样式及脚本感 ...

  6. android小游戏模版—重力感应

               好久没更新博客了,今天来谈谈android小游戏---重力感应,一般在游戏里运用的比較多,比方这类游戏有:神庙逃亡.极品飞车,平衡球.三围重力迷宫,重力赛车等. 首先什么是重力感 ...

  7. 【沙龙报名中】与微信&云开发官方团队零距离互动,揭秘爆款微信小游戏背后的技术!

    有人说 微信小程序游戏的百花齐放 活像十几年前的4399小游戏称霸互联网的景象 " 歪,斗地主吗,三缺二, 不用下app,小程序就能玩,我保证不抢地主让你抢!" ...... &q ...

  8. 软件工程 Android小游戏 猜拳大战

    一.前言 最近学校举办的大学生程序设计竞赛,自己利用课余时间写了一个小游戏,最近一直在忙这个写这个小游戏,参加比赛,最终是老师说自己写的简单,可以做的更复杂的点的.加油 二.内容简介 自己玩过Andr ...

  9. Android开发系列(十六):【Android小游戏成语连连看】第二篇

    写的晚了,在分工个Z市高中的一个成绩查询的系统,原系统居然是用VB写的,我不得不佩服原本写系统的那位哥们真能耐得住. 明天搭建下SVN就等着先发project款然后開始项目了.想想有工资进账,心里也为 ...

随机推荐

  1. mysql常用操作(转自阿铭linux)

    在前面两个章节中已经介绍过MySQL的安装了,但是光会安装还不够,您还需要会一些基本的相关操作.当然了,关于MySQL的内容也是非常多的,只不过对于linux系统管理员来讲,一些基本的操作已经可以应付 ...

  2. web.config中的profile

    aspnet_regsql命令创建需要的表结构 public class UserProfile:ProfileBase { [SettingsAllowAnonymous(true)] //默认匿名 ...

  3. IIS 7管理API——Microsoft.Web.Administration介绍

    原文:http://www.cnblogs.com/dflying/archive/2006/04/17/377276.html 本文翻译整理自Carlos Aguilar Mares的blog文章: ...

  4. AngularJs练习Demo3

    @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport&quo ...

  5. 7 RandomAccessFile读取文件内容保存--简单例子(需要验证)

    import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.*; /** * 读取动态产生的文件内容 */ publ ...

  6. javascript的DOM操作(二)

    <html> <title>学习DOM</title> <a id="wen">文本</a> <input nam ...

  7. C++常量指针与常量数据

    常量指针即指针是常量的,一但声明指向某个数据后不能被更改,但是指向的数据可以被更改.声明格式如下: ; int * const p = &demo; 常量数据是指数据是常量的,一但被初始化后不 ...

  8. 新花生壳+tomcat(内网映射,无需设置路由器)建站攻略

    说明: 1.适用于内网用户(局域网,校园网,或者公司网等无法更改路由器映射的情况) 2.一共花了8块钱…………心疼.不过如果大家有钱的话,8块钱,少吃一顿麻辣烫就好了~总之,这个适用于测试网站,小访问 ...

  9. js页面加载进度条

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. sql数据库监控语句

    --查找被阻塞进程 --查找阻塞头进程 and exists ( from master..sysprocesses where blocked =p.spid) --查找等待时间长的进程 order ...