三、添加飞船图像
1、创建Ship类(负责管理飞船大部分行为) ship.py
方法__init__() :
2、初始化飞船并设置其初始位置(self.screen)
3、加载飞船图像并获取其外接矩形(self.image、self.rect、self.screen)
4、将每艘新飞船放在屏幕底部的中央(self.rect.centerx、self.rect.bottom)
5、方法blitme() :在指定位置绘制飞船(self.screen.blit(self.image,self.rect))
代码如下
import pygame
from pygame.sprite import Sprite
class Ship(Sprite):
def __init__(self,ai_settings,screen):
#初始化飞船,设置其初始化位置
#让Ship继承Sprite
super(Ship,self).__init__()
self.screen = screen
self.ai_settings = ai_settings
#加载飞船图像并获取其外接矩形
self.image = pygame.image.load('images/ship.bmp')
#加载图片后,使用get_rect()获取surface的属性rect
self.rect = self.image.get_rect()
#将屏幕的矩形储存
self.screen_rect = screen.get_rect()
#将每艘新飞船放在屏幕底部中央
self.rect.centerx = self.screen_rect.centerx
self.rect.bottom = self.screen_rect.bottom
#在飞船的属性center中存储小数值
self.center = float(self.rect.centerx)
#移动标志
self.moving_right = False
self.moving_left = False
def update(self):
#根据移动标志调整飞船的位置
#更新飞船的center值,而不是rect
if self.moving_right and self.rect.right < self.screen_rect.right:
self.center += self.ai_settings.ship_speed_factor
#self.rect.centerx += 1
if self.moving_left and self.rect.left >0:
self.center -= self.ai_settings.ship_speed_factor
#self.rect.centerx -= 1
#根据self.center更新rect对象
self.rect.centerx = self.center
def blitme(self):
#在指定位置绘制飞船
self.screen.blit(self.image,self.rect)
def center_ship(self):
#让飞船在屏幕上居中
self.center = self.screen_rect.centerx
点击链接 https://blog.csdn.net/Ljt101222/article/details/81253169 进入 Python外星人入侵完整代码和注释(四)