PythonCrashCourse外星人入侵高分

问题描述

到目前为止,我项目的最高分正在发挥作用,但是,当我的飞船被击中后,当前得分不会重置。例如,如果我得到4000分,而我的飞船被击中,则在下一轮中,高分和当前得分将显示为4000分。

game_stats.py:

    class GameStats():
         def __init__(self,ai_settings):
              self.ai_settings = ai_settings
              self.reset_stats()
              self.game_active = False
              self.high_score = 0

         def reset_stats(self):
              self.ships_left = self.ai_settings.ship_limit
              self.score = 0

scoreboard.py:

    def show_score(self):
         self.screen.blit(self.score_image,self.score_rect)
         self.screen.blit(self.high_score_image,self.high_score_rect)
    def prep_high_score(self):
         high_score = int(round(self.stats.high_score,-1))
         high_score_str = "{:,}".format(high_score)
         self.high_score_image = self.font.render(high_score_str,True,self.text_color,self.ai_settings.bg_color)
         self.high_score_rect = self.high_score_image.get_rect()
         self.high_score_rect.centerx = self.screen_rect.centerx
         self.high_score_rect.top = self.score_rect.top

game_functions.py:

    def check_high_score(stats,sb):
         if stats.score > stats.high_score:
             stats.high_score = stats.score
             sb.prep_high_score()
    def check_play_button(ai_settings,screen,stats,play_button,ship,aliens,bullets,mouse_x,mouse_y):
         button_clicked = play_button.rect.collidepoint(mouse_x,mouse_y)
         if button_clicked and not stats.game_active:
              ai_settings.initialize_dynamic_settings()
              pygame.mouse.set_visible(False)
              stats.reset_stats()
              stats.game_active = True
              aliens.empty()
              bullets.empty()
              create_fleet(ai_settings,aliens)
              ship.center_ship()

解决方法

这是“ Python速成班”书中的一个项目,对吗?如果是这样,您的代码就可以了,只有在您的飞船被击中3次(ships_limit)时,才应重置得分,而不是第一次或第二次被击中。