This commit is contained in:
Samuel 2025-05-29 12:12:36 +02:00
parent 8bdffe821d
commit d94cedd6e2

View File

@ -438,39 +438,48 @@ void IHM_attente_match(int * couleur){
enum etat_action_t Strategie(int couleur){
static enum {
STRAT_INIT, // On attend de ne pas voir la tirette dans la detection de l'adversaire
STRAT_RECULE_BANDEROLE, // Deplacement relatif
STRAT_ALLER_GRADINS_1_A, // Déplacement relatif
STRAT_ALLER_GRADINS_1_B, // Cherche gradin
STRAT_ALLER_GRADINS_1_C, // Déplacement relatif
STRAT_DEPOSE_GRADIN_1A, // Empile gradin
STRAT_DEPOSE_GRADIN_1B, // Recule du gradin
STRAT_ALLER_PREPA_BACKSTAGE, // Déplacement absolu
STRAT_ALLER_BACKSTAGE // Déplacement relatif
STRAT_ALLER_PREPA_BACKSTAGE, // Déplacement relaif
STRAT_ATTENTE_BACKSTAGE, // Attente
STRAT_ALLER_BACKSTAGE, // Déplacement relatif
STRAT_FIN
}etat_strategie = STRAT_RECULE_BANDEROLE;
enum etat_action_t etat_action;
int translation_x_mm, translation_y_mm;
static unsigned long temps_timer;
float rotation_rad;
switch(etat_strategie){
case STRAT_INIT:
temps_timer = millis();
break;
case STRAT_RECULE_BANDEROLE:
// Déplacement en X
translation_x_mm = -300;
translation_y_mm = 0;
rotation_rad = 0;
etat_action = deplacement_relatif(translation_x_mm, translation_y_mm, rotation_rad, 1);
if(etat_action == ACTION_TERMINEE){
etat_strategie = STRAT_ALLER_GRADINS_1_A;
if(millis() - temps_timer > 300){
// Déplacement en X
translation_x_mm = -300;
translation_y_mm = 0;
rotation_rad = 0;
etat_action = deplacement_relatif(translation_x_mm, translation_y_mm, rotation_rad, 1);
if(etat_action == ACTION_TERMINEE){
etat_strategie = STRAT_ALLER_GRADINS_1_A;
}
}
break;
case STRAT_ALLER_GRADINS_1_A:
translation_x_mm = -500;
translation_x_mm = -450;
rotation_rad = 0;
if(couleur == COULEUR_JAUNE){
translation_y_mm = -500;
translation_y_mm = -450;
}else{
translation_y_mm = 500;
translation_y_mm = 450;
}
etat_action = deplacement_relatif(translation_x_mm, translation_y_mm, rotation_rad, 1);
if(etat_action == ACTION_TERMINEE){
@ -480,7 +489,7 @@ enum etat_action_t Strategie(int couleur){
case STRAT_ALLER_GRADINS_1_B:
etat_action = gradin_approche();
if(etat_action == ACTION_TERMINEE){
if(etat_action == ACTION_TERMINEE || etat_action == ACTION_ECHEC){
etat_strategie = STRAT_ALLER_GRADINS_1_C;
}
break;
@ -511,22 +520,31 @@ enum etat_action_t Strategie(int couleur){
case STRAT_ALLER_PREPA_BACKSTAGE:
if(couleur == COULEUR_JAUNE){
etat_action = deplacement_absolu(550, 1150, M_PI/2., 0);
etat_action = deplacement_relatif(0, 0, 165. / 180 * M_PI, 0);
}else{
etat_action = deplacement_absolu(3000 - 550, 1150, M_PI/2., 0);
etat_action = deplacement_relatif(0, 0, -165. / 180 * M_PI, 0);
}
if(etat_action == ACTION_TERMINEE){
etat_strategie = STRAT_ATTENTE_BACKSTAGE;
}
break;
case STRAT_ATTENTE_BACKSTAGE:
if (millis() - temps_timer > 95000){
etat_strategie = STRAT_ALLER_BACKSTAGE;
}
break;
case STRAT_ALLER_BACKSTAGE:
etat_action = deplacement_relatif(500, 0, 0, 0);
etat_action = deplacement_relatif(1140, 0, 0, 0);
if(etat_action == ACTION_TERMINEE){
etat_strategie = STRAT_RECULE_BANDEROLE;
return ACTION_TERMINEE;
etat_strategie = STRAT_FIN;
}
break;
case STRAT_FIN:
return ACTION_TERMINEE;
break;
}
return ACTION_EN_COURS;
@ -610,7 +628,6 @@ enum etat_action_t gradin_approche(void){
case GA_GOTO_EN_FACE:
case GA_GOTO_LARGE:
Detect_gradin(&detect_gradin);
if(detect_gradin.status != 2){
nb_erreur++;
if(nb_erreur > 100){