-
Notifications
You must be signed in to change notification settings - Fork 0
/
Bola.py
executable file
·81 lines (65 loc) · 3.12 KB
/
Bola.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
import pygame
class Bola:
def __init__(self, vetor, campo):
self.vetor = vetor # lista com a velocidade x e y
self.imagem = pygame.image.load("bola.png")
self.imagem = pygame.transform.scale(self.imagem, [30, 30])
self.bola = self.imagem.get_rect()
self.vetory_foi_invertido = False
def set_posicao_inicial_centro(self, campo):
ponto_medio1 = int(campo.es_t.p1.x + (campo.es_b.p1.x - campo.es_t.p1.x) / 2), int(campo.es_t.p1.y + (campo.es_b.p1.y - campo.es_t.p1.y) / 2)
ponto_medio2 = int(campo.es_t.p2.x + (campo.es_b.p2.x - campo.es_t.p2.x) / 2), int(campo.es_t.p2.y + (campo.es_b.p2.y - campo.es_t.p2.y) / 2)
self.bola.center = int(ponto_medio1[0] + (ponto_medio2[0] - ponto_medio1[0]) / 2), int(ponto_medio1[1] + (ponto_medio2[1] - ponto_medio1[1]) / 2)
def set_posicao_inicial(self, x, y):
self.bola.center = x, y
def get_posicao(self):
return self.bola.center
def draw(self, display, campo, player1_rec, player2_rec, partida):
self.bola = self.bola.move(self.vetor)
if campo.es_l.p1.x > self.bola.left:
self.vetor[0] = -self.vetor[0]
elif campo.es_r.p1.x < self.bola.right:
self.vetor[0] = -self.vetor[0]
if campo.es_t.p1.y >= self.bola.top:
if campo.es_t.is_reflete():
if not self.vetory_foi_invertido:
self.vetor[1] = -self.vetor[1]
self.vetory_foi_invertido = True
else:
self.vetory_foi_invertido = False
else:
partida.ponto_marcado(1)
elif campo.es_b.p1.y <= self.bola.bottom:
if campo.es_b.is_reflete():
if not self.vetory_foi_invertido:
self.vetor[1] = -self.vetor[1]
self.vetory_foi_invertido = True
else:
self.vetory_foi_invertido = False
else:
partida.ponto_marcado(2)
display.blit(self.imagem, self.bola)
if self.bola.colliderect(player1_rec):
if not self.vetory_foi_invertido or self.vetory_foi_invertido:
self.vetor[1] = -self.vetor[1]
self.vetory_foi_invertido = True
if partida.player1.movendo_dir:
self.vetor[0] = self.vetor[0] + 1.5
elif partida.player1.movendo_esq:
self.vetor[0] = self.vetor[0] - 1.5
if self.vetor[0] > 10:
self.vetor[0] = 10
elif self.vetor[0] < -10:
self.vetor[0] = -10
else:
self.vetory_foi_invertido = False
if self.bola.colliderect(player2_rec):
if not self.vetory_foi_invertido:
self.vetor[1] = -self.vetor[1]
self.vetory_foi_invertido = True
if partida.player2.movendo_dir:
self.vetor[0] = self.vetor[0] + 1.5
elif partida.player2.movendo_esq:
self.vetor[0] = self.vetor[0] - 1.5
else:
self.vetory_foi_invertido = False