Pygame不允许我将float用于rect.move,但我需要它

发布于 2021-01-29 19:33:52

我最近重新创建一个版本的月球着陆器在Python
3和pygame的(要知道,老复古游戏):我的着陆器移动(rect.move)一起由于重力的y轴每一帧\。

问题:
在我达到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?提前致谢!

关注者
0
被浏览
54
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    由于pygame.Rect应该代表屏幕上的某个区域,因此pygame.Rect对象只能存储整数数据:

    Rect对象的坐标都是整数。[…]

    如果要以浮点精度存储对象位置,则必须将对象的位置存储在单独的变量或属性中,并进行pygame.Rect对象同步。round坐标并将其分配给.topleft矩形的位置(例如):

    x, y = # floating point coordinates
    rect.topleft = round(x), round(y)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看