|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为啥我的pygame一运行就报错,错误原因还很奇怪,我改不好,ai也找不到 ,pygame也装了,所以到底是哪里错了
代码:
- # 导入所需的库
- import pygame # 导入pygame库,用于游戏开发
- import sys # 导入sys库,用于系统相关操作
- from pygame.locals import * # 从pygame.locals导入所有常量
- import traceback # 导入traceback库,用于异常处理
- import myplane # 导入自定义的myplane模块,用于玩家飞机相关操作
- import enemy # 导入自定义的enemy模块,用于敌机相关操作
- # 初始化pygame
- pygame.init() # 初始化所有pygame模块
- pygame.mixer.init() # 初始化音频模块
- # 设置游戏窗口大小
- bg_size = width,height = 480,700# 定义背景尺寸,宽度480像素,高度700像素
- # 创建游戏窗口
- screen = pygame.display.set_mode(bg_size) # 创建指定尺寸的游戏窗口
- pygame.display.set_caption("飞机大战") # 设置窗口标题为"飞机大战"
- # 加载游戏背景图片
- background = pygame.image.load("解压包/images/background.png") # 加载背景图片
- # 加载并设置游戏背景音乐
- pygame.mixer.music.load("解压包/sound/game_music.ogg") # 加载背景音乐文件
- pygame.mixer.music.set_volume(0.2) # 设置背景音乐音量为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") # 加载敌机3飞行音效
- enemy3_fly_sound.set_volume(0.2) # 设置敌机3飞行音效音量
- enemy1_down_sound=pygame.mixer.Sound("解压包/sound/enemy1_down.wav") # 加载敌机1被击落音效
- enemy1_down_sound.set_volume(0.1) # 设置敌机1被击落音效音量
- enemy2_down_sound=pygame.mixer.Sound("解压包/sound/enemy2_down.wav") # 加载敌机2被击落音效
- enemy2_down_sound.set_volume(0.2) # 设置敌机2被击落音效音量
- enemy3_down_sound=pygame.mixer.Sound("解压包/sound/enemy3_down.wav") # 加载敌机3被击落音效
- enemy3_down_sound.set_volume(0.5) # 设置敌机3被击落音效音量
- 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_middle_enemies(group1,group2,num):
- for i in range(num):
- e1=enemy.MiddleEnemy(bg_size)
- group1.add(e1)
- group2.add(e1)
- def add_big_enemies(group1,group2,num):
- # 生成大敌机
- for i in range(num):
- e1=enemy.BigEnemy(bg_size)
- group1.add(e1)
- group2.add(e1)
- # 游戏主循环
- def main():
- pygame.mixer.music.play(-1) # 播放背景音乐,循环播放
- #生成我方飞机
- me = myplane.MyPlane(bg_size) # 创建玩家飞机对象
- #生成地方飞机
- enemies = pygame.sprite.Group() # 创建敌机精灵组
- #生成small敌方飞机
- small_enemies = pygame.sprite.Group() # 创建小型敌机精灵组
- add_small_enemies(small_enemies,enemies,15) # 调用函数生成小型敌机
- #生成middle敌方飞机
- middle_enemies = pygame.sprite.Group() # 创建中型敌机精灵组
- add_middle_enemies(middle_enemies,enemies,4) # 调用函数生成小型敌机
- #生成big敌方飞机
- big_enemies = pygame.sprite.Group() #
- add_big_enemies(big_enemies,enemies,2)
- running = True
- clock = pygame.time.Clock()
- #切换造型
- switch_image = True
- #设置延迟
- delay = 100
- while running:
- # 处理游戏事件
- for event in pygame.event.get(): # 获取所有事件
- if event.type == pygame.QUIT: # 如果点击关闭按钮
- pygame.quit()
- sys.exit() # 退出程序
-
- if event.type == pygame.KEYDOWN: # 如果按下键盘按键
- if event.key == pygame.K_ESCAPE: # 如果按下ESC键
- pygame.quit() # 退出pygame
- sys.exit() # 退出程序
- key_pressed = pygame.key.get_pressed() # 获取当前按下的键盘按键
- # 检测W键或上方向键是否被按下
- if key_pressed[K_w] or key_pressed[K_UP]:
- # 如果按下,则调用向上移动的方法
- me.moveUp()
- # 检测S键或下方向键是否被按下
- if key_pressed[K_s] or key_pressed[K_DOWN]:
- # 如果按下,则调用向下移动的方法
- me.moveDown()
- # 检测A键或左方向键是否被按下
- if key_pressed[K_a] or key_pressed[K_LEFT]:
- # 如果按下,则调用向左移动的方法
- me.moveLeft()
- # 检测D键或右方向键是否被按下
- if key_pressed[K_d] or key_pressed[K_RIGHT]:
- # 如果按下,则调用向右移动的方法
- me.moveRight()
-
- # 绘制游戏画面
- screen.blit(background,(0,0)) # 将背景图片绘制在屏幕上
- 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()
-
- #绘制midle飞机
- for each in middle_enemies: # 遍历大敌机精灵组
- each.move() # 调用大敌机移动的方法
- screen.blit(each.image,each.rect)
-
- #绘制small飞机
- for each in small_enemies: # 遍历大敌机精灵组
- each.move() # 调用大敌机移动的方法
- screen.blit(each.image,each.rect)
- switch_image = not switch_image # 切换造型
- if switch_image: # 如果切换图像
- screen.blit(me.image1,me.rect) # 将玩家飞机绘制在屏幕上
- else: # 否则
- screen.blit(me.image2,me.rect) # 将玩家飞机绘制在屏幕上
-
- #绘制我方飞机
-
- if not(delay%10):
- switch_image = not switch_image # 切换造型
- delay -= 1 # 延迟减1
- if not delay:
- delay = 100 # 重置延迟
- pygame.display.flip() # 更新屏幕显示
- clock.tick(60) # 设置游戏帧率为60帧每秒
- if __name__ == '__main__':
- try:
- main()
- except SystemExit:
- pass
- except:
- traceback.print_exc()
- pygame.quit()
- input()
复制代码 错误原因:
感觉像系统错误
|
-
|