如何修改Pygame《外星人入侵》中飞船的初始绘制位置?
修改《外星人入侵》飞船初始位置的方法
1. 调整启动时的初始位置
在Ship类的__init__方法中,找到默认设置底部中央的代码行:
#Start each new ship at the bottom center of the screen. self.rect.midbottom = self.screen_rect.midbottom
将其替换为你需要的自定义位置逻辑:
- 若要设置到屏幕左上角:
self.rect.topleft = self.screen_rect.topleft - 若要设置到屏幕正中央:
self.rect.center = self.screen_rect.center - 若要设置固定坐标(比如x=200,y=300):
self.rect.x = 200 self.rect.y = 300
修改后记得同步更新self.x和self.y的浮点值,保证后续移动逻辑正常:
self.x = float(self.rect.x) self.y = float(self.rect.y)
2. 同步修改飞船重置位置(可选)
如果希望飞船被摧毁后重置的位置也使用自定义位置,需要修改center_ship方法:
def center_ship(self): """重置飞船位置""" # 替换默认的底部中央设置 # self.rect.midbottom = self.screen_rect.midbottom # 改为自定义位置,例如屏幕中央 self.rect.center = self.screen_rect.center self.x = float(self.rect.x) self.y = float(self.rect.y)
修改后的__init__方法示例片段
def __init__(self,ai_game): """Initialize the ship and set its starting position.""" super().__init__() self.screen = ai_game.screen self.settings = ai_game.settings self.screen_rect = ai_game.screen.get_rect() #Load the ship image and get its rect. self.image = pygame.image.load('images/ship.png') self.rect = self.image.get_rect() # 设置自定义初始位置为屏幕中央 self.rect.center = self.screen_rect.center #Store a decimal value for the ship's horizontal position. self.x = float(self.rect.x) self.y = float(self.rect.y) #Movement flags self.moving_right = False self.moving_left = False self.moving_up = False self.moving_down = False
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

