Avenger咸丸 阅读:98次 时间:2025-03-02 14:23:19知识点引入:数学知识:已知坐标求距离已知坐标A(X1,Y1)、B(X2,Y2),那么AB之间的距离有一个计算公式:l=sqr((X1-X2)^2+(Y1-Y2)^2)即:距离等于两个坐标的横坐标之差的平方,加上纵坐标之差的平方,两个平方相加,再取它们的平方根,算法知识:冒泡排序介绍:冒泡排序(Bubble Sort),这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,像鱼吐泡泡一样,同样,也可以让越大的元素沉到数列底部,算法原理:冒泡排序算法的运作如下:(从后往前)1,比较相邻的元素,如果第一个比第二个大,就交换他们两个,2,对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,在这一点,最后的元素应该会是最大的数,3,针对所有的元素重复以上的步骤,除了最后一个,4,持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较,[思路解析:1,获取到人物的坐标,以及各个物品的坐标,存入数组;2,计算人物距离各个物品的坐标距离,存入数组;3,通过各个坐标距离的比较,从而获取到最小距离(距离人物最近的物品)以及最大距离(距离人物最远的物品),输出相对应的物品坐标,大神代码段://注:coordinate为物品坐标,range为距离,Arr为物品坐标的数组,Ub为物品坐标的最大下界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 Ubx1 = split(Arr(i), ",")(0) : y1 = split(Arr(i), ",")(1)xx(i) = x1 : yy(i) = y1range(i) = sqr((x1 - x) ^ 2 + (y1 - y) ^ 2)Next'通过冒泡排序,将人物离每个物品的距离,按照从小到大的顺序排列,并根据距离的排序,相应的调整物品的X坐标和Y坐标在数组中的位置,For m = 0 To UbFor n = m + 1 To UbIf range(m) > range(n) Thenk = range(m):range(m) = range(n):range(n) = kk = xx(m):xx(m) = xx(n):xx(n) = kk = yy(m):yy(m) = yy(n):y(n) = kEnd IfNextNextTracePrint "距离人物最近的坐标为:"&xx(0) & "," & yy(0)TracePrint "距离人物最远的坐标为:" & xx(Ub) & "," & yy(Ub)最后知识拓展:各位大大,是不是说,都已经知道了人物坐标和物品坐标了,那还计算什么,乖孩纸们,你们忘记找图代码啦?在游戏中应用的时候,通过找图来获取到人物(或者其他玩意)的坐标,再通过找图来获取到物品(或者其他不明物品)的坐标,不就可以套用上面的思路啦~~萌萌哒~以下内容是由微蓝经验网用户发布按键精灵判断距离,如何用2014按键精灵计算距离自己最近的物品坐标,希望对于用户有一定帮助,为朋友进行解决疑惑,如若想了解更多相关内容,可以向底部移动了解更多与本教程文章相关解决经验方法!
声明 未经许可,请勿转载。
© 2025 VLPOS.com 版权所有 微蓝网 ICP备案号:黑ICP备20003952号-1