Initial commit
This commit is contained in:
parent
ab6c3353e2
commit
13161bcbd7
17 changed files with 1335 additions and 0 deletions
BIN
Patchs/Document sans titre.docx
Normal file
BIN
Patchs/Document sans titre.docx
Normal file
Binary file not shown.
111
Patchs/Patch Astaromove.txt
Normal file
111
Patchs/Patch Astaromove.txt
Normal file
|
@ -0,0 +1,111 @@
|
|||
SUGGESTIONS DE PATCH
|
||||
|
||||
|
||||
FONCTION.C
|
||||
l.242 : soucis potentiel avec la circularité du bidule labyrinthe pour le calcul de l'heuristique, du chemin...
|
||||
|
||||
(l.273) : première condition du while superflue ?
|
||||
l.283 : traiter séparemment le cas où il n'y qu'un élément dans l'openlist :
|
||||
...
|
||||
|
||||
//Suppression de la case d'openList
|
||||
temp_list=openList;
|
||||
if temp_list->suiv == NULL //S'il n'y qu'un seul element, t'es sur duquel faut supprimer
|
||||
openList == NULL
|
||||
while(temp_list->suiv!=temp){
|
||||
temp_list=temp_list->suiv;
|
||||
}
|
||||
temp_list->suiv=temp->suiv;
|
||||
free(temp);
|
||||
|
||||
...
|
||||
|
||||
(l.280) : pour eviter de creer une autre structure et faire un free de l'ancienne ou pourrait faire (a mettre apres le retrait de temp de l'openlist) :
|
||||
...
|
||||
|
||||
while(temp_list->suiv!=temp){
|
||||
temp_list=temp_list->suiv;
|
||||
}
|
||||
temp_list->suiv=temp->suiv;
|
||||
|
||||
//Transfert de la case de openList vers closedList
|
||||
temp->suiv = closedList;
|
||||
closedList = temp;
|
||||
|
||||
...
|
||||
|
||||
(l.407) : tableau de int pour itinéraire plus simple, a changer :
|
||||
...
|
||||
|
||||
//Création de l'itinéraire
|
||||
temp_case=&c;
|
||||
for(i=0;i<nb_move;i++){
|
||||
temp_pos=temp_case->pos;
|
||||
temp_case=temp_case->prec;
|
||||
n = move_pos(temp_case->pos,temp_pos);
|
||||
itineraire[i]= n;
|
||||
}
|
||||
itineraire[i]=0;
|
||||
}
|
||||
|
||||
...
|
||||
CHANGER
|
||||
int move_pos(Position Ini, Position Fin){ //Donne le mouvement pour aller de Ini a Fin
|
||||
|
||||
int m;
|
||||
int dx, dy;
|
||||
dx=Fin.x-Ini.x;
|
||||
if(dx!=0){
|
||||
if(dx==1){
|
||||
m = 7;
|
||||
}
|
||||
else{
|
||||
m = 6;
|
||||
}
|
||||
}
|
||||
dy=Fin.y-Ini.y;
|
||||
if(dy!=0){
|
||||
if(dy==1){
|
||||
m = 5;
|
||||
}
|
||||
else{
|
||||
m = 4;
|
||||
}
|
||||
}
|
||||
else{
|
||||
m = 8;
|
||||
}
|
||||
|
||||
return m;
|
||||
}
|
||||
...
|
||||
|
||||
CHANGER
|
||||
void free_itineraire(int* itineraire)
|
||||
|
||||
|
||||
|
||||
(l.414) : On ne compte pas la case de départ comme un move
|
||||
while (temp_case->suiv != NULL){ //On détermine combien de mouvement seront nécessaire
|
||||
temp_case=temp_case->prec;
|
||||
nb_move++;
|
||||
}
|
||||
Du coup on peut supprimer l.428.
|
||||
|
||||
|
||||
FONCTION.H
|
||||
(l.32) : structure lourde pour la mémoire, utilisation d'un pointeur ? :
|
||||
...
|
||||
|
||||
//Déclaration Liste chainée de Case
|
||||
typedef struct element Element;
|
||||
|
||||
struct element{
|
||||
Case* c;
|
||||
Element* suiv;
|
||||
};
|
||||
typedef Element* ListeC;
|
||||
|
||||
...
|
||||
|
||||
|
35
Patchs/patch random.txt
Normal file
35
Patchs/patch random.txt
Normal file
|
@ -0,0 +1,35 @@
|
|||
#define CV(x,y,size_x) x + y*size_x
|
||||
|
||||
|
||||
|
||||
void rotation_lab(char* labData, t_move move, int size_x, int size_y){ //Modifie le labyrinthe en cas de rotation (POSSIBILITE : Placer les lignes de codes des if dans pos_suivante)
|
||||
int i, temp;
|
||||
if(move.type==ROTATE_LINE_LEFT){
|
||||
temp=labData[CV(i,move.value,size_x)]; // On garde en mémoire le terme du tableau qui va passer de l'autre côté du labyrinthe avec la rotation (Ici, le 1er terme)
|
||||
for(i=0;i<size_x-1;i++){ //On parcours la ligne en question en échangeant les termes vers la gauche
|
||||
labData[CV(i,move.value,size_x)]=labData[CV(i+1,move.value,size_x)];
|
||||
}
|
||||
labData[CV(size_x-1,move.value,size_x)]=temp; // On place le terme a la fin de la ligne
|
||||
}
|
||||
if(move.type==ROTATE_LINE_RIGHT){
|
||||
temp=labData[CV(size_x-1,move.value,size_x)]; //On garde en mémoire le dernier terme de la ligne
|
||||
for(i=size_x-1;i>0;i--){//On parcours la ligne en sens inverse en échangeant les termes vers la droite
|
||||
labData[CV(i,move.value,size_x)]=labData[CV(i-1,move.value,size_x)];
|
||||
}
|
||||
labData[CV(0,move.value,size_x)]=temp; //On place le terme au début de la ligne
|
||||
}
|
||||
if(move.type==ROTATE_COLUMN_UP){
|
||||
temp=labData[move.value]; //On garde en mémoire le 1er terme de la colonne
|
||||
for(i=0;i<size_y-1;i++){ //On parcours la colonne de haut en bas en échangeant les terme vers le haut
|
||||
labData[CV(move.value, i, size_x)]=labData[CV(move.value, i+1, size_x)];
|
||||
}
|
||||
labData[CV(move.value,size_y-1,size_x)]=temp; //On place le terme la fin de la colonne
|
||||
}
|
||||
if(move.type==ROTATE_COLUMN_DOWN){
|
||||
temp=labData[CV(move.value, size_y-1, size_x)]; //On garde en mémoire le dernier terme de la colonne
|
||||
for(i=size_y-1;i>0;i--){ //On parcours la colonne de bas en haut en échangeant vers le bas
|
||||
labData[CV(move.value,i,size_x)]=labData[CV(move.value,i-1,size-x)];
|
||||
}
|
||||
labData[CV(move.value,0,size_x)]=temp; //On place le terme au début de la colonne
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue