六、創建一個外星人類,命名爲alien.py
1.創建第一個外星人
(1) 創建Alien類
alien.py :創建外星人類
方法__init__() :初始化外星人並設置其起始位置 ,加載外星人圖像,並設置rect屬性 ,每個外星人最初都在屏幕左上角附近(rect.x,rect.y) ,存儲外星人的準確位置(self.x)
方法blitme() :在指定位置繪製外星人(screen.blit())
(2)創建Alien實例 :在主程序裏創建一個Alien實例
(3)讓外星人出現在屏幕上:調用方法blitme()
2.創建一羣外星人
(1)確定一行可容納多少外星人
(2)創建多行外星人
(3)創建外星人羣
(4)方法creat_fleet() :創建外星人並將其放在當前行
(5)添加行:方法get_number_rows() :計算屏幕可容納多少行外星人。
3.讓外星人羣移動
(1)向右移動外星人
(2)創建表示外星人移動方向的標誌:添加fleet_drop_speed屬性(外星人下移速度)。
(3)方法check_edges() :檢查外星人是否撞到了屏幕左右邊緣。
(4)方法check_fleet_direction() :向下移動外星人羣並改變移動方向
(5)方法update_aliens() :更新外星人位置
代碼如下
import pygame
from pygame.sprite import Sprite
class Alien(Sprite):
#表示單個外星人的類
def __init__(self,ai_settings,screen):
#初始化外星人並設置其起始位置
super(Alien,self).__init__()
self.screen = screen
self.ai_settings = ai_settings
#加載外星人圖像,並設置其rect屬性
self.image = pygame.image.load('images/alien.bmp')
self.rect = self.image.get_rect()
#每個外星人最初都在屏幕左上角附近
self.rect.x = self.rect.width
self.rect.y = self.rect.height
#存儲外星人的準確位置
self.x = float(self.rect.x)
def check_edges(self):
#如果外星人位於屏幕邊緣,就返回Ture
screen_rect = self.screen.get_rect()
if self.rect.right >= screen_rect.right:
return True
elif self.rect.left <= 0:
return True
def update(self):
#向左或向右移動外星人
self.x += (self.ai_settings.alien_speed_factor * self.ai_settings.fleet_direction)
self.rect.x =self.x
def blitme(self):
#在指定位置繪製外星人
self.screen.blit(self.image,self.rect)
點擊鏈接 https://blog.csdn.net/Ljt101222/article/details/81253636 進入 Python外星人入侵完整代碼和註釋(七)