-
Notifications
You must be signed in to change notification settings - Fork 0
/
scoreboard.py
63 lines (56 loc) · 2.54 KB
/
scoreboard.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import pygame.font
from pygame.sprite import Group
from ship import Ship
class Scoreboard():
def __init__(self, all_settings, screen, stats):
self.screen = screen
self.all_settings = all_settings
self.stats = stats
self.screen_rect = self.screen.get_rect()
self.text_color = (30, 30, 30)
self.font = pygame.font.SysFont('华文仿宋', 20)
# 准备初始得分图像
self.prep_score()
self.prep_hightest()
self.prep_level()
self.prep_ships()
def prep_score(self):
rounded_score = round(self.stats.score, -1) # 圆整到十的整数倍
score_str = "分数:" + "{:,}".format(rounded_score) # 添加千位分隔符
self.score_image = self.font.render(score_str, True, self.text_color, self.all_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 prep_hightest(self):
rounded_hightest_score = round(self.stats.hightest_score, -1) # 圆整到十的整数倍
hightest_score_str = "最高分:" + "{:,}".format(rounded_hightest_score) # 添加千位分隔符
self.hightest_score_image = self.font.render(hightest_score_str, True, self.text_color,
self.all_settings.bg_color)
self.hightest_score_rect = self.hightest_score_image.get_rect()
self.hightest_score_rect.right = self.score_rect.right
self.hightest_score_rect.top = self.score_rect.bottom
def prep_level(self):
level_str = "等级:" + "{:,}".format(self.stats.level)
self.level_image = self.font.render(level_str, True, self.text_color, self.all_settings.bg_color)
self.level_rect = self.level_image.get_rect()
# self.level_rect.centerx = self.hightest_score_rect.centerx
self.level_rect.right = self.hightest_score_rect.right
self.level_rect.top = self.hightest_score_rect.bottom
def show_score(self):
self.screen.blit(self.score_image, self.score_rect)
self.screen.blit(self.hightest_score_image, self.hightest_score_rect)
self.screen.blit(self.level_image, self.level_rect)
# for ships in self.ships_left.sprites():
# ships.blitme()
self.ships_left.draw(self.screen)
def prep_ships(self):
self.ships_left = Group()
for number_ships in range(self.stats.ship_left):
ship_temp = Ship(self.screen, self.all_settings)
ship_temp.image = pygame.transform.smoothscale(ship_temp.image,
(ship_temp.rect.width // 4, ship_temp.rect.height // 4))
ship_temp.rect=ship_temp.image.get_rect()
ship_temp.rect.x = 10 + ship_temp.rect.width * number_ships
ship_temp.rect.y = 10
self.ships_left.add(ship_temp)
number_ships -= 1