58 lines
1.4 KiB
C
58 lines
1.4 KiB
C
#include "fonction.h"
|
|
|
|
void randomove(t_move* move, Position pos1, int E, char* labData, int size_x, int size_y){ //Joue aléatoirement et légalement
|
|
int tabM[] ={-1, -1, -1, -1, -1, -1, -1, -1, 1};
|
|
int i;
|
|
Position postemp;
|
|
|
|
srand(time(NULL));
|
|
|
|
//Validité de la rotation
|
|
if(E>4){ // Suffisament d'energie pour une rotation
|
|
for(i=0;i<4;i++){ tabM[i]=1; }
|
|
}
|
|
|
|
//Validité des cases voisines
|
|
postemp = pos1; //UP
|
|
postemp.y-=1;
|
|
ajust_pos(&postemp, size_x, size_y);//Calcul de la position haut
|
|
if (test_case(postemp, labData, size_x) == 1) {tabM[4] = 1;} //Test validité position haut
|
|
|
|
postemp = pos1; //DOWN
|
|
postemp.y+=1;
|
|
ajust_pos(&postemp, size_x, size_y);
|
|
if (test_case(postemp, labData, size_x) == 1) {tabM[5] = 1;}
|
|
|
|
postemp = pos1; //LEFT
|
|
postemp.x-=1;
|
|
ajust_pos(&postemp, size_x, size_y);
|
|
if (test_case(postemp, labData, size_x) == 1) {tabM[6] = 1;}
|
|
|
|
postemp = pos1; //RIGHT
|
|
postemp.x+=1;
|
|
ajust_pos(&postemp, size_x, size_y);
|
|
if (test_case(postemp, labData, size_x) == 1) {tabM[7] = 1;}
|
|
|
|
//Aléatoire
|
|
do {
|
|
i = rand()%9;
|
|
}while (tabM[i]!=1);
|
|
|
|
move->type=i; //Type de mouvement aléatoire
|
|
|
|
if(move->type<2){ //Si rotation Ligne
|
|
i = rand()%size_y;
|
|
move->value=i;
|
|
}
|
|
else if (move->type<4){ //Si rotation Colonne
|
|
i = rand()%size_x;
|
|
move->value=i;
|
|
}
|
|
|
|
#ifdef DEBUG
|
|
printf("Move type :%d\n",move->type);
|
|
printf("Move Value: %d",move->value);
|
|
#endif
|
|
|
|
}
|
|
|