Pygame 不允许我将 float 用于 rect.move,但我需要它
Posted
技术标签:
【中文标题】Pygame 不允许我将 float 用于 rect.move,但我需要它【英文标题】:Pygame doesn't let me use float for rect.move, but I need it 【发布时间】:2020-12-07 15:01:54 【问题描述】:我最近在 Python 3 和 Pygame 中重新创建了Lunar Lander 的一个版本(你知道,旧的复古游戏):由于重力,我的着陆器沿 y 轴移动 (̀̀̀rect.move
) 每一帧。\
问题:
在我达到 1 m/s 之前,添加到 rect.move 的 y 值是一个小于 1 的浮点数:我必须使用 int()
对其进行四舍五入,因为 pygame 不喜欢浮点数。
在之前的 Tkinter 版本中,着陆器的 y 坐标是这样的:
0.01
0.02
...
0.765
1.03
1.45
...
在 pygame 中是
0
0
0
...
1
1
1
2
2
...
这真的很烦人,因为动作并不流畅。
有人知道如何解决这个问题吗?比如,输入一个浮点数到rect.move
?
提前致谢!
【问题讨论】:
【参考方案1】:由于pygame.Rect
应该代表屏幕上的一个区域,所以pygame.Rect
对象只能存储整数数据:
Rect 对象的坐标都是整数。 [...]
如果要以浮点精度存储对象位置,则必须将对象的位置存储在单独的变量和属性中,并同步pygame.Rect
对象。 round
坐标并将其分配给矩形的位置(例如.topleft
):
x, y = # floating point coordinates
rect.topleft = round(x), round(y)
【讨论】:
【参考方案2】:我自己没有测试过,所以如果这不起作用,我很抱歉,但我认为 python 将数字作为字符串而不是
int(variable)
你应该这样做float(variable)
【讨论】:
以上是关于Pygame 不允许我将 float 用于 rect.move,但我需要它的主要内容,如果未能解决你的问题,请参考以下文章