飞机大战报告函数未赋值
import pygameimport sys
import traceback
import myplane
import enemy
from pygame.locals import*
from random import *
pygame.init()
pygame.mixer.init()
bg_size = width,height = 400,700
screen = pygame.display.set_mode(bg_size)
pygame.display.set_caption('飞机大战——star ')
background = pygame.image.load('images/background.png').convert()
#载入音乐
pygame.mixer.music.load("sound/game_music.ogg")
pygame.mixer.music.set_volume(0.2)
bullet_sound = pygame.mixer.Sound("sound/bullet.wav")
bullet_sound.set_volume(0.2)
bomb_sound = pygame.mixer.Sound("sound/use_bomb.wav")
bomb_sound.set_volume(0.2)
supply_sound = pygame.mixer.Sound("sound/supply.wav")
supply_sound.set_volume(0.2)
get_bomb_sound = pygame.mixer.Sound("sound/get_bomb.wav")
get_bomb_sound.set_volume(0.2)
get_bullet_sound = pygame.mixer.Sound("sound/get_bullet.wav")
get_bullet_sound.set_volume(0.2)
upgrade_sound = pygame.mixer.Sound("sound/upgrade.wav")
upgrade_sound.set_volume(0.2)
enemy3_fly_sound = pygame.mixer.Sound("sound/enemy3_flying.wav")
enemy3_fly_sound.set_volume(0.2)
enemy1_down_sound = pygame.mixer.Sound("sound/enemy1_down.wav")
enemy1_down_sound.set_volume(0.2)
enemy2_down_sound = pygame.mixer.Sound("sound/enemy2_down.wav")
enemy2_down_sound.set_volume(0.2)
enemy3_down_sound = pygame.mixer.Sound("sound/enemy3_down.wav")
enemy3_down_sound.set_volume(0.5)
me_down_sound = pygame.mixer.Sound("sound/me_down.wav")
me_down_sound.set_volume(0.2)
def add_small_enemies(group1, group2, num):
for i in range(num):
e1 = enemy.SmallEnemy(bg_size)
group1.add(e1)
group2.add(e1)
def add_mid_enemies(group1, group2, num):
for i in range(num):
e2 = enemy.MidEnemy(bg_size)
group1.add(e2)
group2.add(e2)
def add_big_enemies(group1, group2, num):
for i in range(num):
e3 = enemy.BigEnemy(bg_size)
group1.add(e3)
group2.add(e3)
def main():
pygame.mixer.music.play(-1)
#绘制大型敌机
for each in big_enemies:
each.move()
if switch_image:
screen.blit(each,image1, each.rect)
else:
screen.blit(each,image2, each.rect)
#即将出现在画面,播放音效
if each.rect.bottom > -50:
enemy3_fly_sound.play()
#绘制中型敌机
for each in mid_enemies:
each.move()
screen.blit(each.image, each.rect)
#绘制型敌机
for each in small_enemies:
each.move()
screen.blit(each.image, each.rect)
#生成我方飞机
me = myplane.MyPlane(bg_size)
enemies = pygame.sprite.Group()
# 生成敌方小型飞机
small_enemies = pygame.sprite.Group()
add_small_enemies(small_enemies, enemies, 15)
# 生成敌方中型飞机
mid_enemies = pygame.sprite.Group()
add_mid_enemies(mid_enemies, enemies, 4)
# 生成敌方大型飞机
big_enemies = pygame.sprite.Group()
add_big_enemies(big_enemies, enemies, 2)
clock = pygame.time.Clock()
#用于切换图片
switch_image = True
#用于延迟
delay = 100
running = True
while running:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
#检测用户的键盘操作
key_pressed = pygame.key.get_pressed()
if key_pressed or key_pressed:
me.moveUp()
if key_pressed or key_pressed:
me.moveDown()
if key_pressed or key_pressed:
me.moveLeft()
if key_pressed or key_pressed:
me.moveRight()
screen.blit(background,(0,0))
#绘制我方飞机
if switch_image:
screen.blit(me.image1, me.rect)
else:
screen.blit(me.image2, me.rect)
#切换图片
if not(delay % 5):
switch_image = not switch_image
delay -= 1
if not delay:
delay = 100
pygame.display.flip()
clock.tick(60)
if __name__=='__main__':
try:
main()
except SystemExit:
pass
except:
traceback.print_exc()
pygame.quit()
input()
哪位大佬可以讲解一下 报错信息(详细)?
截个图也行啊 qiuyouzhi 发表于 2020-4-8 17:28
报错信息(详细)?
截个图也行啊
Traceback (most recent call last):
File "C:\Users\Herobrine\Desktop\飞机大战\main.py", line 171, in <module>
main()
File "C:\Users\Herobrine\Desktop\飞机大战\main.py", line 73, in main
for each in big_enemies:
UnboundLocalError: local variable 'big_enemies' referenced before assignment star__hero 发表于 2020-4-8 17:29
Traceback (most recent call last):
File "C:%users\Herobrine\Desktop\飞机大战\main.py", line 171 ...
应该是代码哪里变量名打错了 zltzlt 发表于 2020-4-8 17:30
应该是代码哪里变量名打错了
可以告诉我到底哪里错了吗,懵逼一天了,都没找到
star__hero 发表于 2020-4-8 17:34
可以告诉我到底哪里错了吗,懵逼一天了,都没找到
你的big_enemies在这个for循环后面啊。。。
怎么着也得让big_enemies在前面吧
import pygame
import sys
import traceback
import myplane
import enemy
from pygame.locals import*
from random import *
pygame.init()
pygame.mixer.init()
bg_size = width,height = 400,700
screen = pygame.display.set_mode(bg_size)
pygame.display.set_caption('飞机大战——star ')
background = pygame.image.load('images/background.png').convert()
#载入音乐
pygame.mixer.music.load("sound/game_music.ogg")
pygame.mixer.music.set_volume(0.2)
bullet_sound = pygame.mixer.Sound("sound/bullet.wav")
bullet_sound.set_volume(0.2)
bomb_sound = pygame.mixer.Sound("sound/use_bomb.wav")
bomb_sound.set_volume(0.2)
supply_sound = pygame.mixer.Sound("sound/supply.wav")
supply_sound.set_volume(0.2)
get_bomb_sound = pygame.mixer.Sound("sound/get_bomb.wav")
get_bomb_sound.set_volume(0.2)
get_bullet_sound = pygame.mixer.Sound("sound/get_bullet.wav")
get_bullet_sound.set_volume(0.2)
upgrade_sound = pygame.mixer.Sound("sound/upgrade.wav")
upgrade_sound.set_volume(0.2)
enemy3_fly_sound = pygame.mixer.Sound("sound/enemy3_flying.wav")
enemy3_fly_sound.set_volume(0.2)
enemy1_down_sound = pygame.mixer.Sound("sound/enemy1_down.wav")
enemy1_down_sound.set_volume(0.2)
enemy2_down_sound = pygame.mixer.Sound("sound/enemy2_down.wav")
enemy2_down_sound.set_volume(0.2)
enemy3_down_sound = pygame.mixer.Sound("sound/enemy3_down.wav")
enemy3_down_sound.set_volume(0.5)
me_down_sound = pygame.mixer.Sound("sound/me_down.wav")
me_down_sound.set_volume(0.2)
def add_small_enemies(group1, group2, num):
for i in range(num):
e1 = enemy.SmallEnemy(bg_size)
group1.add(e1)
group2.add(e1)
def add_mid_enemies(group1, group2, num):
for i in range(num):
e2 = enemy.MidEnemy(bg_size)
group1.add(e2)
group2.add(e2)
def add_big_enemies(group1, group2, num):
for i in range(num):
e3 = enemy.BigEnemy(bg_size)
group1.add(e3)
group2.add(e3)
def main():
pygame.mixer.music.play(-1)
# 生成敌方小型飞机
small_enemies = pygame.sprite.Group()
add_small_enemies(small_enemies, enemies, 15)
# 生成敌方中型飞机
mid_enemies = pygame.sprite.Group()
add_mid_enemies(mid_enemies, enemies, 4)
# 生成敌方大型飞机
big_enemies = pygame.sprite.Group()
add_big_enemies(big_enemies, enemies, 2)
#绘制大型敌机
for each in big_enemies:
each.move()
if switch_image:
screen.blit(each,image1, each.rect)
else:
screen.blit(each,image2, each.rect)
#即将出现在画面,播放音效
if each.rect.bottom > -50:
enemy3_fly_sound.play()
#绘制中型敌机
for each in mid_enemies:
each.move()
screen.blit(each.image, each.rect)
#绘制型敌机
for each in small_enemies:
each.move()
screen.blit(each.image, each.rect)
#生成我方飞机
me = myplane.MyPlane(bg_size)
enemies = pygame.sprite.Group()
clock = pygame.time.Clock()
#用于切换图片
switch_image = True
#用于延迟
delay = 100
running = True
while running:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
#检测用户的键盘操作
key_pressed = pygame.key.get_pressed()
if key_pressed or key_pressed:
me.moveUp()
if key_pressed or key_pressed:
me.moveDown()
if key_pressed or key_pressed:
me.moveLeft()
if key_pressed or key_pressed:
me.moveRight()
screen.blit(background,(0,0))
#绘制我方飞机
if switch_image:
screen.blit(me.image1, me.rect)
else:
screen.blit(me.image2, me.rect)
#切换图片
if not(delay % 5):
switch_image = not switch_image
delay -= 1
if not delay:
delay = 100
pygame.display.flip()
clock.tick(60)
if __name__=='__main__':
try:
main()
except SystemExit:
pass
except:
traceback.print_exc()
pygame.quit()
input() qiuyouzhi 发表于 2020-4-8 17:38
你的big_enemies在这个for循环后面啊。。。
怎么着也得让big_enemies在前面吧
???,哪一行啊
qiuyouzhi 发表于 2020-4-8 17:38
你的big_enemies在这个for循环后面啊。。。
怎么着也得让big_enemies在前面吧
结果那个显示local variable 'enemies' referenced before assignment star__hero 发表于 2020-4-8 17:42
结果那个显示local variable 'enemies' referenced before assignment
那你就把(我的代码)第108行拖上去呗 qiuyouzhi 发表于 2020-4-8 17:52
那你就把(我的代码)第108行拖上去呗
拖到哪
star__hero 发表于 2020-4-8 17:53
拖到哪
。。。
拖到 71行前面 代码用代码格式发布
代码不会发的点我!
你这个样子发的话看着有点头晕{:10_277:} qiuyouzhi 发表于 2020-4-8 17:38
你的big_enemies在这个for循环后面啊。。。
怎么着也得让big_enemies在前面吧
报错"Unable to import 'myplane'" xiaosi4081 发表于 2020-4-9 11:57
报错"Unable to import 'myplane'"
你自己去看教程,那些模块都是要自己写的
页:
[1]