-
Notifications
You must be signed in to change notification settings - Fork 1
/
Classes.py
167 lines (141 loc) · 5.8 KB
/
Classes.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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
import pygame
from Candidatos import Candidatos
from configuracoes import *
from os import path
import random
from Animacoes import load_animacoes
#Classe do personagem controlado
class Player(pygame.sprite.Sprite):
def __init__(self,nome):
pygame.sprite.Sprite.__init__(self)
nois=Candidatos[nome]['imagem']
self.image=pygame.image.load(path.join(IMG_DIR,nois)).convert_alpha()
self.image_small=pygame.transform.scale(self.image,(WIDTH/4.8,HEIGHT/3.2))
self.rect=self.image_small.get_rect()
self.nome=nome
self.movimentos=Candidatos['{}'.format(nome)]['movimentos']
self.ataque=Candidatos['{}'.format(nome)]['ataque']
self.hp=Candidatos['{}'.format(nome)] ['hp'] #quanto de vida ele tem
self.rect.centerx= WIDTH/6
self.rect.centery= HEIGHT/3.2
#luta entre dois casas quando escolher um ataque
def atacar(self,i):
dano_ataque=Candidatos[self.nome]['movimentos'][i][1]
return dano_ataque
#so vai devolver dano, controle de vida está sendo feita no luta
class Button(pygame.sprite.Sprite):
def __init__(self, x, y, img,scale):
pygame.sprite.Sprite.__init__(self)
widht = WIDTH/2
height = HEIGHT/4
self.image = pygame.transform.scale(img, (int(widht*scale),int(height*scale)))
self.rect = self.image.get_rect()
self.rect.topleft = (x,y)
self.clicked = False
def screen (self,window):
window.blit(self.image, (self.rect.x, self.rect.y))
def click(self):
sair = False
#posição da seta
mouse = pygame.mouse.get_pos()
if self.rect.collidepoint(mouse):
if pygame.mouse.get_pressed()[0] == 1 and self.clicked == False:
self.clicked = True
sair = True
if pygame.mouse.get_pressed()[0] == 0:
self.clicked = False
return sair
#Classe do personagem que vai lutar contra
class Contra(pygame.sprite.Sprite):
def __init__(self,lista):
pygame.sprite.Sprite.__init__(self)
i=random.randint(0,4)
nome=lista[i]
nois=Candidatos[nome]['imagem']
self.image=pygame.image.load(path.join(IMG_DIR,nois)).convert_alpha()
self.image_small=pygame.transform.scale(self.image,(WIDTH/4.8,HEIGHT/3.2))
self.rect=self.image_small.get_rect()
self.nome=nome
self.movimentos=Candidatos['{}'.format(nome)]['movimentos']
self.ataque=Candidatos['{}'.format(nome)]['ataque']
self.hp=Candidatos['{}'.format(nome)] ['hp'] #quanto de vida ele tem
self.rect.centerx= WIDTH/1.2
self.rect.centery= HEIGHT/3.2
def ataque_contra(self):
i=random.randint(0,3)
dano_ataque=Candidatos[self.nome]['movimentos'][i][1]
return dano_ataque,i
#classe animação de dano no personágem
class Efeitodano(pygame.sprite.Sprite):
#construtor classe
def __init__(self,posicao):
pygame.sprite.Sprite.__init__(self)
animacoes=load_animacoes()
animacao_dano=animacoes[0]
self.animation_dano=animacao_dano
#para iniciar o processo de animação frame por frame
self.frame=0
self.image=self.animation_dano[self.frame]
self.rect=self.image.get_rect()
self.rect.center=posicao #posiciona ela na imaagem
#guarda o tick da primeira imagem
self.lastupdate=pygame.time.get_ticks()
#tempo para proxima imagem ser mostrada
self.frame_ticks = 70
def update(self):
#verifica o tempo
now=pygame.time.get_ticks()
#ve quantos ticks passaram desde o ultimo
elapsed_tickes=now-self.lastupdate
#caso já seja para mudar de imagem
if elapsed_tickes>self.frame_ticks:
self.lastupdate=now
# verifica se já chegou no final da animacao
if self.frame==len(self.animation_dano):
#se sim acabar com a explosão
self.kill()
else:
#caso contrário troca de imagem
center = self.rect.center
self.image = self.animation_dano[self.frame]
self.rect = self.image.get_rect()
self.rect.center = center
#avanca um quadro
self.frame+=1
#classe animação de vida no personágem
class Efeitovida(pygame.sprite.Sprite):
#construtor classe
def __init__(self,posicao):
pygame.sprite.Sprite.__init__(self)
animacoes=load_animacoes()
animacao_vida=animacoes[1]
self.animation_vida=animacao_vida
#para iniciar o processo de animação frame por frame
self.frame=0
self.image=self.animation_vida[self.frame]
self.rect=self.image.get_rect()
self.rect.center=posicao #posiciona ela na imaagem
#guarda o tick da primeira imagem
self.lastupdate=pygame.time.get_ticks()
#tempo para proxima imagem ser mostrada
self.frame_ticks = 70
def update(self):
#verifica o tempo
now=pygame.time.get_ticks()
#ve quantos ticks passaram desde o ultimo
elapsed_tickes=now-self.lastupdate
#caso já seja para mudar de imagem
if elapsed_tickes>self.frame_ticks:
self.lastupdate=now
#avanca um quadro
self.frame+=1
# verifica se já chegou no final da animacao
if self.frame==len(self.animation_vida):
#se sim acabar com a explosão
self.kill()
else:
#caso contrário troca de imagem
center = self.rect.center
self.image = self.animation_vida[self.frame]
self.rect = self.image.get_rect()
self.rect.center = center