-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
118 lines (102 loc) · 5.92 KB
/
script.js
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
class Personnage {
// Le constructeur initialise les attributs du personnage lors de sa création
constructor(nom, pointsDeVie, probabiliteAttaque, probabiliteContreAttaque, degats) {
this.nom = nom; // Le nom du personnage
this.pointsDeVie = pointsDeVie; // Les points de vie du personnage
this.probabiliteAttaque = probabiliteAttaque; // Probabilité d'attaquer avec succès
this.probabiliteContreAttaque = probabiliteContreAttaque; // Probabilité de contre-attaque
this.degats = degats; // Les dégâts infligés par le personnage
}
// Méthode pour attaquer un autre personnage
attaquer(cible) {
// Vérifie si l'attaque réussit en comparant à la probabilité d'attaque
if (Math.random() < this.probabiliteAttaque) {
// Affiche un message d'attaque réussie
console.log(`${this.nom} parvient à toucher ${cible.nom} et lui fait ${this.degats} dégâts.`);
// Appelle la méthode encaisserDegats de la cible pour lui infliger des dégâts
cible.encaisserDegats(this.degats);
} else {
// Affiche un message d'échec d'attaque
console.log(`${this.nom} ne parvient pas à toucher ${cible.nom}.`);
}
}
// Méthode pour encaisser des dégâts infligés par un attaquant
encaisserDegats(degats) {
// Vérifie si le personnage réussit à contre-attaquer en comparant à la probabilité de contre-attaque
if (Math.random() < this.probabiliteContreAttaque) {
// Affiche un message de contre-attaque réussie
console.log(`${this.nom} contre-attaque et encaisse ${degats + 5} dégâts.`);
// Réduit les points de vie du personnage en fonction des dégâts reçus
this.pointsDeVie -= degats + 5; //bonus de 5 de dégats lors que quelqu'un réussi une contre-attaque
} else {
// Affiche un message d'encaissement de dégâts
console.log(`${this.nom} encaisse ${degats} dégâts.`);
this.pointsDeVie -= degats;
}
// Vérifie si le personnage est vaincu (points de vie <= 0)
if (this.pointsDeVie <= 0) {
// Affiche un message indiquant que le personnage est vaincu
console.log(`${this.nom} est mort.`);
}
}
}
let ListePrenoms = ["Jack", "Julia", "Kevin", "Hope", "Steven", "Dawn", "Bob", "Olivia"]; //liste des prénoms possible
let LesMourrus = []; //liste des survivants décédés
function getRandomName() {
const PrenomNum = Math.floor(Math.random() * ListePrenoms.length);
const prenom = ListePrenoms[PrenomNum];
ListePrenoms.splice(PrenomNum, 1);
return prenom;
} // Fonction qui tirera un prénom aléatoirement dans la liste et l'attribura à un survivant
let prenomsurvivant1 = getRandomName();
let survivant1 = new Personnage(prenomsurvivant1, 50, 0.7, 0.3, 10);
let prenomsurvivant2 = getRandomName();
let survivant2 = new Personnage(prenomsurvivant2, 50, 0.3, 0.1, 10);
let prenomsurvivant3 = getRandomName();
let survivant3 = new Personnage(prenomsurvivant3, 50, 0.7, 0.3, 10);
let prenomsurvivant4 = getRandomName();
let survivant4 = new Personnage(prenomsurvivant4, 50, 0.7, 0.3, 10);
let prenomsurvivant5 = getRandomName();
let survivant5 = new Personnage(prenomsurvivant5, 50, 0.7, 0.3, 10);
let slasher = new Personnage("Jason", 100, 0.7, 0.5, 30);
// Boucle de combat avec une limite de 12 tours
let tour = 1;
while (slasher.pointsDeVie > 0 && (survivant1.pointsDeVie > 0 || survivant2.pointsDeVie > 0 || survivant3.pointsDeVie > 0 || survivant4.pointsDeVie > 0 || survivant5.pointsDeVie > 0)) { //tant que tout les survivants sont en vie ou que Jason est encore en vie
console.log(`Tour ${tour}:`); //donne le tour actuel
// On répertorie tout les survivants encore en vie
let survivantsEnVie = [survivant1, survivant2, survivant3, survivant4, survivant5].filter(survivant => survivant.pointsDeVie > 0);
if (survivantsEnVie.length === 0) {
break; // Fin de boucle si tout les survivants sont morts
}
let survivantCible = survivantsEnVie[Math.floor(Math.random() * survivantsEnVie.length)]; //choisi aléatoirement un survivant encore en vie pour se battre contre Jason
// Le survivant attaque le tueur
survivantCible.attaquer(slasher);
// Vérifie si le tueur est tué
if (slasher.pointsDeVie <= 0) {
console.log(`${survivantCible.nom} a tué ` + slasher.nom);
break; // Le tueur a été vaincu, sortez de la boucle
}
// Le tueur attaque le survivant
slasher.attaquer(survivantCible);
// Vérifie si le survivant est encore en vie
if (survivantCible.pointsDeVie <= 0) {
console.log(`${slasher.nom} a tué ` + survivantCible.nom);
survivantCible.pointsDeVie = 0;
LesMourrus.push(survivantCible.nom);
}
// Affiche les points de vie restants des personnages à la fin de chaque tour
console.log(`${survivant1.nom} : ${survivant1.pointsDeVie} points de vie`);
console.log(`${survivant2.nom} : ${survivant2.pointsDeVie} points de vie`);
console.log(`${survivant3.nom} : ${survivant3.pointsDeVie} points de vie`);
console.log(`${survivant4.nom} : ${survivant4.pointsDeVie} points de vie`);
console.log(`${survivant5.nom} : ${survivant5.pointsDeVie} points de vie`);
console.log(`${slasher.nom} : ${slasher.pointsDeVie} points de vie`);
// Passe au tour suivant
tour++;
}
// Affiche un message indiquant le résultat du combat
if (survivant1.pointsDeVie + survivant2.pointsDeVie + survivant3.pointsDeVie + survivant4.pointsDeVie + survivant5.pointsDeVie <= 0) {
console.log("Jason a tué tous les survivants et retourne dans la forêt");
} else if (slasher.pointsDeVie <= 0) {
console.log("Les survivants ont éliminé Jason et se sont enfuis du campement, mais RIP à : " + LesMourrus.join(", ") + ".");
}