Commit 91ddfc88 authored by Guillaume Buret's avatar Guillaume Buret

Prise en compte de la benne (création d'une nouvelle classe) afin de...

Prise en compte de la benne (création d'une nouvelle classe) afin de déterminer la priorité de l'étape Zone de construction
parent 07c297d7
......@@ -105,8 +105,10 @@ HEADERS += \
../../include/vector.h \
../../include/strategie/krabijunior2016.h \
../../include/strategie/krabi2016.h \
../../include/strategie/benne.h \
../../include/actionneurs/fishingNet.h \
../../include/actionneurs/parasol.h
../../include/actionneurs/parasol.h \
../../include/strategie/benne.h
SOURCES += \
......@@ -185,6 +187,7 @@ SOURCES += \
../../src/strategie/krabijunior2016.cpp \
../../src/strategie/krabi2016.cpp \
../../src/strategie/cabine.cpp \
../../src/strategie/benne.cpp \
../../src/strategie/zoneConstruction.cpp \
../../src/actionneurs/fishingNet.cpp \
../../src/actionneurs/parasol.cpp
......
#ifndef BENNE_H
#define BENNE_H
class Benne
{
public:
Benne();
~Benne();
void setIsBenneEmpty();
void setIsBenneFull();
bool getIsBenneEmpty();
bool getIsBenneFull();
protected:
bool isBenneEmpty;
};
#endif // BENNE_H
......@@ -10,7 +10,7 @@ class ZoneConstruction : public MediumLevelAction
public:
ZoneConstruction();
ZoneConstruction(Position position);
ZoneConstruction(Position goalPosition);
~ZoneConstruction();
......@@ -19,7 +19,7 @@ public:
Etape::EtapeType getType();
protected:
Position position;
Position goalPosition;
};
#endif // ZONECONSTRUCTION_H
#include "benne.h"
Benne::Benne()
{
isBenneEmpty = true;
}
void Benne::setIsBenneEmpty() {
isBenneEmpty = true;
}
void Benne::setIsBenneFull() {
isBenneEmpty = false;
}
bool Benne::getIsBenneEmpty() {
return isBenneEmpty;
}
bool Benne::getIsBenneFull() {
return !isBenneEmpty;
}
#include "krabi2016.h"
#include "ascenseur.h"
#include "pinces.h"
#include "benne.h"
#ifndef ROBOTHW
#include <QDebug>
#endif
Benne *benne = new Benne();
Krabi2016::Krabi2016(bool isYellow) : StrategieV3(isYellow)
{
//Initialisation des tableaux d'étapes
......@@ -19,18 +22,19 @@ Krabi2016::Krabi2016(bool isYellow) : StrategieV3(isYellow)
int start = Etape::makeEtape(Position(250, 1000, true), Etape::DEPART); // départ au fond de la zone de départ
/** Points de passage **/
int wa = Etape::makeEtape(Position(700, 1000, true));
int wa = Etape::makeEtape(Position(600, 1000, true));
int wb = Etape::makeEtape(Position(880, 1140, true));
int wc = Etape::makeEtape(Position(1120, 1203, true));
/** Actions **/
// Zone de construction
int zc1 = Etape::makeEtape(new ZoneConstruction(Position(750, 750, true)));
int zc1 = Etape::makeEtape(new ZoneConstruction(Position(650, 450, true)));
// Pieds
int pa = Etape::makeEtape(new RamasserPied(Position(870, 1355, true)));
int pa = Etape::makeEtape(new RamasserPied(Position(870, 1755, true)));
int pb = Etape::makeEtape(new RamasserPied(Position(1100, 1770, true)));
// Etc.
......@@ -74,8 +78,19 @@ int Krabi2016::getScoreEtape(int i)
case Etape::POINT_PASSAGE :
return 0;
case Etape::ZONE_CONSTRUCTION :
// Rajouter la verification de la benne, sinon vide aucun interet d'aller dans la zone de construction
return 100;
if (benne->getIsBenneEmpty()) {
return 0;
}
else {
return 100;
}
case Etape::RAMASSER_PIED : {
benne->setIsBenneFull();
return 10;
}
default :
return 10; /* DEBUG (0 sinon) */
......
......@@ -10,7 +10,7 @@
ZoneConstruction::ZoneConstruction(){}
ZoneConstruction::ZoneConstruction(Position position):MediumLevelAction(position)
ZoneConstruction::ZoneConstruction(Position goalPosition):MediumLevelAction(goalPosition)
{
}
......@@ -25,13 +25,39 @@ Etape::EtapeType ZoneConstruction::getType()
int ZoneConstruction::update()
{
if (status == 0) //Début
if (status == 0)
{
#ifndef ROBOTHW
qDebug() << "Zone de construction";
qDebug() << "Zone Construction";
#endif
StrategieV2::setCurrentGoal(this->getGoalPosition(), false, VITESSE_LINEAIRE_MAX, -100.0, 200.f);
status++;
}
else if (status == 1)
{
StrategieV2::setCurrentGoal(this->getGoalPosition(), false, VITESSE_LINEAIRE_MAX, -100.0, 200.f);
status++;
}
else if (status == 2) {
if (Command::isNear(this->getGoalPosition(), 100.0f)) // le second paramètre est la distance a l'objectif
{
StrategieV2::stop();
StrategieV2::lookAt(this->getGoalPosition());
status++;
}
}
else if (status == 3) {
#ifndef ROBOTHW
qDebug() << "Etape zone de construction finie";
#endif
status = -1;
}
return status;
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment