五、射击,创建一个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外星人入侵完整代码和注释(六)