Python射击小游戏

太空射击

基本参数设置及初始化

#导入模块
import pygame
import random
from os import path
#获取图片库和声音库路径
img_dir = path.join(path.dirname(__file__), 'assets') #图片路径
sound_folder = path.join(path.dirname(__file__), 'sounds') #声音路径
#定义游戏窗口、玩家血量条尺寸,游戏运行速度、炮火持续时间等参数
WIDTH = 480 #定义游戏窗口大小
HEIGHT = 600
FPS = 60 #游戏运行速度
POWERUP_TIME = 5000 #炮火持续时间
BAR_LENGTH = 100 #血量条尺寸
BAR_HEIGHT = 10

# 定义白、黑、红、绿、蓝、黄的RGB参数
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)

#初始化pygame模块,创建游戏窗口、游戏窗口命名、创建跟踪时间对象
pygame.init() #初始化将导入所有pygame的模块
pygame.mixer.init()  ## 初始化混音器模块
screen = pygame.display.set_mode((WIDTH, HEIGHT)) #设置游戏窗口大小
pygame.display.set_caption("spaceShooter") #设置标题
clock = pygame.time.Clock()     ## 创建时钟对象 用于FPS同步

#获取字体arial所在路径
font_name = pygame.font.match_font('arial')

加载图片

#加载游戏背景图片
background = pygame.image.load(path.join(img_dir, 'starfield.png')).convert()
background_rect = background.get_rect() #获取背景图片的矩形区域
#加载飞机图片
player_img = pygame.image.load(path.join(img_dir, 'playerShip1_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, 'laserRed16.png')).convert()
missile_img = pygame.image.load(path.join(img_dir, 'missile.png')).convert_alpha()
#加载敌人图片
meteor_images = []
meteor_list = [
    'meteorBrown_big1.png',
    'meteorBrown_big2.png', 
    'meteorBrown_med1.png', 
    'meteorBrown_med3.png',
    'meteorBrown_small1.png',
    'meteorBrown_small2.png',
    'meteorBrown_tiny1.png'
]

for image in meteor_list:
    meteor_images.append(pygame.image.load(path.join(img_dir, image)).convert())
#加载盾牌、闪电图片
powerup_images = {}
powerup_images['shield'] = pygame.image.load(path.join(img_dir, 'shield_gold.png')).convert()
powerup_images['gun'] = pygame.image.load(path.join(img_dir, 'bolt_gold.png')).convert()
# 加载爆炸效果图
explosion_anim = {}
explosion_anim['lg'] = []
explosion_anim['sm'] = []
explosion_anim['player'] = []
for i in range(9):
    #敌人爆炸
    filename = 'regularExplosion0{}.png'.format(i)
    img = pygame.image.load(path.join(img_dir, filename)).convert()
    img.set_colorkey(BLACK)
    #大爆炸  
    img_lg = pygame.transform.scale(img, (75, 75)) #将爆炸图片缩放到75×75
    explosion_anim['lg'].append(img_lg)
    #小爆炸  
    img_sm = pygame.transform.scale(img, (32, 32)) #将爆炸图片缩放到32×32
    explosion_anim['sm'].append(img_sm)

    #玩家爆炸
    filename = 'sonicExplosion0{}.png'.format(i)
    img = pygame.image.load(path.join(img_dir, filename)).convert()
    img.set_colorkey(BLACK)
    explosion_anim['player'].append(img)

加载声音

#加载炮弹、导弹发射声音    
shooting_sound = pygame.mixer.Sound(path.join(sound_folder, 'pew.wav'))
missile_sound = pygame.mixer.Sound(path.join(sound_folder, 'rocket.ogg'))  
#加载敌人爆炸声音
expl_sounds = []
for sound in ['expl3.wav', 'expl6.wav']:
    expl_sounds.append(pygame.mixer.Sound(path.join(sound_folder, sound)))
#加载玩家爆炸的声音
player_die_sound = pygame.mixer.Sound(path.join(sound_folder, 'rumble1.ogg'))
#调低音量
pygame.mixer.music.set_volume(0.2)

游戏开始界面函数

def main_menu():
    global screen
    menu_song = pygame.mixer.music.load(path.join(sound_folder, "menu.ogg")) #加载游戏初始界面背景音乐
    pygame.mixer.music.play(-1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值