开心网的“谁最牛”模块有一个叫“AI智能人”的Flash游戏。偶每次玩到第10关都被难住。哀叹自己智商如此低下之余,也十分好奇这关到底应该咋过呢?网上又没找到攻略秘籍,只好自己DIY一个作弊程序了。
AI智能人作弊程序

游戏的地址为:http://xyx.kaixin.com/upload/detail.php?game=A_I, 游戏规则是每次可以命令任意一个机器人朝某个方向行进,只有遇到其它机器人才会停下来,如果没有其他机器人的阻挡,就会一直走到棋盘边缘并坠落,任务失败。使红色机器人停留在棋盘中心的紫色格子里则过关。有兴趣的话可以玩一下。
可以用一个矩阵来表示棋盘。0代表空白的方格,1代表灰色机器人,2代表红色机器人。上图中的棋盘就可以这样来表示:
m = [[1,0,0,0,0],
        [0,0,0,1,0],
        [0,0,1,0,0],
        [0,0,0,0,0],
        [1,1,0,2,0]]
算法的话就是直接递归穷举所有可能的走法。Ruby代码如下。
}

代码写得很丑(真是书到用时方很少呀),真是对不起Ruby这么优雅的语言了,汗。其中的 “pp_extension” 在我的这篇文章里。 运行之后的效果:

AI智能人作弊程序

按照右侧的输出的每一步把机器人从“#”移动到“$”即可。
程序已通过全部18关测试,看到自己的名字显示在前10以内,虚荣心真是小小地满足了一把,吼吼吼。

AI智能人作弊程序

在一个地方被折磨了很久。就是AI.rb的地79行:
 if(state_stack.has_key?(next_m) == false) then

        state_stack[next_m] = 'exists'
本来我写的是
 if(state_stack.has_key?(next_m.hash) == false) then
        state_stack[next_m.hash] = 'exists'

因为state_stack的作用就是记录一下已经遍历过的状态,防止重复遍历,所以想存放hash值可以省些内存,结果发现程序时而好用时而不好用,调试了半天才发现如果有两个矩阵s1和s2,
s1 = [[1, 0, 0, 0, 0],
        [1, 1, 0, 0, 0],
        [0, 0, 0, 0, 0],
        [0, 0, 1, 0, 0],
        [0, 1, 2, 0, 0]]
 
 s2 = [[1,0,0,0,0],
        [1,1,0,0,0],
        [0,1,2,0,0],
        [0,0,1,0,0],
        [0,0,0,0,0]]
s1.hash 和 s2.hash居然是相等的!都是3589,真是搞不懂。liangliangzai 和众位高手,请指点一二。

2008-1-14 更新

为了对得起Ruby,我又把这个程序重写了一遍,这回感觉好多了。代码:

end


比较难的几关的攻略:

]]

]]

]]

]]

]]


[[11, 0, 0, 1],
 [0, 0, 0, 0, 0],
 [
1, 0, 0, 0, 0],
 [0, 0, 0, 0, 
1],
 [0, 
2, 0, 0, 0]]
---1---
[[
"|""|""1""|""0"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"]]
---2---
[[
"|""|""|""|""|"],
 [
"1""|""|""|""|"],
 [
"0""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"]]
---3---
[[
"|""0""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""1""|""|""|"],
 [
"|""|""|""|""|"]]
---4---
[[
"0""1""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"]]
---5---
[[
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""0""|""1""|"],
 [
"|""|""|""|""|"]]
---6---
[[
"|""0""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""1""|""|""|"],
 [
"|""|""|""|""|"]]
---7---
[[
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""1""0""|"],
 [
"|""|""|""|""|"]]
---8---
[[
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""1""0"],
 [
"|""|""|""|""|"]]
---9---
[[
"|""|""|""|""|"],
 [
"|""|""1""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""0""|""|"],
 [
"|""|""|""|""|"]]
---10---
[[
"|""|""|""|""|"],
 [
"|""1""0""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"]]
---11---
[[
"|""|""|""|""|"],
 [
"|""0""|""|""|"],
 [
"|""1""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"]]
---12---
[[
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""0""1""|""|"],
 [
"|""|""|""|""|"]]
---13---
[[
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""2""|""|""|"],
 [
"|""0""|""|""|"]]
---14---
[[
"|""|""|""|""|"],
 [
"|""|""1""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""0""|""|"],
 [
"|""|""|""|""|"]]
---15---
[[
"|""|""|""|""|"],
 [
"0""1""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"]]
---16---
[[
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""0""2""|""|"],
 [
"|""|""|""|""|"]]
---17---
[[
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""2""|""|"],
 [
"|""|""0""|""|"],
 [
"|""|""|""|""|"]]
]]


[[1, 0, 0, 1, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 
2, 0],
 [0, 0, 0, 0, 0],
 [
11, 0, 0, 1]]
---1---
[[
"|""1""|""0""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"]]
---2---
[[
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""1""|""0"]]
---3---
[[
"0""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"1""|""|""|""|"],
 [
"|""|""|""|""|"]]
---4---
[[
"|""|""|""|""|"],
 [
"|""1""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""0""|""|""|"]]
---5---
[[
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""1""0""|""|"]]
---6---
[[
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""1""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""0""|""|""|"]]
---7---
[[
"|""|""|""|""|"],
 [
"|""|""|""|""|"],
 [
"|""|""2""0""|"],
 [
"|""|""|""|""|"],
 [
"|""|""|""|""|"]]
     


AI智能人作弊程序

相关文章: