求游戏自动走路(绕开障碍)算法

clhappy8 2012-02-09 11:51:32
求游戏自动走路(绕开障碍)算法,不能用call鼠标点击内存地址那种方法,
这个游戏不支持鼠标点到哪人走到哪

就是想弄一个边走路边打怪的算法,找怪打怪均已经实现了,现在需要一个走路的。
可以通过内存地址获得游戏的纵横(x,y)坐标,已实现

==============================================以下为我的实现。。
Plugin.dm.ReadInt这个是读取纵横坐标的内存地址B9CE3D8是xB9CE3DC是y
goto zg是走到一个地方就自动找怪打怪
Call wzp()就是调用往左跑的函数。。其他类似
zflg=1 就是往左跑,zflg=0往右跑
sflg=1 就是往上跑,sflg=0 就是往下跑
==============================
Sub runRush


If zflg = 1 Then
Rem jxwz
result1 = Plugin.dm.ReadInt(dbhwnd, "B9CE3D8", 1)
Call wzp()
result2 = Plugin.dm.ReadInt(dbhwnd,"B9CE3D8",1)
If result1 = result2 & sflg = 1 Then
result1 = Plugin.dm.ReadInt(dbhwnd,"B9CE3DC",1)
Call wsp()
result2 = Plugin.dm.ReadInt(dbhwnd, "B9CE3DC", 1)
else
If result1 = result2 Then
result1 = Plugin.dm.ReadInt(dbhwnd,"B9CE3DC",1)
Call wxp()
result2 = Plugin.dm.ReadInt(dbhwnd, "B9CE3DC", 1)
If result1 = result2 Then
zflg = 0
Goto zg

End If
Else
Goto zg
End If
End If
Else
Rem jxwy
result1 = Plugin.dm.ReadInt(dbhwnd, "B9CE3D8", 1)
Call wyp()
result2 = Plugin.dm.ReadInt(dbhwnd,"B9CE3D8",1)
If result1 = result2 & sflg = 1 Then
result1 = Plugin.dm.ReadInt(dbhwnd,"B9CE3DC",1)
Call wsp()
result2 = Plugin.dm.ReadInt(dbhwnd, "B9CE3DC", 1)
else
If result1 = result2 Then
result1 = Plugin.dm.ReadInt(dbhwnd,"B9CE3DC",1)
Call wxp()
result2 = Plugin.dm.ReadInt(dbhwnd, "B9CE3DC", 1)
If result1 = result2 Then
If result1 = result2 Then
zflg = 1
Goto zg

End If
Else
Goto zg
End If
End If
End If
End If
End Sub
...全文
908 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
clhappy8 2012-02-10
  • 打赏
  • 举报
回复
clhappy8 2012-02-10
  • 打赏
  • 举报
回复
地图有那么多点。。。大概是600*300的大小吧
clhappy8 2012-02-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhangqiwen 的回复:]

这样的思路是不行的,效率不说,都是瞎转,而且不知道怎么走。
解决方法:
1. 你说了有障碍就往别的地方, 所以对了,你先找出障碍,绘制出地图;
2. 用A星算法实现走路;

不要认为绘制地图很难的事, 只要知道障碍, 绘制黑白地图就可以了, 如黑的障碍,白的通行,得到一个黑白的BMP图片,做为游戏的地图寻路文件。 剩下的A星寻路已经都帮你实现了. 网上 搜寻 传奇2 寻路源代码
……
[/Quote]
--------------------------------
怪倒是很简单的,我是走路打怪,挂都被搞死了
就是这个黑白地图怎么绘制。。。
代码跳动 2012-02-10
  • 打赏
  • 举报
回复
这样的思路是不行的,效率不说,都是瞎转,而且不知道怎么走。
解决方法:
1. 你说了有障碍就往别的地方, 所以对了,你先找出障碍,绘制出地图;
2. 用A星算法实现走路;

不要认为绘制地图很难的事, 只要知道障碍, 绘制黑白地图就可以了, 如黑的障碍,白的通行,得到一个黑白的BMP图片,做为游戏的地图寻路文件。 剩下的A星寻路已经都帮你实现了. 网上 搜寻 传奇2 寻路源代码

分析地图了,但有没怪这个是判断不到的,需要你另外判断,这个很难。 最差的算法,就是遇到怪后,移动到旁边,重新计算路径。
武稀松 2012-02-10
  • 打赏
  • 举报
回复
A*算法是最常用的,也最简单.
babydog01 2012-02-10
  • 打赏
  • 举报
回复
不要一直向左走啊,那样会转圈的。
clhappy8 2012-02-09
  • 打赏
  • 举报
回复
思路就是往左跑,遇到障碍,上下跑,然后继续往左跑。。。
zflg=0 的时候
往右跑,遇到障碍,上下跑,然后继续往左跑。。。
但是经常跑到倒U字形的地形,然后就死了
clhappy8 2012-02-09
  • 打赏
  • 举报
回复
- -,不是走迷宫,就是一个平面地图,中间有石头之类的障碍物,或者有一个高地
高地走上去一直往左就行不通了。。
haitao 2012-02-09
  • 打赏
  • 举报
回复
走迷宫?
一直向左转,即可
如果迷宫有循环通路,则需要记住走过的路,才能避免循环
babydog01 2012-02-09
  • 打赏
  • 举报
回复
delphi的递归最好用了。

16,747

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧