Pygame级别系统导致列表索引错误

时间:2012-05-01 14:14:41

标签: python arrays python-3.x pygame

我创建了一个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个条目。我想要实现的是在屏幕上添加更多的球得分达到一定数字。但我不知道我怎么能这样做?

谢谢

1 个答案:

答案 0 :(得分:0)

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

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

for enemy in enemies:
    enemy.update(globalGameState)

其中globalGameState是一个或多个变量,跟踪像对所有敌人一样的鼠标位置等内容。