zlp/ship

48 lines
2.4 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import pygame
from pygame.sprite import Sprite #导入pygame模块下sprite子模块中的Sprite类
class Ship(Sprite):
def __init__(self, ai_settings, screen):
"""初始化飞船并设置其初始位置"""
super(Ship, self).__init__() #兼容python2.7Ship类继承Sprite类属性
self.screen = screen
self.ai_settings = ai_settings
# 加载飞船图形并获取其外接矩形
self.image = pygame.image.load('images/ship.bmp') #加载图片,创建图片对象
self.rect = self.image.get_rect() #调用get_rect()方法获取image的属性rect
self.screen_rect = screen.get_rect() #调用get_rect()方法将表示屏幕的矩形存储在self.screen_rect中
# 将每艘新飞船放在屏幕底部中央
self.rect.centerx = self.screen_rect.centerx #让飞船矩形centerx属性中央x坐标等于屏幕矩形centerx属性x方向上居中
self.rect.bottom = self.screen_rect.bottom #让飞船矩形bottom属性等于屏幕矩形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: #当向右移动且飞船矩形right属性小于屏幕矩形right属性时
self.center += self.ai_settings.ship_speed_factor
if self.moving_left and self.rect.left > 0: #当向左移动且飞船矩形left属性大于0时
self.center -= self.ai_settings.ship_speed_factor
# 根据self.center更新rect对象
self.rect.centerx = self.center #如果是self.rect.centery = self.center则飞船会上下移动而不是左右移动
def blitme(self):
"""在指定位置绘制飞船"""
self.screen.blit(self.image, self.rect) #调用blit()方法将图片对象添加到窗口对象中
def center_ship(self):
"""让飞船在屏幕上居中"""
self.center = self.screen_rect.centerx #让飞船矩形center属性等于屏幕矩形centerx属性