Programme carte strategie (disco)

Dependencies:   mbed SerialHalfDuplex SDFileSystem DISCO-F469NI_portrait liaison_Bluetooth ident_crac

Evitement/Evitement.cpp

Committer:
Sitkah
Date:
2018-05-17
Revision:
42:657b6a573e11
Parent:
37:fca332b64b42

File content as of revision 42:657b6a573e11:

#include "Evitement.h"

#include <stdlib.h>
#include <string.h>
#include <math.h>

/////////////////////////////DEBUT D'UNE EBAUCHE DE CARTOGRAPHIE DU TERRAIN EN MODE DAMMIER AFIN DE PRATIQUER UN A* EN EVITEMENT/////////////////////////////////////////////////

    
/////////////////////ROBOTS/////////////////////////////////////////////
#ifdef ROBOT_BIG
    S_obstacle robot{
        0,
        0,
        6,
        6,
        0,
        0,
    };
#else
    S_obstacle robot{
        210,
        285,
        4,
        4,
        0,
        0,
    };
#endif
/////////////////////LISTE DES OBSTACLES/////////////////////////////////
S_obstacle bloc1{
    500,  //x
    800,  //y
    2,  //largeur axe X
    2,  //longueur axe Y
    1,  //danger 
    0,  //rayonnement distance à laquelle il y a un possible danger
};

S_obstacle bloc2{
    500,  //x
    2150,  //y
    2,  //largeur axe X
    2,  //longueur axe Y
    1,  //danger 
    0,  //rayonnement distance à laquelle il y a un possible danger
};

S_obstacle bloc3{
    1100,  //x
    200,  //y
    2,  //largeur axe X
    2,  //longueur axe Y
10,  //danger 
    0,  //rayonnement distance à laquelle il y a un possible danger
};

S_obstacle bloc4{
    1100,  //x
    2600,  //y
    2,  //largeur axe X
    2,  //longueur axe Y
    1,  //danger 
    0,  //rayonnement distance à laquelle il y a un possible danger
};

S_obstacle bloc5{
    1400,  //x
    1000,  //y
    2,  //largeur axe X
    2,  //longueur axe Y
    1,  //danger 
    0,  //rayonnement distance à laquelle il y a un possible danger
};

S_obstacle bloc6{
    1400,  //x
    1800,  //y
    2,  //largeur axe X
    2,  //longueur axe Y
    1,  //danger 
    0,  //rayonnement distance à laquelle il y a un possible danger
};

S_obstacle liste_objets[6]={bloc1,bloc2,bloc3,bloc4,bloc5,bloc6};



void Terrain_init(char **Table){
    int x,y;
    for(x=0;x<TAILLE_TABLE_X/TAILLE_CELLULE;x++){
        for(y=0;y<TAILLE_TABLE_Y/TAILLE_CELLULE;y++){
            Table[x][y]=1;
        }
    }
}

void Terrain_actualisation(char **Table, struct S_obstacle *liste_objet){
    int x=0,y=0,i=0;
    x=liste_objet[i].x/TAILLE_CELLULE;
    y=liste_objet[i].y/TAILLE_CELLULE;
    
    for(i=0; i<nb_objets;i++){
        while(x<(x+liste_objet[i].largeur)){ 
        
            y=liste_objet[i].y/TAILLE_CELLULE;
            
            while(y<(y+liste_objet[i].longueur)){ 
                Table[x][y]=liste_objet[i].danger;
                y++;
            }
            x++;
        }
    }   
}

void Actualisation_robot(short x,short y, short theta){
    robot.x=x;
    robot.y=y;
}
    

void Actualisation_position(char **Table){
    short x,y;
    #ifdef ROBOT_SMALL
        x=(robot.x-115)/TAILLE_CELLULE;
        y=(robot.y-115)/TAILLE_CELLULE;
    #else
        x=(robot.x-185)/TAILLE_CELLULE;
        y=(robot.y-185)/TAILLE_CELLULE;
    #endif
    while(x<(x+robot.largeur)){ 
        y=robot.y/TAILLE_CELLULE;
            
        while(y<(y+robot.longueur)){ 
            Table[x][y]=robot.danger;
            y++;
        }
        x++;
    }
}

void Actualisation_objets(char **Table,S_obstacle bloc, short x_bloc, short y_bloc){    //déplacement des cubes
    int x=0,y=0;
    x=bloc.x/TAILLE_CELLULE;
    y=bloc.y/TAILLE_CELLULE;
    
    while(x<(x+bloc.largeur)){ 
    
        y=bloc.y/TAILLE_CELLULE;
        
        while(y<(y+bloc.longueur)){ 
            Table[x][y]=1;
            y++;
        }
        x++;
    }
    
    bloc.x=x_bloc;  
    bloc.y=y_bloc;  
    x=bloc.x/TAILLE_CELLULE;
    y=bloc.y/TAILLE_CELLULE;
    
    while(x<(x+bloc.largeur)){ 
    
        y=bloc.y/TAILLE_CELLULE;
        
        while(y<(y+bloc.longueur)){ 
            Table[x][y]=1;
            y++;
        }
        x++;
    }
}    
void Localisation_robot_adv(char **Table){
}

/*void Automate_evitement(char **Table, S_obstacle robot, ){
    
    switch(EvitEtat){
        case ETAT_INIT_EVITEMENT:
            break;
            
        case ETAT_ESTIMATION_POSITION :
            break;
            
        case ETAT_ESTIMATION_POSITION_ROTATION_ACK:
            break;
            
        case ETAT_ESTIMATION_POSITION_ROTATION_ACK_END:
            break;
            
        case ETAT_FIN_EVITEMENT:
            break;
    }
}*/