六、创建一个外星人类,命名为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外星人入侵完整代码和注释(七)