You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用列表块检查列表中每个项是否满足指定距离计算等式?

在Scratch中实现主角色与克隆体坐标距离检测

首先纠正公式表述问题:你需要的逻辑应该是主角色与克隆体的坐标差的绝对值小于d,也就是 |x主角色 - x克隆体| < d 和 |y主角色 - y克隆体| < d(而非|x| - |o| < d,后者不符合坐标距离的检测需求)。

(list) contains () 块仅能检查列表中是否存在特定值,无法完成遍历+数值计算+条件判断的复合逻辑,必须通过循环遍历列表项来实现,以下是两种常见存储方式的具体实现:

情况1:列表成对存储克隆体X/Y坐标

假设你的列表(比如命名为「克隆体坐标」)中,每2个条目对应一个克隆体的坐标(第1项=克隆体1的X,第2项=克隆体1的Y;第3项=克隆体2的X,第4项=克隆体2的Y),可以用以下逻辑:

当绿旗被点击
  将[索引 v]设为1
  重复执行直到 <(索引) > (长度 of [克隆体坐标 v])>
    将[克隆体X v]设为(项目 (索引) of [克隆体坐标 v])
    将[克隆体Y v]设为(项目 (索引 + 1) of [克隆体坐标 v])
    // 判断X/Y坐标差的绝对值是否都小于d
    如果 <<(abs((x位置) - (克隆体X))) < (d)> 且 <(abs((y位置) - (克隆体Y))) < (d)>> 那么
      // 此处写入检测到符合条件的克隆体后的逻辑(比如触发提示、角色互动等)
    将[索引 v]增加2

情况2:列表单条目存储X/Y组合字符串

如果列表中每个条目是用逗号分隔的坐标字符串(比如「100,50」),可以先分割字符串再提取坐标:

当绿旗被点击
  将[索引 v]设为1
  重复执行直到 <(索引) > (长度 of [克隆体坐标 v])>
    将[坐标字符串 v]设为(项目 (索引) of [克隆体坐标 v])
    将[分割后坐标 v]设为(分割 (坐标字符串) 以 [,])
    将[克隆体X v]设为(数字 (项目 1 of [分割后坐标 v]))
    将[克隆体Y v]设为(数字 (项目 2 of [分割后坐标 v]))
    如果 <<(abs((x位置) - (克隆体X))) < (d)> 且 <(abs((y位置) - (克隆体Y))) < (d)>> 那么
      // 写入你的触发逻辑
    将[索引 v]增加1

可选:检测直线距离(欧几里得距离)

如果需要判断主角色与克隆体的直线距离小于d,可以用平方和替代开根号(提升计算效率),条件改为:

如果 <( ((x位置) - (克隆体X)) * ((x位置) - (克隆体X)) + ((y位置) - (克隆体Y)) * ((y位置) - (克隆体Y)) ) < ((d) * (d))> 那么

内容的提问来源于stack exchange,提问作者Flaming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 04:53:23