下面给出核心代码
def update(self, ai_settings):
"""根据移动标志调整飞船的位置"""
if self.moving_right and self.rect.right < self.screen_rect.right:
self.center_tx += self.ai_settings.ship_speed_factor
if self.moving_left and self.rect.left > 0:
self.center_tx -= self.ai_settings.ship_speed_factor
if self.moving_up and self.rect.top > 0:
self.center_ty -= self.ai_settings.ship_speed_factor
if self.moving_down and self.rect.centery + float(ai_settings.ship_size_height) / 2 < self.screen_rect.bottom:
self.center_ty += self.ai_settings.ship_speed_factor
# 根据self.center更新rect对象
self.rect.centerx = self.center_tx
self.rect.centery = self.center_ty
备注:
由于centery表示的是y的中心坐标,所以向下移动时需要加上1/2的飞船的高
get_rect的属性:
x,y
top, left, bottom, right
topleft, bottomleft, topright, bottomright
midtop, midleft, midbottom, midright
center, centerx, centery
size, width, height
w,h