我试图将我所有的游戏关卡都放在一个程序中。在此之前,所有代码都运行良好。但是,当我将所有程序放入其函数中并尝试运行第一级时,出现错误:
if event.type == pygame.KEYDOWN and event.key == pygame.K_UP and igralec.y > 10:
UnboundLocalError: local variable 'event' referenced before assignment
我在网上搜索了这个错误并做了应该做的修复;我将这些代码行放在事件循环下,但这使游戏无法玩;我不得不按一个键(按住它不起作用)。然后我尝试将if更改为while,这也没有用。这是代码:
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
run = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE and igralec.ziv > 0:
print(igralec.fire_rate)
igralec.fire_rate += 1
if igralec.fire_rate == 4:
igralec.fire_rate = 1
if igralec.fire_rate % 2 == 1 or igralec.fire_rate == 1:
strel.play()
if igralec.levo:
smer = -1
else:
smer = 1
if len(metki) < 5:
metki.append(torpedo(igralec.x, igralec.y + 40, smer))
for metek in metki:
if metek.x < 1024 and metek.x > 0:
metek.x += metek.v
if metek.x > podmornca.okvir[0] and metek.x < podmornca.okvir[0] + podmornca.okvir[2]:
if metek.y > podmornca.okvir[1] and metek.y < podmornca.okvir[1] + podmornca.okvir[3]:
zadetek.play()
else:
metki.pop(metki.index(metek))
if event.type == pygame.KEYDOWN and event.key == pygame.K_UP and igralec.y > 10:
igralec.y -= 5
if event.type == pygame.KEYDOWN and event.key == pygame.K_DOWN and igralec.y < 600:
igralec.y += 5
if event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT:
igralec.levo = True
igralec.desno = False
eksploziv.x += igralec.v
kamenx += igralec.v
podmornca.zac += igralec.v
podmornca.konc += igralec.v
podmornca.x += igralec.v
慕田峪7331174
POPMUISE
相关分类