我刚刚制作了一款太空入侵游戏,东西掉到了地上,你必须避免崩溃等。
我成功地创建了两个同时掉落的对象,但是我不能让他们以不同的速度这样做。
这是第一个对象的属性。
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)
不幸的是,它不能那样工作。 有人可以向我解释为什么我在某种程度上缺乏这种简单的逻辑吗?
答案 0 :(得分:2)
最简单的解决方案是在代表游戏对象的列表中组合矩形,速度和其他数据,然后将这些对象放入另一个列表中,并使用ERROR: missing FROM-clause entry for table "page"
循环更新位置并绘制它们。
您还可以使用字典代替列表,以使代码更具可读性。
for
如果您知道类是如何工作的,并且您的对象也需要特殊的行为,那么最好为您的对象定义一个类。