学习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.
分享到:
相关推荐
这是一款Android小游戏--交互式人机对战五子棋。之所以称之为交互式人机对战五子棋,是因为在进入人机对战模式这前,你可以任意设置好开局,同时,在对战过程中,你可以看到机器的思考过程,还可以标识出每一个落子...
Android游戏 交互式人机对战五子棋~~~~~~~~~~~~
该项目为基于Vc++6.0以及easy-x库的图形化编程程序-五子棋,可实现人人对战,人机对战,电脑提示,鼠标交互等功能,
创意组-“口袋实验室 --便携交互式电子开放实验系统.pdf
android-servlet-json-交互
9-8+人机交互式机器翻译研究与应用
HYPERLINK"http://www.cnblogs.com/jico/archive/2010/11/25/1887809.html"Android---网络交互之客户端请求服务端资源最近那个茫然啊,工作不如意,感情不如意,感觉事事不顺,在android上又荒废了些时日。...
1、android-support-v4.jar,android-support-v7-appcompat.jar,非常实用的jar文件,不可缺少,兼容Android 对应版本,包中包含类许多我们可以调用的,如widget、view、util等等。 2、导入Unity或者Android Studio...
GA 1277.3-2020 互联网交互式服务安全管理要求 第3部分:音视频聊天室服务.pdf
利用正点原子HAL库编写的可触屏式人机和双人对战五子棋,采用正点原子stm32f103开发板,代码中运用了lcd触屏来完成交互式游戏,通过简单的局部区域判断的算法来计算出最优解(不是真正的最优,要想要让它变成真正的...
网络游戏-用于执行交互式游戏的方法和系统.zip
安卓4.0一下的版本开发需要 android-support-v4来实现交互!
android-movies-demo手势交互的listview.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
网络游戏-多用户交互式网络服务器及使用它在用户之间通信的方法.zip
2022-sota-交互式问答
行业分类-设备装置-一种交互式投影系统及射击游戏设备.zip
行业分类-设备装置-一种交互式预测输入法.zip
行业文档-设计装置-一种交互式教学系统.zip
行业文档-设计装置-一种交互式物流信息终端.zip
行业分类-设备装置-一种交互式图像分割方法.zip