
27 Janvier 2020
Toute les cartes de la faction des humains ont été rajouté :
Écuyer et archer : Exactement les même unités de base que chez les mort-vivants sauf que leur capacité leur permet d'être améliorer par des sorts spécifiques.
Cavalier: Unité pouvant charger ses ennemis, c'est à dire que si elle utilise tout ses points de mouvement, elle inflige le double de ses dégâts de base. Pour ce faire, lors de l'attaque je rajoute juste une condition, si l'unité est un cavalier et mouvement==0 alors ...
if(Tunite_JI[U_Att].Nom=="Cavalier" && Tunite_JI[U_Att].mouvement<=0){ Degat=Degat*2;}
Éclaireur : L'unité à 1 chance sur 3 d'esquiver une attaque. Pour ce faire, on crée une condition pour savoir si l'unité attaqué est un éclaireur, un chiffre est alors choisie au hasard, si ce chiffre est égale à 2, alors on n'affecte pas les dégâts à l'unité. Par contre si l'unité n'est pas un éclaireur, les dégâts sont affecté.
if(Tunite_JII[U].Nom=="Eclaireur"){ Random=int(random(1,3));
if(Random==1 || Random==3){ Tunite_JII[U].Vie-=Degat; } }
//affectation de dégat
else{Tunite_JII[U].Vie-=Degat;}
Prêtre : Le prêtre peut restituer de la vie à un allié. On utilise la même fonction utilisé pour le nécromancien mais légèrement adapté afin que le prêtre puisse aussi l'utiliser pour soigner ses alliés.
Sort :
Déluge de flèche : sort de zone infligeant des dégâts. La fonction du sort est un mix entre celle de construction est d'attaque, c'est à dire que l'on active une fonction via une variable booléenne, ce déclenche alors une boucle pour chaque case du tableau. On dessine autour de la souris une zone en jaune et quand la souris est pressé, on lance une autre boucle, pour toute les unités du jeu, on calcule leur position, si elle correspond à celle des cases de la zone d'effet, on leur affecte des dégâts.
if(DelugeAct==true){
for(int E=0; E<Emplacement.length; E++){
if(mouseX>=Emplacement[E].xposition && mouseX<=Emplacement[E].xposition+taille && mouseY>=Emplacement[E].yposition && mouseY<=Emplacement[E].yposition+taille){
fill(250,250,0,64);
stroke(250,250,0);
strokeWeight(3);
rect(Emplacement[E].xposition,Emplacement[E].yposition,taille,taille); if(E-1>=0 && E-1<570){rect(Emplacement[E-1].xposition,Emplacement[E-1].yposition,taille,taille); }
if(E+1>=0 && E+1<570){rect(Emplacement[E+1].xposition,Emplacement[E+1].yposition,taille,taille); }
if(E-19>=0 && E-19<570){rect(Emplacement[E-19].xposition,Emplacement[E-19].yposition,taille,taille); }
if(E+19>=0 && E+19<570){rect(Emplacement[E+19].xposition,Emplacement[E+19].yposition,taille,taille); }
if(mousePressed==true){
for(int U=0; U<Tunite_Total.length; U++){
if(TuniteVivant_Total[U]==true){
int postUnite=0;
for(int i=0; i<5 ;i++){
if(Tunite_Total[U].xperso==Emplacement[E+postUnite].xposition && Tunite_Total[U].yperso-Pcamera==Emplacement[E+postUnite].yposition){
Degat=2-Tunite_Total[U].def;
if(Degat<=0){
Degat=1;}
Tunite_Total[U].Vie-=Degat; }
if(postUnite==-19){ if(E+19>=0 && E+19<570){ postUnite=+19;} else { postUnite=-19; } }
if(postUnite==+1){ if(E-19>=0 && E-19<570){ postUnite=-19;} else { postUnite=+19; } }
if(postUnite==-1){ if(E+1>=0 && E+1<570){ postUnite=+1;} else { postUnite=-19; } }
if(postUnite==0){ if(E-1>=0 && E-1<570){ postUnite=-1;} else{ postUnite=+1; } } } } }
DelugeAct=false;
action=0;
mousePressed=false; } } } }
Soin : Sort permettant de soigner une seule unité allié, le fonctionnement est le même que celui du sort précédent, mais ici on ne s'occupe que d'une seule case et au lieu de soustraire de la vie, on en rajoute.
Casque et Acier trempé : Sort d'équipement, permet d'octroyer un bonus à une unité spécifique (soit un écuyer, soit un archer). Leur fonction utilise un simple système de choix de case comme pour les fonctions précédentes. Et après sélection de l'unité, on opère un simple changement de variable chez l'unité.
Rué vers l'or : Capacité doublant le gain reçu par les mines d'or. On crée juste une variable gain, qui comptabilise les recettes d'or au début de chaque tour, et si rué vers l'or est actif, on double cette variable.
Bâtiment :
Ferme : Exactement pareil que chez les mort-vivants, la seule différence est leur apparence.
Mine d'or : Bâtiment ne pouvant être placé que sur des filons spécifique. Pour construire une mine, le programme compare la position de la souris avec des position précisent du terrain et construit une mine en conséquence.
Mur : Bâtiment défensif n'ayant que pour seul but de freiner l'avancé adverse. Dans la fonction construction, on crée la condition est-ce que le bâtiment est un mur, puis on vérifie que l'emplacement ou ce trouve la souri est vide. On sélectionne d'abord une première case, puis on sélectionne une deuxième case en partant de la droite vers la gauche puis quand la deuxième case est choisie on construit un mur en conséquence.
if(ConstBatiment=="Mur"){
if(Emplacement[C].Presence=="Vide" && Emplacement[C-1].Presence=="Vide"){
strokeWeight(4);
stroke(250,250,0);
fill(150,150,0,64);
if(mouseX>=Emplacement[C].xposition && mouseX<=Emplacement[C].xposition+taille && mouseY>=Emplacement[C].yposition-Pcamera && mouseY<=Emplacement[C].yposition+taille- Pcamera){
if(PhaseConst==0){
rect(Emplacement[C].xposition,Emplacement[C].yposition-Pcamera,taille,taille);
if(mousePressed==true && mouseButton==LEFT){
Xconst[0]=Emplacement[C].xposition;
Yconst[0]=Emplacement[C].yposition;
PhaseConst=1; } } }
if(Emplacement[C].xposition==Xconst[0] && Emplacement[C].yposition==Yconst[0]){
if(PhaseConst==1){
rect(Emplacement[C].xposition,Emplacement[C].yposition-Pcamera,taille,taille);
rect(Emplacement[C-1].xposition,Emplacement[C].yposition-Pcamera,taille,taille);
if(Emplacement[C-2].Presence=="Vide"){ rect(Emplacement[C-2].xposition,Emplacement[C].yposition-Pcamera,taille,taille); }
if(mousePressed==true){
if(tour>=1 && tour<2){
if(mouseX>=Emplacement[C-1].xposition && mouseX<=Emplacement[C-1].xposition+taille && mouseY>=Emplacement[C-1].yposition-Pcamera && mouseY<=Emplacement[C-1].yposition+taille-Pcamera){
Batiment_JI[NmbBatiment1]=new Batisse(Emplacement[C-1].xposition,Emplacement[C-1].yposition, 8, 1, IBatiment[4], "Mur", 1, 2);
Batiment_JI[NmbBatiment1].Taille="2*1";
BatimentVivant_JI[NmbBatiment1]=true;
NmbBatiment1++;
ConstAct=false;
action=0;
Emplacement[C].Tas_d_os=0;
Emplacement[C-1].Tas_d_os=0; } }}
Amélioration :
Cristal de soin : augmente de 1 la portée des prêtres. Le fonctionnement est le même que pour les améliorations de mort-vivants.
Acier de meilleur qualité : augmente l'attaque de toute les unité au corps à corps de 1.