使用人工智能实现自动推箱子,感兴趣的进来讨论下!
vb吧
全部回复
仅看楼主
level 1
最近在写推箱子的游戏,我要使用人工智能实现自动推箱子,其要实现的效果为:利用鼠标点击箱子可以选择要推的箱子,鼠标再点击目的地,如果有箱子被选择,就自动推动被选择的箱子到此坐标,否则,人移动到此坐标!这具体的移动步骤,当然是自动选择最短的路径。也就是说,你只要选择要它搬哪个箱子,并指定要搬到的目的地,它就自动搬好,当然,如果出发点到目的地没有路可走,有障碍物,当然它就不会搬!其它的已经实现,就是自动推箱子的问题有点复杂,我先分析一下自动推箱子的思路,并使用图解的方法,让大家能更清晰明了:符号提示:★ 代表人▲ 代表目的地○ 代表放箱子的洞● 代表箱子□ 代表可以行走的空地■ 代表不能通行的墙→←↑↓ 代表行走的四个方向图一■■■■■■■■■■■■□▲□□□□□□□■■■■■■■■□□□■■□□□□□□□□□■■□★□□□□□■■■■■■■■■■■■■■这第一个图是最简单的,只移动人,将人移动到目的地就可以了,它的行走路线就应该是如图■■■■■■■■■■■■□▲←←←←←□□■■■■■■■■↑□□■■□□□□□□↑□□■■□★→→→→↑■■■■■■■■■■■■■■图二■■■■■■■■■■■■□○□□□□□□□■■■■■■■■□□□■■□□□●□□□□□■■□★□□□□□■■■■■■■■■■■■■■这个图,是要先将人移动到箱子左边,再推动到箱子转角的地方,人必须要走到箱子的下面,向上推到顶,再走到箱子的右边推,直到进洞,为了直观,我把人走的路线,和箱子走的路线分开画■■■■■■■■■■■■□○←←←←←□□■■■■■■■■↑□□■■□□□●→→↑□□■■□★□□□□□■■■■■■■■■■■■■■上面的是箱子应该走的路线,下面的是要让箱子实现以上的路线,则人的路线图■■■■■■■■■■■■□○←←←←←↑□■■■■■■■■↑→□■■□↑→→→→↑□□■■□★□□□↓→■■■■■■■■■■■■■■图三■■■■■■■■■■■■■□□□□□□□□○□■■□□□■□■■■□□■■■■■□●□□□□□■■□□★□□□□□■■■■■■■■■■■■■■■此图就有些复杂了,同样,还是先是箱子行走路线,这里因为重复了路线,我将分两次显示■■■■■■■■■■■■■□□←←←□□□○□■■□□□■↑■■■□□■■■■■□●□□□□□■■□□★□□□□□■■■■■■■■■■■■■■■人行走路线■■■■■■■■■■■■■□□←←←←←←↑□■■□□□■↓■■■↑□■■■■■□→→→→→□■■□□★→↑□□□■■■■■■■■■■■■■■■第二步■■■■■■■■■■■■■□→→→→→→→○□■■□□□■□■■■□□■■■■■□□□□□□□■■□□□□□□□□■■■■■■■■■■■■■■■人行走路线■■■■■■■■■■■■■→→→→→→→→○□■■↑←←■□■■■□□■■■■■□□□□□□□■■□□□□□□□□■■■■■■■■■■■■■■■从以上图中可以看出,要做以自动推箱子,还是非常复杂的,如果要推一个箱子,它要可以自动推动指定的那个箱子,并会自动绕开障碍物,如果障碍物是要推的那个箱子,则要自动将这个箱子推到可以开路的地方,但他不能去推动其它箱子来达到排除障碍物的目的。希望大家都讨论一下自己的看法和思路!谢谢
2007年06月17日 11点06分 1
level 5
俺自己都不会推,更别说让电脑推了!
2007年06月17日 12点06分 2
level 1
没有人感兴趣吗?自己顶一下!
2007年06月18日 16点06分 3
level 7
腊梅,你这个是不是人工智能!要做深蓝吗?
2007年06月19日 02点06分 4
level 1
女孩,你这什么意思?看不懂
2007年06月19日 03点06分 5
level 1
没有人感兴趣吗?自己顶一下!
2007年06月20日 16点06分 6
level 0
我的理解:箱子走的路线 可以用A*算出来 而箱子的路径 其实就是人的路径关键是第一步 人能不能到达箱子移动方向的后面
2007年06月20日 18点06分 7
level 0
记得6年前CFan里面有介绍到推箱子的AI,不过是Delphi的.bz可以去看看.g.
2007年06月21日 04点06分 8
level 1
TO:7楼箱子的路径不等于人物的路径,你再仔细看一下上面的图二和图三图三 ■■■■■■■■■■■■ ■□□□□□□□□○□■ ■□□□■□■■■□□■ ■■■■□●□□□□□■ ■□□★□□□□□■■■ ■■■■■■■■■■■■ 此图就有些复杂了,同样,还是先是箱子行走路线,这里因为重复了路线,我将分两次显示 ■■■■■■■■■■■■ ■□□←←←□□□○□■ ■□□□■↑■■■□□■ ■■■■□●□□□□□■ ■□□★□□□□□■■■ ■■■■■■■■■■■■ 人行走路线 ■■■■■■■■■■■■ ■□□←←←←←←↑□■ ■□□□■↓■■■↑□■ ■■■■□→→→→→□■ ■□□★→↑□□□■■■ ■■■■■■■■■■■■ 第二步 ■■■■■■■■■■■■ ■□→→→→→→→○□■ ■□□□■□■■■□□■ ■■■■□□□□□□□■ ■□□□□□□□□■■■ ■■■■■■■■■■■■ 人行走路线 ■■■■■■■■■■■■ ■→→→→→→→→○□■ ■↑←←■□■■■□□■ ■■■■□□□□□□□■ ■□□□□□□□□■■■ ■■■■■■■■■■■■
2007年06月21日 14点06分 9
level 1
A星算法(A*)是求最短路径,但上面的图三中,箱子不能行走最短路径,因为走到第一个拐弯的地方,人就没有办法到箱子的右边了,只有把箱子再推到里面,人才能走到箱子的左边,才能将箱子推到洞里!这种情况,在任何一个推箱子的游戏中,出现的频率是非常高的!
2007年06月21日 14点06分 10
level 0
我理解可能不全面 现在感觉各种可能性 太多了 。。。
2007年06月21日 15点06分 11
level 0
如果再考虑 需要移动其他的箱子 才能通过的话 似乎要请深蓝来 汗
2007年06月21日 15点06分 12
level 7
最短路径的宽度优先搜索算法(参考“跳马”一经典题)。今天没空了,后两天有空再弄(这其实不是什么人工智能,纯粹的搜索,是“队列”数据结构的应用)
2007年06月21日 15点06分 13
level 7
宽搜肯定没问题,具体的移动方法在“Path函数里”和“Hash表”里调整即可……
2007年06月21日 15点06分 15
level 0
现在有解决吗?我前几天也准备实现自动推箱子的功能,准备用遗传算法试下
2010年04月03日 06点04分 17
level 0
我也编过演示推箱子的功能,是把要走的路线存在TXT文件中,完全用人工智能实现太难了。
2010年04月05日 02点04分 18
level 1
能判断无解么?
2010年04月05日 05点04分 19
level 13
3年前的老古董帖子都翻出来了,厉害挖
2010年04月05日 09点04分 20
1