Test/LAB3_BRULEZ_HUGUET_SERRE/X-BOTS/X213.cpp
2022-03-03 15:44:04 +01:00

154 lines
3.7 KiB
C++

//
// Created by onnig on 18/11/2021.
//
#include "X213.h"
//const int n = 10;
X213::X213() {
Compteur::ajouterConstructeur();
nom = "x213";
direction = 0;
force = 5;
vision = 4;
vitesse = 4;
}
X213::~X213() {Compteur::ajouterDestructeur();}
X213::X213(const X213 &x213) {
Compteur::ajouterConstructeurCopie();
nom = x213.nom;
vitesse = x213.vitesse;
direction = x213.direction;
force = x213.force;
vision = x213.vision;
}
const string &X213::getNom() const {
return nom;
}
void X213::setNom(const string &nom) {
X213::nom = nom;
}
int X213::getDirection() const {
return direction;
}
void X213::setDirection(int direction) {
if (direction < 0){direction=0;}
else if (direction > 3){direction=3;}
else {X213::direction = direction;}
}
int X213::getForce() const {
return force;
}
void X213::setForce(int force) {
X213::force = force;
}
int X213::getVitesse() const {
return vitesse;
}
void X213::setVitesse(int vitesse) {
X213::vitesse = vitesse;
}
int X213::getVision() const {
return vision;
}
void X213::setVision(int vision) {
X213::vision = vision;
}
int X213::bloquer() {
return vitesse/3 + force;
}
/*
void X213::tournerLesTalons() {
if (direction == 0){direction=2;}
else if (direction == 1){direction=3;}
else if (direction == 2){direction=0;}
else if (direction == 3){direction=1;}
}*/
void X213::tournerLesTalons() {
int tourner[4] = {2,3,0,1};
direction = tourner[direction];
}
void X213::mouvement(int &x, int &y) {
switch (direction) {
case 0: //avance
if (x-vitesse-1 >=0){x=x-vitesse-1;}
else {x=0; cout<<"Impossible d'aller plus loin"<<endl;}
break;
case 1: //droite
if (y+vitesse+1 <= n){y = y+vitesse+1;}
else {y=n; cout<<"Impossible d'aller plus loin"<<endl;}
break;
case 2: //reculer
if (x+vitesse+1 <= n){x = x+vitesse+1;}
else {x=n; cout<<"Impossible d'aller plus loin"<<endl;}
break;
case 3: //gauche
if (y-vitesse-1 >= 0){y = y-vitesse-1;}
else {y=0; cout<<"Impossible d'aller plus loin"<<endl;}
break;
}
}
void X213::superCourse(int &x, int &y) {
switch (direction) {
case 0: //avance
if (x - (vitesse + (vitesse * force / 10)) >= 0) { x = x - (vitesse + (vitesse * force / 10)); }
else {x = 0; cout << "Impossible d'aller plus loin" << endl;}
break;
case 1: //droite
if (y + (vitesse + (vitesse * force / 10)) <= n) { y = y + (vitesse + (vitesse * force / 10)); }
else {y = n; cout << "Impossible d'aller plus loin" << endl;}
break;
case 2: //reculer
if (x + (vitesse + (vitesse * force / 10)) <= n) { x = x + (vitesse + (vitesse * force / 10)); }
else {x = n; cout << "Impossible d'aller plus loin" << endl;}
break;
case 3: //gauche
if (y - (vitesse + (vitesse * force / 10)) >= 0) { y = y - (vitesse + (vitesse * force / 10)); }
else {y = 0; cout << "Impossible d'aller plus loin" << endl;}
break;
}
}
X213::X213(string nom) {
Compteur::ajouterConstructeur();
X213::nom = nom;
direction = 0;
force = 5;
vision = 4;
vitesse = 4;
}
X213::X213(string nom, int direction, int force, int vitesse, int vision) : nom(nom), direction(direction),
force(force), vitesse(vitesse),
vision(vision) {Compteur::ajouterConstructeur();}