• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

求教,2D地图如何自动寻路 [复制链接]

1#
类似于这样的地图,从一个门口走到另一个门口如何做

2#

把地图进行格子分割,判断人物目前所在的格子位置,再计算要前往的格子或者向上,向下的操作。

3#

我写了八方节点寻路+避障。你这地图随便走
Call Plugin.Window.Active(Hwnd)
Dimenv 线程ID, 避障
避障= True
x3 = Form1.InputBox1.Text
y3 = Form1.InputBox2.Text
x4 = Form1.InputBox3.Text
y4 = Form1.InputBox4.Text
x5 = Form1.InputBox5.Text
y5 = Form1.InputBox6.Text
x6 = Form1.InputBox7.Text
y6 = Form1.InputBox8.Text
x7 = Form1.InputBox9.Text
y7 = Form1.InputBox10.Text
x8 = Form1.InputBox11.Text
y8 = Form1.InputBox12.Text
s1 = Form1.InputBox13.Text
s2 = Form1.InputBox14.Text
s3 = Form1.InputBox15.Text
s4 = Form1.InputBox16.Text
s5 = Form1.InputBox17.Text
s6 = Form1.InputBox18.Text
//

//do
// Call 寻路(x3, y3)
// Call 喊话(s1)
// //Call 喊话("(1)号点到达")
// Call 寻路(x4, y4)
// Call 喊话(s2)
// //Call 喊话("(2)号点到达")
// Call 寻路(x5, y5)
// Call 喊话(s3)
// //Call 喊话("(3)号点到达")
// Call 寻路(x6, y6)
// Call 喊话(s4)
// //Call 喊话("(4)号点到达")
// // Call 寻路(x7, y7)
// Call 喊话(s5)
// // Call 喊话("(5)号点到达")
// // Call 寻路(x8, y8)
// Call 喊话(s6)
// // Call 喊话("(6)号点到达")
// //Call 寻路(500,495)
// //Call 寻路(412, 447)
//loop
Sub 喊话(内容)
Call Plugin.Window.SendString(Hwnd,内容)
Delay 300

KeyPress "Enter", 1
End Sub
sub 步法确认()
Do
iCoord = Plugin.Pic.FindWordShape(752,850,837,910, "无名步法", "宋体", 9, 0, 0.82)
XY = Split(iCoord, "|")
If XY(0) >= 0 and XY(1) >= 0 Then
TracePrint "无名步法"
TracePrint XY(0) & "|" & XY(1)
Exit Do
Else
TracePrint " 没用步伐"
KeyPress "F5", 1
Delay 50
End If
Loop

End sub
Sub 线程
Do'判断是否停止走路
避障 = Plugin.Color.IsDisplayDead(790,914,843,942, 800)'这个坐标是长方形图片形状iDead
If 避障 = True Then
TracePrint "停止走路"
Form1.Label1.Caption = "停止走路"
Else
TracePrint "移动中"
Form1.Label1.Caption = "移动中"
End If
Loop'Do判断是否停止走路 结束
End sub
Function 寻路(X, Y)//X=00584894 Y=00584898
TracePrint "目的地X;Y" & X & ";" & Y
Form1.Label2.Caption = X & ":" & Y
线程ID = BeginThread(线程)
Call 步法确认
Do
RightDown 1
TracePrint "右键按下"
随机数 = Int((6 - 3 + 1) * Rnd + 3)'Int((upperbound - lowerbound + 1) * Rnd + lowerbound) Rnd 函数 返回一个随机数。
valueX=dm.ReadInt(hwnd, "005888C0", 4) //人物当前X 游戏坐标内存地址
valueY=dm.ReadInt(hwnd, "005888C4", 4) //人物当前Y 游戏坐标内存地址
TracePrint "人物当前X坐标:"&CSTR(valueX)//人物当前X坐标"
TracePrint "人物当前Y坐标:"& CSTR(valueY)//人物当前Y坐标"
Form1.Label5.Caption = CSTR(valueX) & ":" & CSTR(valueY)
a = Plugin
TracePrint "人物移动朝向角度:" & a & "度"
If CInt(a) >= 0 and CInt(a) <= 23 Then '第0.5格
If 避障 = True Then
MoveTo 1055, 624
Call 走路(随机数*100)
i = i + 1
TracePrint i
If i=1 Then
MoveTo 1057, 506
Call 走路(随机数*100)
End If
If i = 2 Then
MoveTo 994, 585
Call 走路(随机数*100)
End If
If i > 2 Then
MoveTo 994, 585
Call 走路(随机数*100)
MoveTo 1057, 506
Call 走路(随机数*100)
End If
Else
i = 0
End If
TracePrint "向右+23度"
MoveTo 1103, 589
Call 走路(随机数*100)
End If
If CInt(a) >= 24 and CInt(a) <= 68 Then '第2格
If 避障 = True Then
MoveTo 1091, 626
Call 走路(随机数*100)
i = i + 1
TracePrint i
If i=1 Then
MoveTo 1004, 525
Call 走路(随机数*100)
End If
If i = 2 Then
MoveTo 981, 598
Call 走路(随机数*100)
End If
If i > 2 Then
MoveTo 981, 598
Call 走路(随机数*100)
MoveTo 1091, 626
Call 走路(随机数*100)
End If
Else
i = 0
End If
TracePrint "向右上45度"
MoveTo 1107, 543
Call 走路(随机数*100)
End If
If CInt(a) >= 69 and CInt(a) <= 113 Then '第3格
If 避障 = True Then
MoveTo 1105, 593
Call 走路(随机数*100)
i = i + 1
TracePrint i
If i=1 Then
MoveTo 995, 583
Call 走路(随机数*100)
End If
If i = 2 Then
MoveTo 1055, 636
Call 走路(随机数*100)
End If
If i > 2 Then
MoveTo 1055, 636
Call 走路(随机数*100)
MoveTo 1105, 593
Call 走路(随机数*100)
End If
Else
i = 0
End If
TracePrint "向上"
MoveTo 1054, 516
Call 走路(随机数*100)
End If
If CInt(a) >= 114 and CInt(a) <= 158 Then '第4格
If 避障 = True Then
MoveTo 1105,536
i = i + 1
TracePrint i
If i=1 Then
MoveTo 1002, 610
Call 走路(随机数*100)
End If
If i = 2 Then
MoveTo 1081, 633
Call 走路(随机数*100)
End If
If i > 2 Then
MoveTo 1081, 633
Call 走路(随机数*100)
MoveTo 1105,536
Call 走路(随机数*100)
End If
Else
i = 0
End If
TracePrint "向左上45度"
MoveTo 1005, 539
Call 走路(随机数*100)
End If
If CInt(a) >= 159 and CInt(a) <= 203 Then '第5格
If 避障 = True Then
MoveTo 1057, 510
Call 走路(随机数*100)
i = i + 1
TracePrint i
If i=1 Then
MoveTo 1052, 637
Call 走路(随机数*100)
End If
If i = 2 Then
MoveTo 1125, 582
Call 走路(随机数*100)
End If
If i > 2 Then
MoveTo 1125, 582
Call 走路(随机数*100)
MoveTo 1057, 510
Call 走路(随机数*100)
End If
Else
i = 0
End If
TracePrint "向左"
MoveTo 1006, 572
Call 走路(随机数*100)
End If
If CInt(a) >= 204 and CInt(a) <= 248 Then '第6格
If 避障 = True Then
MoveTo 1003, 529
Call 走路(随机数*100)
i = i + 1
TracePrint i
If i=1 Then
MoveTo 1101, 629
Call 走路(随机数*100)
End If
If i = 2 Then
MoveTo 1121, 546
Call 走路(随机数*100)
End If
If i > 2 Then
MoveTo 1121, 546
Call 走路(随机数*100)
MoveTo 1003, 529
Call 走路(随机数*100)
End If
Else
i = 0
End If
TracePrint "向左下45度"
MoveTo 1006, 621
Call 走路(随机数*100)
End If
If CInt(a) >= 249 and CInt(a) <= 293 Then '第7格
If 避障 = True Then
MoveTo 1000, 580
Call 走路(随机数*1000)
i = i + 1
TracePrint i
If i=1 Then
MoveTo 1114, 594
Call 走路(随机数*100)
End If
If i = 2 Then
MoveTo 1055, 513
Call 走路(随机数*100)
End If
If i > 2 Then
MoveTo 1055, 513
Call 走路(随机数*100)
MoveTo 1000, 580
Call 走路(随机数*100)
End If
Else
i = 0
End If
TracePrint "向下"
MoveTo 1052, 626
Call 走路(随机数*100)
End If
If CInt(a) >= 294 and CInt(a) <= 338 Then '第8格
If 避障 = True Then
MoveTo 1009, 609
Call 走路(随机数*100)
i = i + 1
TracePrint i
If i=1 Then
MoveTo 1131, 553
Call 走路(随机数*100)
End If
If i = 2 Then
MoveTo 1037, 515
Call 走路(随机数*100)
End If
If i > 2 Then
MoveTo 1037, 515
Call 走路(随机数*100)
MoveTo 1009, 609
Call 走路(随机数*100)
End If
Else
i = 0
End If
TracePrint "向右下45度"
MoveTo 1088, 616
Call 走路(随机数*100)
End If
If CInt(a) >= 339 and CInt(a) <= 359 Then '第8.5格
If 避障 = True Then
MoveTo 1051, 629
Call 走路(随机数*100)
i = i + 1
TracePrint i
If i=1 Then
MoveTo 1056, 512
Call 走路(随机数*100)
End If
If i = 2 Then
MoveTo 986, 585
Call 走路(随机数*100)
End If
If i > 2 Then
MoveTo 986, 585
Call 走路(随机数*100)
MoveTo 1051, 629
Call 走路(随机数*100)
End If
Else
i = 0
End If
TracePrint "向右-23度"
MoveTo 1106, 584
Call 走路(随机数*100)
End If

TracePrint "到达了"
RightUp 1
Exit Do
Else
TracePrint "没到"
End If
Call 走路(600)'数字代表右键下压到弹起时间(单位毫秒)
loop
StopThread 线程ID
End Function
Function 走路(走路步长) '单位毫秒
RightDown 1
Delay 走路步长
TracePrint "走路中"
RightUp 1
End Function

4#

这个可以自己给他设定一条线路 按设定的路线跑 通用的就很难做

有事就QQ 136874377 QQ交流群300857068   接各种脚本定做 价格优惠
5#

,

你随便复制你的乱七 你觉得有人会用你的嘛 这样的

发新话题 回复该主题