Repository navigation
Expand file tree
/
Copy pathmmorpg.py
More file actions
145 lines (98 loc) · 4.25 KB
/
Copy pathmmorpg.py
File metadata and controls
145 lines (98 loc) · 4.25 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
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
"""
Classe personnage:
Atrtibut:
-pseudo
-niveau
-nombre de PV
-initiative
Méthodes
"""
class Personnage:
def __init__(self, pseudo:str, niveau:int=1): #on passe deux arguments pour faire deux constructeurs suivant le cas
self.__pseudo=pseudo
self.__niveau=niveau
self.__nombrePV=niveau
self.__initiative=niveau
def get_pseudo(self):
return self.__pseudo
#@property
def get_pv(self):
return self.__nombrePV
#@set_pv.setter
def set_pv(self,nouveaux_PV):
self.__nombrePV=nouveaux_PV
def get_ini(self):
return self.__initiative
def set_ini(self, nouveau_ini):
self.__initiative = nouveau_ini
def set_niveau(self, nouveau_niveau):
self.__niveau = nouveau_niveau
#@get_niveau.getter
def get_niveau(self):
return self.__niveau
def attaque(self, cible:'Personnage') -> None:
if cible.get_ini() > self.__initiative:
print("1")
self.set_pv(self.__nombrePV - cible.degats())
if self.__nombrePV > 0:
cible.set_pv(cible.get_pv() - self.degats())
elif cible.get_ini() < self.__initiative :
print("2")
cible.set_pv(cible.get_pv() - self.degats())
if cible.get_pv() > 0:
self.__nombrePV -= cible.degats()
elif cible.get_ini() == self.__initiative :
print("3")
print(f"{cible.get_ini()} & {self.get_ini()} ")
self.set_pv(self.__nombrePV - cible.degats())
cible.set_pv(cible.get_pv() - self.degats())
print(f"{self.get_pv()}&{cible.get_pv()}")
def combat(self, cible:'Personnage') -> None :
while cible.get_pv() > 0 and self.__nombrePV > 0 :
self.attaque(cible)
print(f"{self.__pseudo} a maintenant {self.__nombrePV} PV, La cible a maintenant {cible.get_pv()} PV")
def healing(self):
self.__nombrePV += self.__niveau - self.__nombrePV
def degats(self):
return self.__niveau
class Guerrier(Personnage):
def __init__(self, pseudo,niveau): #on passe deux arguments pour faire deux constructeurs suivant le cas
super().__init__(pseudo,niveau) #Ici on spécifie que ces valeurs là sont à garder tel quel dans la classe personnage
self.set_pv(niveau * 8 + 4) #ici on modifie certains attributs de la classe héritée Personnage donc on les redéclares en quelques sortes
self.set_ini(niveau * 4 +6)
print(f"L'initiative du guerrier est : {self.get_ini()}")
print(f'Nombre de PV du Guerrier au départ {self.get_pv()}')
print(f'Dégats de base du Guerrier au départ {self.get_niveau() * 2}')
def degats(self):
return self.get_niveau() * 2
class Mage(Personnage):
def __init__(self, pseudo, niveau): # on passe deux arguments pour faire deux constructeurs suivant le cas
super().__init__(pseudo, niveau) # Ici on spécifie que ces valeurs là sont à garder tel quel dans la classe personnage
self.set_pv(niveau * 5 + 10)# ici on modifie certains attributs de la classe héritée Personnage, il faut absoluement utiliser les getter et les setters car sinon cela crée un duplicata et le code ne saura pas lequel utiliser
self.set_ini(niveau * 6 + 4)
print(f"L'initiative du mage est : {self.get_ini()}")
print(f'Nombre de PV du Mage au départ {self.get_pv()}')
print(f'Dégats de base du Mage au départ {self.get_niveau() + 3}')
self.__mana = niveau * 5
def degats(self):
if self.__mana > 0:
self.__mana -= 4
return self.get_niveau() + 3
return self.get_niveau()
class Joueur:
def __init__(self, nom: str, nbmax: int):
self.__nom = nom
self.__nombremax = nbmax
self.__inventaire = []
def ajout(self, perso: 'Personnage'):
if len(self.__inventaire) < self.__nombremax:
self.__inventaire.append(perso)
print(f"{perso.get_pseudo()} a bien été ajouté à l'inventaire de {self.__nom}")
jaajman = Mage('jaaj', 5)
jeejman = Guerrier('jeej', 5)
joueurtest = Joueur('jouj', 2)
print(vars(jaajman))
print(vars(jeejman))
joueurtest.ajout(jeejman)
print(vars(joueurtest))
#jaajman.combat(jeejman)