90 lines
2.2 KiB
C++
90 lines
2.2 KiB
C++
//
|
|
// Created by jser on 09/12/2021.
|
|
//
|
|
|
|
#include "X215Adapter.h"
|
|
|
|
X215Adapter::~X215Adapter() {
|
|
Compteur::ajouterDestructeur();
|
|
delete(x215);
|
|
}
|
|
|
|
X215Adapter::X215Adapter() {
|
|
Compteur::ajouterConstructeur();
|
|
x215 = new X215;
|
|
pdv = 30;
|
|
}
|
|
|
|
X215Adapter::X215Adapter(const X215Adapter &x215adapter) {
|
|
Compteur::ajouterConstructeurCopie();
|
|
x215 = new X215(*x215adapter.x215);
|
|
pdv = x215adapter.pdv;
|
|
}
|
|
|
|
void X215Adapter::bouger(int xAmi, int yAmi, int &x, int &y, int xEnnemi, int yEnnemi) {
|
|
int xs = x; //sauvegardes des coordonnées
|
|
int ys = y;
|
|
int nbm = 0;
|
|
if (pdv <15){x215->exploserRage();}
|
|
else if (pdv > 15){x215->controlerRage();}
|
|
if (!estFonctionnel()){}
|
|
else {
|
|
if (pdv < 10) {
|
|
x215->esquive(x, y, xEnnemi, yEnnemi);}
|
|
while (x==xs && y==ys && nbm <=4){
|
|
srand(time(NULL));
|
|
int choix = rand()%2;
|
|
if (choix ==1){x215->mouvement(x, y);}
|
|
else {x215->superCourse(x,y);}
|
|
if (x==xs && y==ys){x215->setDirection(rand()%4);}
|
|
nbm++;
|
|
}
|
|
int deg = rand()%5;
|
|
pdv = pdv-deg;
|
|
}
|
|
|
|
}
|
|
|
|
int X215Adapter::calculerDistance(int x, int y, int xEnnemi, int yEnnemi) {
|
|
return sqrt((xEnnemi-x)^2 + (yEnnemi-y)^2);
|
|
}
|
|
|
|
int X215Adapter::attaquer(int x, int y, int xEnnemi, int yEnnemi) {
|
|
if (!estFonctionnel())
|
|
return 0;
|
|
else {
|
|
if(x215->getVision() > calculerDistance(x,y,xEnnemi,yEnnemi))
|
|
return x215->bloquer();
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
void X215Adapter::defendre(int degat) {
|
|
|
|
}
|
|
|
|
bool X215Adapter::estFonctionnel() {
|
|
return pdv > 0;
|
|
}
|
|
|
|
string X215Adapter::toStringg() {
|
|
string robot;
|
|
robot = "nom : " + x215->getNom() +" " + " direction : " + to_string(x215->getDirection()) + " " + "force : " +
|
|
to_string(x215->getForce()) + " " + "vitesse : " + to_string(x215->getVitesse()) +" "+ "vision : "+
|
|
to_string(x215->getVision()) + " " + "rageCombat : "+ to_string(x215->isRageCombat());
|
|
return robot;
|
|
}
|
|
|
|
X215Adapter::X215Adapter(X215* x215) {
|
|
Compteur::ajouterConstructeur();
|
|
this->x215=x215;
|
|
pdv = 30;
|
|
}
|
|
|
|
int X215Adapter::getPdv() const {
|
|
return pdv;
|
|
}
|
|
|
|
void X215Adapter::setPdv(int pdv) {
|
|
X215Adapter::pdv = pdv;
|
|
}
|