Skip to content
krabijunior2016.cpp 2.26 KiB
Newer Older
#include "krabijunior2016.h"


KrabiJunior2016::KrabiJunior2016(bool isYellow) : StrategieV3(isYellow)
{
    // Initialisation des stocks

    //Initialisation des tableaux d'étapes
    this->nombreEtapes = NOMBRE_ETAPES;
    this->numeroEtapeGarage = ETAPE_GARAGE;
    tableauEtapesTotal = Etape::initTableauEtapeTotal(NOMBRE_ETAPES);
    /*actionEtape = new MediumLevelAction*[NOMBRE_ETAPES];
    actionGoto = new ActionGoTo[NOMBRE_ETAPES];*/


    // Création des étapes
    // Les étapes correspondant à des actions sont créées automatiquement lors de l'ajout d'actions
    new Etape(0, Position(250, 1000, true), Etape::DEPART);            // départ au fond de la zone de départ
    // Points de passage
    // numéro étape, position
    new Etape(1, Position(600, 1000, true));
    new Etape(2, Position(700, 1000, true));
    new Etape(3, Position(1200, 1000, true));
    new Etape(4, Position(1000, 1300, true));
    new Etape(5, Position(1500, 1300, true));
    new Etape(6, Position(1800, 1200, true));
    new Etape(7, Position(1700, 800, true));
    new Etape(8, Position(1200, 800, true));
    new Etape(9, Position(1200, 600, true), Etape::TAPIS);

    // Actions
    // numéro étape, mediumLevelAction

    // Tapis
    //new Etape(9, new Tapis(Position(1200, 600)) );

    // Voisins
    Etape::get(0)->addVoisins(0, 2);

    Etape::get(2)->addVoisins(1, 3);

    Etape::get(3)->addVoisins(4, 5, 6, 7);
    Etape::get(3)->addVoisins(8);

    Etape::get(5)->addVoisins(4, 6);

    Etape::get(7)->addVoisins(6, 8);

    Etape::get(8)->addVoisins(9);


    // Lancer Dijkstra
    startDijkstra();
}

int KrabiJunior2016::getScoreEtape(int i){
    /* TODO : Supprimer le modificateur temporel et inclure directement un coefficient dans le score pour les actions longues
    Plus tard : pourquoi pas changer le système en ayant les FEU etc... fils de Etape, ça éviterait aussi le switch dans updateStock().
    Juste faire attention à comment transmettre le stock à update.
    */
    switch (this->tableauEtapesTotal[i]->getEtapeType()){
            case Etape::DEPART :
                return 10;
                break;
            case Etape::TAPIS :
                return 10;
                break;
            default :
                return 0;
                break;
    }
}