1

我创建了一个pygame,游戏的目的是避免球在屏幕上移动(随机)

ballpic = pygame.image.load('ball.png').convert_alpha()

我有一个水平功能:

def levels(score):
 global enemies
 global velocity
 enemies = enemies
 velocity = velocity

#level one 
if score >= 500:
  enemies = 6
  velocity = 2

#level two
if score >= 1000:
  enemies = 6
  velocity = 2
  #....And so on

带有缩进的游戏:///已过期/

如果我尝试这样做,我会收到此错误:

Traceback (most recent call last):
 File "C:\Users\MO\Desktop\Twerk\twerk-bck.py", line 252, in <module>
  game()
File "C:\Users\MO\Desktop\Twerk\twerk-bck.py", line 199, in game
 positionx[i]=positionx[i]+positionxmove[i]
IndexError: list index out of range

我知道我需要将新值附加到列表中以将它们扩展 3 个条目。我想要实现的是在屏幕上添加更多的球,得分达到一定的数字。但我不知道我该怎么做?

谢谢

4

1 回答 1

0

positionx您在 147 的主循环之前的第 134 行初始化和朋友。然后levels(score)在循环内部调用,它更新enemies计数但实际上并没有positionx为额外的敌人分配更多空间。 levels()应该负责在增加敌人数量时调整数组的大小。

正如Lattyware评论的那样,为每个敌人使用对象将是一个更好的设计。通常,如果您保留任何类型的并行数组,例如positionxand positiony,您应该将它们替换为对象数组。然后你所有不同的循环range(enemies)将被一个大循环取代,如:

for enemy in enemies:
    enemy.update(globalGameState)

哪里globalGameState是一个或多个变量来跟踪所有敌人的鼠标位置等东西。

于 2012-05-01T14:42:50.963 回答