屏幕的绘制顺序很重要。
在***game_functions.py***文件中的***def update_screen***函数中
若你将“Play”按键的绘制代码放到了飞船和子弹的前面,则不会显示“play”按钮,因为被后面的屏幕覆盖了。
def update_screen(ai_setting, screen, stats, ship, aliens, bullets, play_button):
"""更新屏幕的图像,切换到屏幕"""
# 如果游戏处于非活动状态,就绘制play按钮
# 注意这个顺序很重要,要在绘制子弹飞船的后面,不然就后面的屏幕覆盖了
if not stats.game_active:
play_button.draw_button()
# 每次循环更新屏幕
screen.fill(ai_setting.bg_color)
# 在飞船和外星人后面重绘制所有子弹
for bullet in bullets.sprites():
bullet.draw_bullet() # 子弹绘制
bullet.update_bullet() # 子弹移动
ship.blitme()
aliens.draw(screen)
# 让最近的图像可见
pygame.display.flip(
运行结果:
正确的代码应该将按钮的绘制放到后面:
def update_screen(ai_setting, screen, stats, ship, aliens, bullets, play_button):
"""更新屏幕的图像,切换到屏幕"""
# 每次循环更新屏幕
screen.fill(ai_setting.bg_color)
# 在飞船和外星人后面重绘制所有子弹
for bullet in bullets.sprites():
bullet.draw_bullet() # 子弹绘制
bullet.update_bullet() # 子弹移动
ship.blitme()
aliens.draw(screen)
# 如果游戏处于非活动状态,就绘制play按钮
# 注意这个顺序很重要,要在绘制子弹飞船的后面,不然就后面的屏幕覆盖了
if not stats.game_active:
play_button.draw_button()
# 让最近的图像可见
pygame.display.flip()
运行结果: