问题描述:
在实现pygame 的外星人入侵小游戏的时候,点击攻击按钮发现子弹并未出现。灵感来源:在查阅问题时,发现有一位网友遇到的问题是绘制的矩形没有显示出来,文章给出的答案是被主屏幕填充时候给覆盖了。
https://www.cnpython.com/qa/485551
def draw_bullet(self):
"""在屏幕上绘制子弹"""
pygame.draw.rect(self.screen, self.color, self.rect)
原因分析:在更新主屏幕(填充screen)的时候,将原本应该显示的子弹给覆盖了
解决方案:
应将填充screen放在更新子弹和飞船的前面进行
如:
def update_screen(ai_settings, screen, ship, bullets):
""""更新屏幕上的图像,并切换到新屏幕"""
# 每次循环都重新绘制屏幕
screen.fill(ai_settings.bg_color)
for bullet in bullets.sprites():
bullet.draw_bullet()
ship.blitme()
# 让最近绘制的屏幕可见
pygame.display.flip()