如何围困小猫
http://bbs.zipei.com/flash-Sleepy_Cat-%CE%A7%C0%A7%D0%A1%C3%A8.html怎么才能围困住小猫? 先拦住外围 天
猫这种善良温柔精灵式的动物你们...... 还有点意思 终于进入前10了,不过没让我写名字,可能得是用户才行! 也是高手阿 前十名越炒越高。
现在1万分都进不了了。
还是听无心人的劝告吧。
猫这种善良温柔精灵式的动物我们还是不要那个了。 1# g99
突然想起来一年多前老兄问的这个问题,
现在彻底搞清楚了,
打几十关没什么问题。 5# litaoye
这个是我打的。 我对这个游戏反编译了一下,
得到了小猫的策略,
修改了变量的名字(反编译出来的名字没有意义),添加了注释后的猫主要策略函数如下:function get_nearest() //得到最近的出去的信息
{
var available_area;
var rnd_index;
cel.steps = 0;
lx = catx;
ly = caty;
var current_available_Max = 1;
var MAX_STEPS = 999;
for (steps = 1; steps < 200; steps++) //全部地图区域
{
available_area = 0;
for (var i = 0; i < current_available_Max; ++i)
{
var current_X = lx;
var current_Y = ly;
for (var j = 0; j < 6; ++j) //六个方向
{
var tmp_catx = current_Y % 2 ? (current_X + addx1) : (current_X + addx0); //得到周围6个区域坐标
var tmp_caty = current_Y + addy0;//得到周围6个区域坐标
if (cel.stat != 1) //不可走
{
continue;
} // end if
if (cel.steps >= 0) //是否已经走过
{
continue;
} // end if
cel.steps = steps;
lx2 = tmp_catx; //lx2,ly2记录下猫的模拟运行路线
ly2 = tmp_caty;
++available_area;
if (cel.win && steps < MAX_STEPS) //遍历全部路径,求到最短赢的路线
{
MAX_STEPS = steps;
} // end if
} // end of for
} // end of for
if (available_area == 0)
{
break;
} // end if
for (var i = 0; i < available_area; ++i)
{
lx = lx2;
ly = ly2;
} // end of for
current_available_Max = available_area;
} // end of for
if (MAX_STEPS == 999)
{
return (0);
} // end if
available_area = 0;
for (var i = 0; i < ymax; ++i) //求得全部最短路径点
{
for (var j = 0; j < xmax; ++j)
{
if (cel.steps == MAX_STEPS && cel.win)
{
lx = j;
ly = i;
++available_area;
} // end if
} // end of for
} // end of for
if (available_area == 0) //最短路径点个数
{
return (0);
} // end if
rnd_index = Math.floor(Math.random() * available_area);
rnd_available_X = lx;
rnd_available_Y = ly;
for (var i = 0; i < 200; ++i) //随机选择一个最优路线起点行走
{
available_area = 0;
for (var j = 0; j < 6; ++j)
{
tmp_catx = rnd_available_Y % 2 ? (rnd_available_X + addx1) : (rnd_available_X + addx0);
tmp_caty = rnd_available_Y + addy0;
if (cel.stat != 1)
{
continue;
} // end if
if (cel.steps >= cel.steps)
{
continue;
} // end if
lx = tmp_catx;
ly = tmp_caty;
ld = j;
++available_area;
} // end of for
if (available_area == 0)
{
return (0);
} // end if
rnd_index = Math.floor(Math.random() * available_area);
rnd_available_X = lx;
rnd_available_Y = ly;
if (cel.steps == 1) //最后出去的时候
{
catx = rnd_available_X;
caty = rnd_available_Y;
catdir = 0;
for (var j = 0; j < 6; ++j)
{
tmp_catx = rnd_available_Y % 2 ? (rnd_available_X + addx1) : (rnd_available_X + addx0);
tmp_caty = rnd_available_Y + addy0;
if (cel.steps == 0)
{
catdir = (j + 3) % 6;
} // end if
} // end of for
return (1); //游戏结束
} // end if
} // end of for
return (0);
} // End of the function
页:
[1]
2