-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathScoreBoard.py
More file actions
88 lines (76 loc) · 3.23 KB
/
ScoreBoard.py
File metadata and controls
88 lines (76 loc) · 3.23 KB
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import pygame
from Display import *
from StateHandler import *
from GameState import *
from Mediator import *
class ScoreBoard:
def __init__(self, reset_word_generator):
self.font = pygame.font.Font("Resources/Quinquefive-Ea6d4.ttf", 32)
self.score = 0
self.words_per_minute = []
self.update_timer = 0
self.seconds = 0
self.words_per_minute_scalar = 10
self.reset_word_generator = reset_word_generator
self.words_per_minute_title = self.font.render(
'WPM:', False, (0, 0, 0))
self.words_per_minute_render = self.font.render(
'0', False, (0, 0, 0))
self.score_render = self.font.render(str(self.score), False, (0, 0, 0))
self.score_title = self.font.render('Score:', False, (0, 0, 0))
self.health = 1
self.health_green_img = pygame.Surface((
Display.WINDOW_SIZE[0], 6))
self.health_green_img.fill((0, 255, 0))
def increment_score(self):
self.score += 1
StateHandler.SCORE += 1
self.score_render = self.font.render(str(self.score), False, (0, 0, 0))
self.words_per_minute.append({'seconds': self.seconds})
def decrease_score(self):
if self.score > 0:
StateHandler.SCORE -= 1
self.score -= 1
self.score_render = self.font.render(str(self.score), False, (0, 0, 0))
def decrease_health(self):
self.health -= 0.2
color = ((0, 255, 0))
if self.health < 0.4:
color = (255, 255, 0)
if self.health < 0.2:
color = (255, 0, 0)
if self.health <= 0:
self.health = 1
self.score = 0
self.words_per_minute.clear()
self.reset_word_generator()
StateHandler.STATE = GameState.STATE_MENU
Mediator.clear_words()
self.health_green_img = pygame.Surface((
Display.WINDOW_SIZE[0]*self.health, 6))
self.health_green_img.fill((0, 255, 0))
return
self.health_green_img = pygame.Surface((
Display.WINDOW_SIZE[0]*self.health, 6))
self.health_green_img.fill(color)
def draw(self):
Display.SCREEN.blit(self.words_per_minute_title,
(Display.WINDOW_SIZE[0]/44, Display.WINDOW_SIZE[1]/6))
Display.SCREEN.blit(self.words_per_minute_render,
(Display.WINDOW_SIZE[0]/6, Display.WINDOW_SIZE[1]/6))
Display.SCREEN.blit(
self.score_render, (Display.WINDOW_SIZE[0]*0.92, Display.WINDOW_SIZE[1]/6))
Display.SCREEN.blit(
self.score_title, (Display.WINDOW_SIZE[0]*0.70, Display.WINDOW_SIZE[1]/6))
Display.SCREEN.blit(self.health_green_img,
(0, Display.WINDOW_SIZE[1]/6.5))
def loop(self):
self.update_timer += 1
if self.update_timer > 60:
self.update_timer = 0
self.seconds += 1
for sec in self.words_per_minute:
if sec['seconds'] < self.seconds - self.words_per_minute_scalar:
self.words_per_minute.remove(sec)
self.words_per_minute_render = self.font.render(
str(len(self.words_per_minute * 6)), False, (0, 0, 0))