我创建了一个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个条目。我想要实现的是在屏幕上添加更多的球得分达到一定数字。但我不知道我怎么能这样做?
谢谢
答案 0 :(得分:0)
您在主循环之前在第134行初始化positionx
和朋友。然后在循环内调用levels(score)
,这会更新enemies
计数,但实际上并未分配更多positionx
中的空间用于额外的敌人。 levels()
应该负责在增加敌人数量时调整阵列的大小。
正如 Lattyware 所评论的那样,为每个敌人使用对象将是很多更好的设计。通常,如果您保留任何类型的并行数组,如positionx
和positiony
,则应使用对象数组替换它们。然后,range(enemies)
上的所有不同循环将被一个大循环替换为:
for enemy in enemies:
enemy.update(globalGameState)
其中globalGameState
是一个或多个变量,跟踪像对所有敌人一样的鼠标位置等内容。