pygame飞机大战用精灵组层编写英雄系列(三)英雄牛刀小试,走出试练谷

本文介绍如何在pygame游戏中为英雄飞机添加子弹功能。通过修改bullet.py和创建herobullet.py,实现子弹的发射,并在heroplane.py中设置发射逻辑。在main.py中初始化子弹,处理发射事件,并进行英雄子弹与敌人飞机的碰撞检测,以完成基本的游戏功能。

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

看见敌机了,总不能去撞吧,英雄机当然得有子弹了。

子弹的编写,前面的日志里已经写了很多了,这里稍微改一下,直接拿来用吧。

bullet.py

"""
子弹的基类
设置坐标,速度,角度,计算更新后的点的坐标
"""
from setting import *
import math


class Bullet(pygame.sprite.Sprite):
    def __init__(self, group):
        self._layer = 9
        self.groups = allgroup, group
        pygame.sprite.Sprite.__init__(self, self.groups)
        #必须要的两个初始化
        self.image = pygame.image.load('images/bullet/bulletdefault.png').convert()
        self.rect = self.image.get_rect()
        #用vector来表述,清晰些,子弹的尺寸,用来飞机发射时的位置
        self.size = vect(self.rect.width, self.rect.height)
        #设置图像的mask属性,碰撞检查时,透明图像就忽略了
        self.mask = pygame.mask.from_surface(self.image)
        #设置默认的数据参数,速度
        self.speed = 4
        #笛卡尔坐标系,angle = 90 垂直向下
        self.angle = 90
        #初始距离和原点坐标
        self.distance = 0
        self.x_original = 0
        self.y_original = 0
        #伤害值
        self.damage = 1

    #继承至sprite,被sprite.Group()加入后,只要调用了sprite的update,这里也会自动调用
    def update(self):
        """计算图像位置
            先计算单位时间后的距离,通过三角运算,加上原始坐标,即为更新后坐标。
            想用pygame.time.get_fps()来计算时间,效果不好,直接写成了1000
        """
        #计算距离
        self.distance += 1000 * self.speed / 1000
        #degree 换成 radian 角度换弧度,用临时变量angle,保障self.angle不被变更
        angle = self.angle
        angle = math.pi * angle / 180
        #计算图像的左上角的x,y,三角函数换算加上原始点坐标
        self.rect.x = self.distance * math.cos(angle) + self.x_original
        self.rect.y = self.distance * math.sin(angle) +
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值