python pygame实现飞机大战

本文将详细介绍如何利用Python的Pygame库创建一款经典的飞机大战游戏。内容涵盖游戏的基本框架搭建、飞机和敌机的绘制、碰撞检测、子弹发射及游戏得分系统等核心功能的实现。

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

#--coding:utf-8--

'''My Function'''

from mydata import *
from myclass import *

def hiteffect(ImagePath, x, y, w, h, Window):
    image = pygame.image.load(ImagePath).convert_alpha()
    screen = pygame.Rect(x, y, w, h)
    Window.blit(image, screen)


def bulletFly(BulletList):
    # 子弹飞行函数
    for bullet in BulletList:
        if bullet.bulletFly('up') >= bullet.height:
            pass
        else:
            BulletList.remove(bullet)


def gun(Parameter_Class, PlaneObject, Bg_Object, Window):
    # 机枪函数
    PlaneObject.fire()
    if Parameter_Class.GunTimeStep <= Parameter_Class.GunSpeed:
        bulletFly(Parameter_Class.BulletList)
        Parameter_Class.GunTimeStep += 1
    else:
        bullet = BulletObject(PlaneObject.screen.x + 39, PlaneObject.screen.y,
                              22, 22, Parameter_Class.BulletPath, Window, Parameter_Class.BulletSpeed, Bg_Object)
        Parameter_Class.BulletList.append(bullet)
        bulletFly(Parameter_Class.BulletList)
        Parameter_Class.GunTimeStep = 0


def enemyattack(EnemyList, Bg_Object):
    # 敌人移动
    for enemy in EnemyList:
        if enemy.EnemyFly() <= (Bg_Object.height - enemy.height):
            pass
        else:
            EnemyList.remove(enemy)


def enemyaction(Parameter_Class, Bg_Object, Window):
    # 所有敌人行为
    if Parameter_Class.EnemyTimeStep <= Parameter_Class.EnemyShowSpeed:
        enemyattack(Parameter_Class.EnemyList, Bg_Object)
        Parameter_Class.EnemyTimeStep += 1
    else:
        x = random.randint(40, 400)
        enemy = EnemyObject(x, 0,
                            57, 43, Parameter_Class.EnemyPath, Window, Parameter_Class.EnemySpeed, Bg_Object)
        Parameter_Class.EnemyList.append(enemy)
        enemyattack(Parameter_Class.EnemyList, Bg_Object)
        Parameter_Class.EnemyTimeStep = 0


def hit(Parameter_Class, PlaneObject, Window):
    # 对象间接触处理函数
    PlaneWRange = (PlaneObject.screen.x + PlaneObject.width * 0.8)
    PlaneWHead = (PlaneObject.screen.x + PlaneObject.width * 0.2)
    PlaneHRange = (PlaneObject.screen.y + PlaneObject.height * 0.9)
    PlaneHHead = (PlaneObject.screen.y + PlaneObject.height * 0.1)
    for bullet in Parameter_Class.BulletList:
        bulletWRange = (bullet.screen.x + bullet.width)
        bulletHRange = (bullet.screen.y + bullet.height)
        for enemy in Parameter_Class.EnemyList:
            enemyWRange = (enemy.screen.x + enemy.width)
            enemyHRange = (enemy.screen.y + enemy.height)
            if bullet.screen.y < enemyHRange and bulletHRange > enemy.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值