16,820
个编辑
更改
无编辑摘要
# 获取图片库和声音库路径
img_dir = path.join(path.dirname(__file__), 'assets') # 图片路径C:\Users\Administrator\PycharmProjects\pythonProject图片路径sound_folder = path.join(path.dirname(__file__), 'sounds') # 声音路径
# 定义游戏窗口、玩家血量条尺寸,游戏运行速度、炮火持续时间等参数
WIDTH = 480 # 定义游戏窗口大小
# 加载游戏背景图片
background = pygame.image.load(path.join(img_dir, 'beijinstarfield.png')).convert()
background_rect = background.get_rect() # 获取背景图片的矩形区域
# 加载飞机图片
player_img = pygame.image.load(path.join(img_dir, 'feijiplayerShip1_orange.png')).convert() # 飞机图片
player_mini_img = pygame.transform.scale(player_img, (25, 19))
player_mini_img.set_colorkey(BLACK)
# 加载飞机炮弹、导弹图片
bullet_img = pygame.image.load(path.join(img_dir, 'feijilaserRed16.png')).convert()missile_img = pygame.image.load(path.join(img_dir, 'feijimissile.png')).convert_alpha()
# 加载敌人图片
meteor_images = []
meteor_list = [
'xiaofeijimeteorBrown_big1.png', 'feijimeteorBrown_big2.png', 'feijimeteorBrown_med1.png', 'feijimeteorBrown_med3.png', 'feijimeteorBrown_small1.png', 'feijimeteorBrown_small2.png', 'feijimeteorBrown_tiny1.png'
]
# 加载盾牌、闪电图片
powerup_images = {}
powerup_images['shield'] = pygame.image.load(path.join(img_dir, 'feijishield_gold.png')).convert()powerup_images['gun'] = pygame.image.load(path.join(img_dir, 'feijibolt_gold.png')).convert()
# 加载爆炸效果图
explosion_anim = {}
for i in range(9):
# 敌人爆炸
filename = 'feijiregularExplosion0{}.png'.format(i)
img = pygame.image.load(path.join(img_dir, filename)).convert()
img.set_colorkey(BLACK)
# 玩家爆炸
filename = 'feijisonicExplosion0{}.png'.format(i)
img = pygame.image.load(path.join(img_dir, filename)).convert()
img.set_colorkey(BLACK)
# 加载炮弹、导弹发射声音
shooting_sound = pygame.mixer.Sound(path.join(sound_folder, 'y1030pew.wav'))missile_sound = pygame.mixer.Sound(path.join(sound_folder, 'y1030rocket.wavogg'))
# 加载敌人爆炸声音
expl_sounds = []
for sound in ['y1030expl3.wav', 'y1030expl6.wav']:
expl_sounds.append(pygame.mixer.Sound(path.join(sound_folder, sound)))
# 加载玩家爆炸的声音
player_die_sound = pygame.mixer.Sound(path.join(sound_folder, 'y1030rumble1.wavogg'))
# 调低音量
pygame.mixer.music.set_volume(0.2)
def main_menu():
global screen
menu_song = pygame.mixer.music.load(path.join(sound_folder, "y1030menu.wavogg")) # 加载游戏初始界面背景音乐
pygame.mixer.music.play(-1) # 开始播放主界面音乐 -1表示无限循环播放
title = pygame.image.load(path.join(img_dir, "feijimain.png")).convert() # 加载主界面图片
title = pygame.transform.scale(title, (WIDTH, HEIGHT), screen) # 调整主界面图片适应主窗口大小即480*600
pygame.display.update()
# 进入准备状态
ready = pygame.mixer.Sound(path.join(sound_folder, 'y1030getready.wavogg')) # 加载准备声音
ready.play() # 准备状态声音播放
screen.fill(BLACK) # 背景黑色
self.hide_timer = pygame.time.get_ticks()
self.rect.center = (WIDTH / 2, HEIGHT + 200)
pygame.mixer.music.stop()
# 获得游戏运行背景音乐
pygame.mixer.music.load(path.join(sound_folder, 'y1030tgfcoder-FrozenJam-SeamlessLoop.wavogg'))
pygame.mixer.music.play(-1) # 循环播放