From b8720af54385cf576f497e7c28d6611f895a0258 Mon Sep 17 00:00:00 2001 From: 206530209 <3473505267@qq.com> Date: Thu, 17 Jun 2021 10:35:17 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=87=B3=20''?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game_stats.py | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 game_stats.py diff --git a/game_stats.py b/game_stats.py new file mode 100644 index 0000000..d517db7 --- /dev/null +++ b/game_stats.py @@ -0,0 +1,10 @@ +import pygame + + +class GameStats(): + """跟踪游戏的统计信息""" + + def __init__(self, ai_settings): + """初始化统计信息""" + self.ai_settings = ai_settings + self.reset_stats() \ No newline at end of file From 5a1e265e44b10acf2f1e8168d1025bd925c40191 Mon Sep 17 00:00:00 2001 From: 206530209 <3473505267@qq.com> Date: Thu, 17 Jun 2021 10:44:20 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=87=B3=20''?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game_stats.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/game_stats.py b/game_stats.py index d517db7..b8121e6 100644 --- a/game_stats.py +++ b/game_stats.py @@ -7,4 +7,16 @@ class GameStats(): def __init__(self, ai_settings): """初始化统计信息""" self.ai_settings = ai_settings - self.reset_stats() \ No newline at end of file + 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 + self.level = 1 + self.bosslevel = 3 \ No newline at end of file From baf7736afe45c81d4acb494af54bbaf737d0b75f Mon Sep 17 00:00:00 2001 From: 206530209 <3473505267@qq.com> Date: Thu, 17 Jun 2021 10:53:02 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=87=B3=20''?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scoreborad.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 scoreborad.py diff --git a/scoreborad.py b/scoreborad.py new file mode 100644 index 0000000..4b92937 --- /dev/null +++ b/scoreborad.py @@ -0,0 +1,12 @@ +import pygame.font +from pygame.sprite import Group +from ship import Ship + + +class Scoreboard(): + """显示得分信息的类""" + + def __init__(self, ai_settings, screen, stats): + """初始化显示得分涉及的属性""" + self.screen = screen + self.screen_rect = screen.get_rect() \ No newline at end of file From c529e5e1bcca58672820bb4d792f96d4be4c26e7 Mon Sep 17 00:00:00 2001 From: 206530209 <3473505267@qq.com> Date: Thu, 17 Jun 2021 10:58:46 +0800 Subject: [PATCH 04/10] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=87=B3=20''?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scoreborad.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/scoreborad.py b/scoreborad.py index 4b92937..fcbf3da 100644 --- a/scoreborad.py +++ b/scoreborad.py @@ -9,4 +9,16 @@ class Scoreboard(): def __init__(self, ai_settings, screen, stats): """初始化显示得分涉及的属性""" self.screen = screen - self.screen_rect = screen.get_rect() \ No newline at end of file + self.screen_rect = screen.get_rect() + self.ai_settings = ai_settings + self.stats = stats + + # 显示得分信息时使用的字体设置 + self.text_color = (30, 30, 30) + self.font = pygame.font.SysFont(None, 48) + + # 准备包含最高得分和当前得分的图像 + self.prep_score() + self.prep_high_score() + self.prep_level() + self.prep_ships() \ No newline at end of file From f5e1c178fe232d28cf3f2a57dbf2de6267075da4 Mon Sep 17 00:00:00 2001 From: 206530209 <3473505267@qq.com> Date: Thu, 17 Jun 2021 11:03:50 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=87=B3=20''?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scoreborad.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/scoreborad.py b/scoreborad.py index fcbf3da..35842e5 100644 --- a/scoreborad.py +++ b/scoreborad.py @@ -21,4 +21,16 @@ class Scoreboard(): self.prep_score() self.prep_high_score() self.prep_level() - self.prep_ships() \ No newline at end of file + self.prep_ships() + + def prep_score(self): + """将得分转换为一幅渲染的图像""" + rounded_score = int(round(self.stats.score, -1)) + score_str = "{:,}".format(rounded_score) + self.score_image = self.font.render(score_str, True, self.text_color, + self.ai_settings.bg_color) + + # 将得分放在屏幕右上角 + self.score_rect = self.score_image.get_rect() + self.score_rect.right = self.screen_rect.right - 20 + self.score_rect.top = 20 From 20be582bd41e4d33594b968208709c87dc47e7c8 Mon Sep 17 00:00:00 2001 From: 206530209 <3473505267@qq.com> Date: Thu, 17 Jun 2021 11:14:28 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=87=B3=20''?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scoreborad.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/scoreborad.py b/scoreborad.py index 35842e5..96bf979 100644 --- a/scoreborad.py +++ b/scoreborad.py @@ -34,3 +34,25 @@ class Scoreboard(): self.score_rect = self.score_image.get_rect() self.score_rect.right = self.screen_rect.right - 20 self.score_rect.top = 20 + + def show_score(self): + """在屏幕上显示飞船和得分""" + self.screen.blit(self.score_image, self.score_rect) + self.screen.blit(self.high_score_image, self.high_score_rect) + self.screen.blit(self.level_image, self.level_rect) + # 绘制飞船 + self.ships.draw(self.screen) + + 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 + + From 01e6e264d04ce0bce547d053f73a1cdf0cf3fecd Mon Sep 17 00:00:00 2001 From: 206530209 <3473505267@qq.com> Date: Thu, 17 Jun 2021 11:20:33 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=87=B3=20''?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scoreborad.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/scoreborad.py b/scoreborad.py index 96bf979..3b143f6 100644 --- a/scoreborad.py +++ b/scoreborad.py @@ -55,4 +55,22 @@ class Scoreboard(): self.high_score_rect.centerx = self.screen_rect.centerx self.high_score_rect.top = self.score_rect.top + def prep_level(self): + """将等级转换为渲染的图像""" + self.level_image = self.font.render(str(self.stats.level), True, + self.text_color, self.ai_settings.bg_color) + # 将等级放在得分下方 + self.level_rect = self.level_image.get_rect() + self.level_rect.right = self.score_rect.right + self.level_rect.top = self.score_rect.bottom + 10 + + def prep_ships(self): + """显示还余下多少艘飞船""" + self.ships = Group() + for ship_number in range(self.stats.ships_left): + ship = Ship(self.ai_settings, self.screen) + ship.rect.x = 10 + ship_number * ship.rect.width + ship.rect.y = 10 + self.ships.add(ship) + From fdd3860082fa755dea225316e5db86a4e16ecf19 Mon Sep 17 00:00:00 2001 From: 206530209 <3473505267@qq.com> Date: Sat, 19 Jun 2021 11:51:28 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game_stats.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game_stats.py b/game_stats.py index b8121e6..a525c9e 100644 --- a/game_stats.py +++ b/game_stats.py @@ -19,4 +19,4 @@ class GameStats(): self.ships_left = self.ai_settings.ship_limit self.score = 0 self.level = 1 - self.bosslevel = 3 \ No newline at end of file + self.bosslevel = 3 From 73e781820ad253bbd7f697db0b48b5a9a67f4913 Mon Sep 17 00:00:00 2001 From: 206530209 <3473505267@qq.com> Date: Sat, 19 Jun 2021 11:52:57 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E8=AE=B0=E5=88=86=E7=89=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scoreboard.py | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 scoreboard.py diff --git a/scoreboard.py b/scoreboard.py new file mode 100644 index 0000000..9bbfb19 --- /dev/null +++ b/scoreboard.py @@ -0,0 +1,74 @@ +import pygame.font +from pygame.sprite import Group +from ship import Ship + + +class Scoreboard(): + """显示得分信息的类""" + + def __init__(self, ai_settings, screen, stats): + """初始化显示得分涉及的属性""" + self.screen = screen + self.screen_rect = screen.get_rect() + self.ai_settings = ai_settings + self.stats = stats + + # 显示得分信息时使用的字体设置 + self.text_color = (30, 30, 30) + self.font = pygame.font.SysFont(None, 48) + + # 准备包含最高得分和当前得分的图像 + self.prep_score() + self.prep_high_score() + self.prep_level() + self.prep_ships() + + def prep_score(self): + """将得分转换为一幅渲染的图像""" + rounded_score = int(round(self.stats.score, -1)) + score_str = "{:,}".format(rounded_score) + self.score_image = self.font.render(score_str, True, self.text_color, + self.ai_settings.bg_color) + + # 将得分放在屏幕右上角 + self.score_rect = self.score_image.get_rect() + self.score_rect.right = self.screen_rect.right - 20 + self.score_rect.top = 20 + + def show_score(self): + """在屏幕上显示飞船和得分""" + self.screen.blit(self.score_image, self.score_rect) + self.screen.blit(self.high_score_image, self.high_score_rect) + self.screen.blit(self.level_image, self.level_rect) + # 绘制飞船 + self.ships.draw(self.screen) + + 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 + + def prep_level(self): + """将等级转换为渲染的图像""" + self.level_image = self.font.render(str(self.stats.level), True, + self.text_color, self.ai_settings.bg_color) + # 将等级放在得分下方 + self.level_rect = self.level_image.get_rect() + self.level_rect.right = self.score_rect.right + self.level_rect.top = self.score_rect.bottom + 10 + + def prep_ships(self): + """显示还余下多少艘飞船""" + self.ships = Group() + for ship_number in range(self.stats.ships_left): + ship = Ship(self.ai_settings, self.screen) + ship.rect.x = 10 + ship_number * ship.rect.width + ship.rect.y = 10 + self.ships.add(ship) From 3e53b29e6c2eecf80233e1d07e367193d35aca77 Mon Sep 17 00:00:00 2001 From: 206530219 <236845922@qq.com> Date: Sat, 19 Jun 2021 11:53:35 +0800 Subject: [PATCH 10/10] =?UTF-8?q?=E5=88=A0=E9=99=A4=20'scoreborad.py'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scoreborad.py | 76 --------------------------------------------------- 1 file changed, 76 deletions(-) delete mode 100644 scoreborad.py diff --git a/scoreborad.py b/scoreborad.py deleted file mode 100644 index 3b143f6..0000000 --- a/scoreborad.py +++ /dev/null @@ -1,76 +0,0 @@ -import pygame.font -from pygame.sprite import Group -from ship import Ship - - -class Scoreboard(): - """显示得分信息的类""" - - def __init__(self, ai_settings, screen, stats): - """初始化显示得分涉及的属性""" - self.screen = screen - self.screen_rect = screen.get_rect() - self.ai_settings = ai_settings - self.stats = stats - - # 显示得分信息时使用的字体设置 - self.text_color = (30, 30, 30) - self.font = pygame.font.SysFont(None, 48) - - # 准备包含最高得分和当前得分的图像 - self.prep_score() - self.prep_high_score() - self.prep_level() - self.prep_ships() - - def prep_score(self): - """将得分转换为一幅渲染的图像""" - rounded_score = int(round(self.stats.score, -1)) - score_str = "{:,}".format(rounded_score) - self.score_image = self.font.render(score_str, True, self.text_color, - self.ai_settings.bg_color) - - # 将得分放在屏幕右上角 - self.score_rect = self.score_image.get_rect() - self.score_rect.right = self.screen_rect.right - 20 - self.score_rect.top = 20 - - def show_score(self): - """在屏幕上显示飞船和得分""" - self.screen.blit(self.score_image, self.score_rect) - self.screen.blit(self.high_score_image, self.high_score_rect) - self.screen.blit(self.level_image, self.level_rect) - # 绘制飞船 - self.ships.draw(self.screen) - - 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 - - def prep_level(self): - """将等级转换为渲染的图像""" - self.level_image = self.font.render(str(self.stats.level), True, - self.text_color, self.ai_settings.bg_color) - # 将等级放在得分下方 - self.level_rect = self.level_image.get_rect() - self.level_rect.right = self.score_rect.right - self.level_rect.top = self.score_rect.bottom + 10 - - def prep_ships(self): - """显示还余下多少艘飞船""" - self.ships = Group() - for ship_number in range(self.stats.ships_left): - ship = Ship(self.ai_settings, self.screen) - ship.rect.x = 10 + ship_number * ship.rect.width - ship.rect.y = 10 - self.ships.add(ship) - -