pygame实现飞机大战

本文展示了如何使用Python的Pygame库创建一个飞机大战游戏。游戏包括玩家飞机、敌人飞机、子弹、爆炸效果和道具,以及游戏循环、碰撞检测和音效。玩家通过键盘控制飞机移动并发射子弹,击中敌人得分,同时需要躲避敌人的攻击。游戏还包含生命值、护盾和道具系统,道具可以增强火力、恢复生命或清除所有敌人。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文实例为大家分享了pygame实现飞机大战的具体代码,供大家参考,具体内容如下

运行效果图:


    import pygame
    import random
    import time
    import os
    from os import path
    
    WIDTH = 480
    HEIGHT = 600
    FPS = 60#每秒显示多少帧
    POWERUP_TIME = 5000
    
    COLOR = (255,174,200)
    WHITE = (255,255,255)
    BLACK = (0,0,0)
    GREEN = (0,255,0)
    BLUE = (0,0,255)
    RED = (255,0,0)
    YELLOW = (255,255,0)
    #game_folder = os.path.dirname(__file__)
    #img_folder = os.path.join(game_folder,'img')
    
    pygame.init()
    pygame.mixer.init()#声音的初始化
    screen = pygame.display.set_mode((WIDTH,HEIGHT))#屏幕
    pygame.display.set_caption("星际大战")#题目
    clock = pygame.time.Clock()
    
    
    snd_dir = path.join(path.dirname(__file__), 'snd')
    img_dir = path.join(path.dirname(__file__), 'img')
    background = pygame.image.load(path.join(img_dir, 'background.png'))
    background_rect = background.get_rect()
    player_img = pygame.image.load(path.join(img_dir,'playerShip1.png'))
    player_mini_img = pygame.transform.scale(player_img, (25, 19))
    player_mini_img.set_colorkey(BLACK)
    #meteor_img = pygame.image.load(path.join(img_dir, "meteorBrown.png"))
    bullet_img = pygame.image.load(path.join(img_dir, "laserRed.png"))
    missile_img = pygame.image.load(path.join(img_dir, "missileRed.png"))
    meteor_images = []
    meteor_list =['monster11.png','monster22.png','monster33.png','monster44.png','monster55.png']
    for img in meteor_list:
     meteor_images.append(pygame.image.load(path.join(img_dir, img)).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()
    powerup_images['star'] = pygame.image.load(path.join(img_dir, 'star_gold.png')).convert()
    powerup_images['heart'] = pygame.image.load(path.join(img_dir, 'heart_gold.png')).convert()
    shoot_sound = pygame.mixer.Sound(path.join(snd_dir, 'shoot_sound.wav'))
    expl_sounds = []
    for snd in ['rumble1.ogg', 'bomb.wav']:
     expl_sounds.append(pygame.mixer.Sound(path.join(snd_dir, snd)))
    pygame.mixer.music.load(path.join(snd_dir, 'back_music.wav'))
    pygame.mixer.music.set_volume(0.7)
    
    #爆炸效果
    explosion_anim = {
   
   }
    explosion_anim['lg'] = []
    explosion_anim['sm'] = []
    explosion_anim['player'] = []
    for i in range(4):
     filename = 'explosion0{}.png'.format(i)
     img = pygame.image.load(path.join(img_dir, filename)).convert()
     img.set_colorkey(WHITE)
     img_lg = pygame.transform.scale(img, (75, 75))
     explosion_anim['lg'].append(img_lg)
     img_sm = pygame.transform.scale(img, (32, 32))
     explosion_anim['sm'].append(img_sm) #玩家爆炸
     filename = 'explosion0{}.png'.format(i)
     img = pygame.image.load(path
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值