Python外星人入侵完整代码和注释(五)

五、射击,创建一个bullet.py文件

1、添加子弹设置

settings.py :__init__()方法储存子弹设置,包括bullet_width,bullet_height,bullet_color,bullet_speed_factor

2、创建Bullet类

它是一个对飞船发射的子弹进行管理的类,继承了我们从模块pygame.sprite中导入的sprite类,通过使用精灵将游戏中相关的元素编组,进而同时操作编组中的所有元素。

bullet.py:__init__()方法: 传递ai_settings,screen,ship实例, 调用super继承Sprite 创建子弹属性rect 将子弹的centerx设置为飞船的centerx, 表示子弹的rect的top属性设置为飞船的rect的top属性,让子弹看起来像是从飞船中射出的 ,将子弹的y坐标存储为小数值,以便能够微调子弹的速度 ,将子弹的颜色和速度设置粉笔存储在self.color和self.speed_factor中。

方法update(): 向上移动子弹 更新表示子弹位置的小数值 更新表示子弹的rect的位置。

方法draw_bullet(): 在屏幕上绘制子弹pygame.draw.rect()。

代码如下

import pygame
from pygame.sprite import Sprite
class Bullet(Sprite):
    #一个对飞船发射子弹管理的类
    def __init__(self,ai_settings,screen,ship):
        #在飞船所在处的位置创建一个子弹对象
        super(Bullet,self).__init__()
        self.screen = screen

        #在(0,0)处创建一个表示子弹的矩形,再设置正确的位置
        self.rect = pygame.Rect(0,0,ai_settings.bullet_width,ai_settings.bullet_height)
        self.rect.centerx = ship.rect.centerx
        self.rect.top = ship.rect.top
        #存储用小数表示的子弹位置
        self.y = float(self.rect.y)
        self.color = ai_settings.bullet_color
        self.speed_factor = ai_settings.bullet_speed_factor
    def update(self):
        #向上移动子弹
        #更新表示子弹位置的小数值
        self.y -= self.speed_factor
        #更新表示子弹的rect的位置
        self.rect.y = self.y
    def draw_bullet(self):
        #在屏幕上绘制子弹
        pygame.draw.rect(self.screen,self.color,self.rect)


 点击链接 https://blog.csdn.net/Ljt101222/article/details/81253503 进入 Python外星人入侵完整代码和注释(六)

猜你喜欢

转载自blog.csdn.net/Ljt101222/article/details/81253329