python-pygame实现飞机大战-4-获取补给、发射强化子弹以及放大招清屏

承接上两步:
1.python-pygame实现飞机大战-添加背景以及飞机运动
2.python-pygame实现飞机大战-2-添加敌机以及碰撞爆炸
3.python-pygame实现飞机大战-3-发射子弹以及击中敌机

这一步的作用在于:
1.增加了超级炸弹、加强子弹的补给功能:如下
在这里插入图片描述
2.用户获取超级炸弹、加强子弹的补给后,首先子弹会进行强化,同时按空格键释放大招,清空屏幕内的飞机
在这里插入图片描述
先准备资源,网络上也可以下载到,我这里直接用的教程的资源,为什么呢(确实好看,自己找的惨不忍睹),整个项目的包我已经放上去了,包括源码以及资源,注释能加的基本上都加了,可自行下载查看:https://download.csdn.net/download/weixin_38778769/19126067。或者直接下载下方的图片(这一步要用到的)
在这里插入图片描述在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

其实通过前几步,整个游戏基本的框架差不多了,就是在原来的框架上添加一下新的功能
这里加了一个supply.py:主要是补给的控制,包括补给的移动以及重置,其实写法都差不多

import pygame
from random import *

# 子弹补给
class Bullet_Supply(pygame.sprite.Sprite):
    def __init__(self, bg_size):
        pygame.sprite.Sprite.__init__(self)
        # 子弹补给的图片
        self.image = pygame.image.load('images/bullet_supply.png').convert_alpha()
        # 定义屏幕宽高
        self.width = bg_size[0]
        self.height = bg_size[1]
        # get_rect()是一个处理矩形图像的方法,返回值包含矩形的各属性,这里返回飞机图片1的位置,可以获取图片的宽高等属性
        self.rect = self.image.get_rect()
        # 随机子弹补给的位置,randint(a,b)即生成a<=n<=b,即在屏幕宽度,以及2倍的高度下随机生成
        self.rect.left = randint(0, self.width - self.rect.width)
        self.rect.top = randint(-2 * self.height, 0)
        # 补给的存活状态,即是否显示以及能否触碰
        self.active = False
        # 补给下降状态
        self.speed = 5

    # 子弹补给运动
    def move(self):
        # 还未下降到最底部
        if self.rect.top < self.height:
            # 则继续向下运动
            self.rect.top += self.speed
        else:
            # 下降到最底部后,状态变为未激活状态
            self.active = False

    # 子弹补给重置
    def reset(self):
        # 状态重置
        self.active = True
        # 随机子弹补给的位置,randint(a,b)即生成a<=n<=b,即在屏幕宽度,以及2倍的高度下随机生成
        self.rect.left = randint(0, self.width - self.rect.width)
        self.rect.top = randint(-2 * self.height, 0)

# 超级炸弹补给
class Bomb_Supply(pygame.sprite.Sprite):
    def __init__(self, bg_size):
        pygame.sprite.Sprite.__init__(self)
        # 超级炸弹图片
        self.image = pygame.image.load('images/bomb_supply.png').convert_alpha()
        # 定义屏幕宽高
        self.width = bg_size[0]
        self.height = bg_size[1]
        # get_rect()是一个处理矩形图像的方法,返回值包含矩形的各属性,这里返回飞机图片1的位置,可以获取图片的宽高等属性
        self.rect = self.image.get_rect()
        # 超级炸弹补给的位置,randint(a,b)即生成a<=n<=b,即在屏幕宽度,以及2倍的高度下随机生成
        self.rect.left = randint(0, self.width - self.rect.width)
        self.rect.top = randint(-2 * self.height, 0)
        # 补给的存活状态,即是否显示以及能否触碰
        self.active = False
        # 补给下降状态
        self.speed = 5

    # 超级炸弹移动
    def move(self):
        # 还未下降到最底部
        if self.rect.top < self.height:
            # 则继续向下运动
            self.rect.top += self.speed
        else:
            # 下降到最底部后,状态变为未激活状态
            self.active = False

# 子弹补给重置
    def reset(self):
        # 状态重置
        self.active = True
        # 超级炸弹补给的位置,randint(a,b)即生成a<=n<=b,即在屏幕宽度,以及2倍的高度下随机生成
        self.rect.left = randint(0, self.width - self.rect.width)
        self.rect.top = randint(<
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值