五、射擊,創建一個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外星人入侵完整代碼和註釋(六)