Pygame中如何提取同类每个实体信息?矩形移动距离获取异常
问题解决
核心问题修正
你的循环中存在break语句,这会强制循环仅执行一次,只处理ballgroup里的第一个矩形,导致最终列表里的数值都是同一个矩形的结果。只需删除break,就能遍历所有矩形并收集每个的移动距离:
for aball in ballgroup: distance = aball.throwlength() if distance is not None: # 过滤未触发计算的情况 checklist.append(distance)
移动距离计算优化
当前throwlength函数只计算了x方向的水平距离,若你需要的是初始到最终中心点的直线像素距离(更符合“移动距离”的实际意义),建议改用欧几里得距离公式计算:
import math def throwlength(self): if self.trigger: dx = self.start_xmid - self.end_xmid dy = self.start_ymid - self.end_ymid return math.sqrt(dx ** 2 + dy ** 2) return None # 未触发时返回None,避免后续处理异常
内容的提问来源于stack exchange,提问作者Stjornhuginn
相关产品推荐
相关产品推荐

