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

2024-04-24 06:20:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个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个条目。我想达到的目的是在屏幕上增加更多的球。但我不知道怎么做?你知道吗

谢谢


Tags: 游戏if屏幕levelglobalpygameusersfile
1条回答
网友
1楼 · 发布于 2024-04-24 06:20:33

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

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

for enemy in enemies:
    enemy.update(globalGameState)

其中globalGameState是一个或多个变量,用于跟踪所有敌人的鼠标位置。你知道吗

相关问题 更多 >