开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 193|回复: 2
收起左侧

[完成] 请教Lua语言中如何计算XY坐标最近的BOSS。

 关闭 [复制链接]
结帖率:100% (4/4)
发表于 2025-1-11 13:00:29 | 显示全部楼层 |阅读模式   河北省廊坊市
20精币
从6点琢磨到现在,确实没好好学习脑袋也不灵光。。。请大佬帮忙local myX=100 myY=200`'自己的坐标
local x = - 1 y = - 1
local arr = findPicAllPoint(0, 0, 1280, 768, "boss1.png|boss2.png" , 0.85)
if arr ~= nil then
        for n = 1 , #arr do
                print("posXY:" , arr[n].x , arr[n].y)'-打印出所有BOSS的坐标
        end
end
--------------------
local lastX=???

local lastY=???
--------------------
想请教,自己的坐标是X=100,Y=200
要如何写如何计算,可以计算出两个变量,比如lastX,lastY,是距离自己100,200坐标最近的那个。。。直接赋值给lastX,Y



最佳答案

查看完整内容

要计算出距离(100, 200)最近的坐标,我们需要利用距离公式 ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 (x2​−x1​)2+(y2​−y1​)2​ 来计算候选坐标点与当前位置的距离,并找出最小距离对应的点。 以下是改写并添加计算最近点的代码实现: lua 复制代码 local myX = 100 local myY = 200 -- 自己的位置坐标 local lastX = nil local lastY = nil local closestDistance = math.huge -- 初始化为一个极大的数值 local arr = find ...
结帖率:92% (12/13)

签到天数: 12 天

发表于 2025-1-11 13:00:30 | 显示全部楼层   广西壮族自治区崇左市
要计算出距离(100, 200)最近的坐标,我们需要利用距离公式
(
x
2

x
1
)
2
+
(
y
2

y
1
)
2
(x2​−x1​)2+(y2​−y1​)2​ 来计算候选坐标点与当前位置的距离,并找出最小距离对应的点。

以下是改写并添加计算最近点的代码实现:

lua
复制代码

local myX = 100
local myY = 200 -- 自己的位置坐标

local lastX = nil
local lastY = nil

local closestDistance = math.huge -- 初始化为一个极大的数值
local arr = findPicAllPoint(0, 0, 1280, 768, "boss1.png|boss2.png", 0.85)

if arr ~= nil then
    for n = 1, #arr do
        local posX = arr[n].x
        local posY = arr[n].y
        print("posXY:", posX, posY) -- 打印出所有BOSS的坐标

        -- 计算该坐标与自己的坐标之间的距离
        local distance = math.sqrt((posX - myX) ^ 2 + (posY - myY) ^ 2)

        -- 判断是否是距离最近的点
        if distance < closestDistance then
            closestDistance = distance -- 更新最近距离
            lastX = posX
            lastY = posY -- 更新最近坐标
        end
    end
end

-- 打印出距离自己最近的点
if lastX and lastY then
    print("Closest position:", lastX, lastY)
else
    print("No BOSS points found")
end
代码实现步骤:
初始化变量:

myX 和 myY 是自己的坐标。
lastX 和 lastY 用于存储最近点的坐标,初始为 nil。
closestDistance 初始化为一个极大的数值(math.huge 用于确保初次比较时任何距离都能覆盖)。
遍历所有点:

使用循环遍历 findPicAllPoint 返回的数组 arr,逐一取出点的坐标 posX 和 posY。
计算距离:

使用欧几里得公式计算 arr[n] 点与 (myX, myY) 的距离。
更新最近坐标:

如果当前距离比 closestDistance 小,更新最近距离,并记录当前坐标为最近点。
输出结果:

循环结束后,若找到了坐标,打印距离最近的坐标点;否则,提示未找到坐标点。
示例输出:
假设 findPicAllPoint 返回以下坐标:

(110, 210)
(300, 400)
(120, 190)
下面是打印结果:

复制代码

posXY: 110 210
posXY: 300 400
posXY: 120 190
Closest position: 110 210
在此场景中,点 (110, 210) 是距离 (100, 200) 最近的点,结果打印它的坐标。
回复

使用道具 举报

结帖率:92% (12/13)

签到天数: 12 天

发表于 2025-1-11 13:10:07 | 显示全部楼层   广西壮族自治区崇左市
你问GPT还快点
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表