-
Notifications
You must be signed in to change notification settings - Fork 0
/
versus_screen.py
143 lines (120 loc) · 4.77 KB
/
versus_screen.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
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
from main import pygame, SCREEN
from fonts import FONT_MASHEEN_30, FONT_MASHEEN_BOLD_40
from fonts import render
class VersusScreen:
def __init__(self, players: list):
self.load_bg_graphic()
self.align_sparks()
self.players = players
self.load_player_graphics()
self.sparks_position = [-2327, -503]
self.sparks_move_speed = 6
self.screen_counter = 0
self.screen_done = False
def check_if_screen_done(self):
self.screen_counter += 0.1
if self.screen_counter > 35:
self.screen_done = True
def load_bg_graphic(self):
self.bg = pygame.image.load("graphics/versus_screen/vsScreen_blackBg.png").convert_alpha()
def load_player_graphics(self):
self.player_graphics = []
for player in self.players:
self.player_graphics.append(pygame.image.load(f"graphics/player/{player}/vs_screen/{player}_vs_screen.png"))
def align_sparks(self):
self.aligned_sparks = []
for spark_row in range(10):
for i in range(7):
self.aligned_sparks.append(Spark(i, "top-left", spark_row))
for j in range(7):
self.aligned_sparks.append(Spark(j, "bottom-right", spark_row))
def move_sparks(self):
if self.sparks_position[0] >= 193 or self.sparks_position[1] <= -3023:
self.sparks_position[0] = -3161
self.sparks_position[1] = 327
else:
self.sparks_position[0] += self.sparks_move_speed
self.sparks_position[1] -= self.sparks_move_speed
def draw(self):
# animated bg
SCREEN.blit(self.bg, (0, 0))
if len(self.aligned_sparks) <= 0:
self.align_sparks()
for spark in self.aligned_sparks:
if spark.pos[0] > 670 and spark.pos[1] < -100:
self.aligned_sparks.remove(spark)
else: spark.draw()
# player graphics
for i in range(4):
if i == 0:
if self.players[i] == "yos":
x = 0
else:
x = -40
elif i == 1:
if self.players[i] == "yos":
x = 200
else:
x = 160
elif i == 2:
if self.players[i] == "yos":
x = 400
else:
x = 360
elif i == 3:
if self.players[i] == "yos":
x = 600
else:
x = 560
SCREEN.blit(self.player_graphics[i], (x, 0))
# player text
Y = 450
x_player_name = [110, 310, 510, 710]
x_counter = 0
for player in self.players:
if player == "mar":
player = "Mario"
elif player == "lui":
player = "Luigi"
elif player == "pea":
player = "Peach"
elif player == "yos":
player = "Yoshi"
player_text_surface = render(player, FONT_MASHEEN_30, (240, 240, 240), (48, 48, 48), 2)
player_text_surface_rect = player_text_surface.get_rect(center=(x_player_name[x_counter], Y))
x_counter += 1
SCREEN.blit(player_text_surface, player_text_surface_rect)
# vs text
vs_text_surface = render("VS", FONT_MASHEEN_BOLD_40, (223, 0, 0), (48, 48, 48), 2)
x_vs_text = [210, 410, 610]
for x in x_vs_text:
vs_text_surface_rect = vs_text_surface.get_rect(center=(x, Y))
SCREEN.blit(vs_text_surface, vs_text_surface_rect)
def update(self):
self.draw()
self.check_if_screen_done()
class Spark(pygame.sprite.Sprite):
def __init__(self, no_in_row, direct, row_no):
super().__init__()
self.no_in_row = no_in_row
self.direct = direct
self.row_no = row_no
self.DISTANCE = 60 # distance in px between the single sparks of a spark-row
self.move_speed = 8
self.find_pos()
self.load_graphic()
def find_pos(self):
self.x = ((0 if self.row_no% 2 == 0 else -30) - (self.row_no * 95))
self.y = ((600 if self.row_no % 2 == 0 else 570) + (self.row_no * 95))
if self.direct == "top-left":
self.pos = [(self.x - (self.no_in_row * self.DISTANCE)), (self.y - (self.no_in_row * self.DISTANCE))]
else:
self.pos = [(self.x + (self.no_in_row * self.DISTANCE)), (self.y + (self.no_in_row * self.DISTANCE))]
def load_graphic(self):
self.spark = pygame.image.load("graphics/versus_screen/vsScreen_spark.png").convert_alpha()
def move(self):
self.pos[0] += self.move_speed
self.pos[1] -= self.move_speed
def draw(self):
SCREEN.blit(self.spark, self.pos)
self.move()