火箭小猪大战BUG-3:发射子弹

效果图如下:

1.在settings.py中添加子弹设置

# 子弹设置
        self.bullet_speed = 0.4
        self.bullet_width = 3
        self.bullet_height = 15
        self.bullet_color = (254, 215, 26)
        self.bullets_allowed = 3

2.创建Bullet.py

import pygame
from pygame.sprite import Sprite
# 继承了从模块 pygame.sprite 导入的 Sprite 类,可将游戏中相关的元素编组,进而同时操作编组中的所有元素

class Bullet(Sprite):
    """管理火箭所发射子弹的类"""

    def __init__(self, ai_game):
        """在飞船当前位置创建一个子弹对象"""
        super().__init__()  # 调用 super() 来继承 Sprite
        self.screen = ai_game.screen
        self.settings = ai_game.settings
        self.color = self.settings.bullet_color

        # 在(0,0)处创建一个表示子弹的矩形,再设置正确的位置
        self.rect = pygame.Rect(0, 0, self.settings.bullet_width, self.settings.bullet_height)
        self.rect.midtop = ai_game.ship.rect.midtop

        # 存储用小数表示的子弹位置
        self.y = float(self.rect.y)

    def update(self):
        """向上移动子弹。"""
        # 更新表示子弹位置的小数值。
        self.y -= self.settings.bullet_speed
        # 更新表示子弹的 rect 的位置。
        self.rect.y = self.y

    def draw_bullet(self):
        """在屏幕上绘制子弹"""
        pygame.draw.rect(self.screen, self.color, self.rect)

3.修改alien_invasion.py

1)在__init__()中创建用于存储子弹的编组:

self.bullets = pygame.sprite.Group()

2)调用Bullet方法

from bullet import Bullet

3)在while循环中更新子弹的位置:

self._update_bullets()

4)编写新方法_fire_bullet()

    def _fire_bullet(self):
		"""创建一颗子弹,并将其加入编组 bullets 中。"""
		if len(self.bullets) < self.settings.bullets_allowed:
			new_bullet = Bullet(self)
			self.bullets.add(new_bullet)

5)创建方法_update_bullets()

	def _update_bullets(self):
		"""更新子弹的位置并删除消失的子弹。"""
		# 更新子弹的位置
		self.bullets.update()

		# 删除消失的子弹。
		for bullet in self.bullets.copy():
			if bullet.rect.bottom <= 0:
				self.bullets.remove(bullet)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值