2016 - 2024

感恩一路有你

如何使用按键精灵计算最近的怪物/包裹/金矿坐标?

浏览量:3441 时间:2024-08-15 13:00:30 作者:采采

在游戏中,我们常常需要寻找离人物最近或最远的怪物、包裹或金矿等。这时候,按键精灵可以帮助我们快速计算出它们的坐标。下面,我将介绍一些相关的知识点和代码段,帮助大家了解如何使用按键精灵计算最近的怪物/包裹/金矿坐标。

数学知识:已知坐标求距离

在计算最近的怪物/包裹/金矿坐标时,我们需要用到数学知识:已知坐标求距离。假设已知坐标A(X1,Y1)、B(X2,Y2),那么AB之间的距离有一个计算公式:

距离sqr((X1-X2)2 (Y1-Y2)2)

即:距离等于两个坐标的横坐标之差的平方,加上纵坐标之差的平方,两个平方相加,再取它们的平方根。

冒泡排序算法

接下来,让我们来介绍一种排序算法——冒泡排序(Bubble Sort)。它的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,像鱼吐泡泡一样。同样,也可以让越大的元素沉到数列底部。

冒泡排序算法的运作如下:

1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

3. 针对所有的元素重复以上的步骤,除了最后一个。

4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

思路解析

当我们获取到人物的坐标,以及各个物品的坐标并存入数组后,就可以计算人物距离各个物品的坐标距离,存入数组。然后,通过各个坐标距离的比较,从而获取到最小距离(距离人物最近的物品)以及最大距离(距离人物最远的物品),输出相对应的物品坐标。

大神代码段

以下是一段按键精灵脚本代码,用于计算最近的怪物/包裹/金矿坐标。其中,coordinate为物品坐标,range为距离,Arr为物品坐标的数组,Ub为物品坐标的最大下界。

```vb

x 300:y 330 '人物的坐标

coordinate "200,300|10,20|60,800|500,321|456,789|421,6|300,320|320,290" '物品(怪物)的坐标

Arr split(coordinate, "|") '将坐标分割成数组

Ub UBound(Arr) '获取数组最大下界

range(Ub)用来存储每个物品离人物的距离,xx(Ub)用来存储每个物品的X坐标,yy(Ub)用来存储每个物品的Y坐标

Redim range(Ub), xx(Ub), yy(Ub) '初始化数组

'计算所有的物品坐标,离人物的距离,存在range数组里

For i 0 To Ub

x1 split(Arr(i), ",")(0): y1 split(Arr(i), ",")(1)

xx(i) x1: yy(i) y1

range(i) sqr((x1 - x) ^ 2 (y1 - y) ^ 2)

Next

'通过冒泡排序,将人物离每个物品的距离,按照从小到大的顺序排列,并根据距离的排序,相应的调整物品的X坐标和Y坐标在数组中的位置。

For m 0 To Ub

For n m 1 To Ub

If range(m) > range(n) Then

k range(m): range(m) range(n): range(n) k

k xx(m): xx(m) xx(n): xx(n) k

k yy(m): yy(m) yy(n): yy(n) k

End If

Next

Next

TracePrint "距离人物最近的坐标为:" xx(0) "," yy(0)

TracePrint "距离人物最远的坐标为:" xx(Ub) "," yy(Ub)

```

知识拓展

除了使用已知坐标求距离的方法外,我们还可以通过找图来获取到人物(或者其他玩意)的坐标,再通过找图来获取到物品(或者其他不明物品)的坐标,然后套用上面的思路进行计算。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。