Слияние кода завершено, страница обновится автоматически
import pygame
from pygame.sprite import Sprite
class Ship(Sprite):
def __init__(self, ai_settings, screen):
"""初始化飞船并设其初始位置"""
super().__init__()
self.screen = screen
self.ai_settings= ai_settings
# 加载飞船图像并获取其外接矩形
self.image = pygame.image.load("images/ship.png")
self.rect = self.image.get_rect()
# 屏幕的外接矩形
self.screen_rect = self.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 blitme(self):
"""在指定位置绘制飞船"""
self.screen.blit(self.image, self.rect)
def update(self):
"""根据移动标志调整飞船的位置"""
if self.moving_right and self.rect.right < self.screen_rect.right:
self.center += self.ai_settings.ship_speed_factor
# 如果使用一个elif代码块来处理向左移动的情况,右箭头键将始终处于优先地位。
if self.moving_left and self.rect.left > 0:
self.center -= self.ai_settings.ship_speed_factor
# 根据self.center更新rect对象,这里为啥要多此一举
# 是因为rect.centerx是整型,而不是浮点型,因为需要一个变量来接收
self.rect.centerx = self.center
def center_ship(self):
"""让飞船在屏幕上居中"""
self.center = self.screen_rect.centerx
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )