【问题标题】:Pygame doesn't let me use float for rect.move, but I need itPygame 不允许我将 float 用于 rect.move,但我需要它
【发布时间】: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? 提前致谢!

【问题讨论】:

    标签: python pygame


    【解决方案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)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-13
        • 1970-01-01
        • 2012-04-22
        • 2012-09-25
        • 2014-07-10
        • 1970-01-01
        • 1970-01-01
        • 2018-03-20
        相关资源
        最近更新 更多