如何解决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)时,才应重置得分,而不是第一次或第二次被击中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。