抛体运动模拟程序点击崩溃:TypeError参数类型错误排查
抛体运动程序报错解决方案
报错的核心原因是Pygame的绘制函数要求坐标必须是整数类型,但你的代码中self.path里存储的坐标包含浮点数,导致调用pygame.draw.circle时触发类型错误。
问题出在哪?
在Projectile类的update方法中,你计算的抛体位置是浮点数:
self.path.append((self.x, self.y-abs(self.ch)))
这里self.ch是通过三角函数、平方运算得到的浮点数,所以self.y-abs(self.ch)的结果也是浮点数,最终path里的坐标元组是(float, float),不符合Pygame绘制函数的参数要求。
修复方法
只需要在将坐标加入path时,把浮点数转换为整数即可,修改update方法中的append行:
# 原代码 self.path.append((self.x, self.y-abs(self.ch))) # 修改后 self.path.append((int(self.x), int(self.y - abs(self.ch))))
这样path里存储的所有坐标都是整数元组,后续绘制圆形时就不会再报错。
额外优化(可选)
如果你希望坐标更精确,也可以用round()函数取整,适合需要四舍五入的场景:
self.path.append((round(self.x), round(self.y - abs(self.ch))))
内容的提问来源于stack exchange,提问作者Rey
相关产品推荐
相关产品推荐

