pygame元素具有不同的“速度”

时间:2018-09-05 15:16:21

标签: python pygame

我刚刚制作了一款太空入侵游戏,东西掉到了地上,你必须避免崩溃等。

我成功地创建了两个同时掉落的对象,但是我不能让他们以不同的速度这样做。

这是第一个对象的属性。

thing_startx = random.randrange(0, display_width-100)
thing_starty = -700
thing_speed = 4

现在它掉了

thing_starty += thing_speed 

在每个while循环迭代中。

对于下一个对象,我只向原始X和Y坐标添加了随机数,以便获得不同的位置。 (如果mult == True,请参见下面的函数创建两个rect对象)

def things_mult(thingx, thingy, thingw, thingh, color, mult, xopt, yopt, wopt, col2):
    if mult == False:
        pygame.draw.rect(gameDisplay, color, [thingx, thingy, thingw, thingh])
    else:
        pygame.draw.rect(gameDisplay, color, [thingx, thingy, thingw , thingh])
        pygame.draw.rect(gameDisplay, col2, [thingx + xopt, thingy + yopt, thingw + wopt, thingh])

现在,我假设我只需要定义

thingy_new = thing_starty + thing_yopt
thingy_new = thingy_new + thing_speed* someconstant #(to make it faster or slower)

不幸的是,它不能那样工作。 有人可以向我解释为什么我在某种程度上缺乏这种简单的逻辑吗?

1 个答案:

答案 0 :(得分:2)

最简单的解决方案是在代表游戏对象的列表中组合矩形,速度和其他数据,然后将这些对象放入另一个列表中,并使用ERROR: missing FROM-clause entry for table "page" 循环更新位置并绘制它们。

您还可以使用字典代替列表,以使代码更具可读性。

for

如果您知道类是如何工作的,并且您的对象也需要特殊的行为,那么最好为您的对象定义一个类。