diff --git a/main.c b/main.c index bd0a4f0..9f02d65 100644 --- a/main.c +++ b/main.c @@ -152,19 +152,21 @@ int main(void){ touche = Touche(); /* Pour quitter on clique sur q */ - if (touche == XK_q || touche == XK_Q) break; + if (touche == XK_q || touche == XK_Q) { + FermerGraphique(); + } /* Déplacement +on affiche la nouvelle grille */ - deplacer(grille,ligne,colonne,touche); + if (deplacer(grille,ligne,colonne,touche) == 1) { coups++; afficher_plateau(grille,ligne,colonne,coups); /*On vérifie si on a gagner */ if(verifier_victoire(grille,ligne,colonne) == 1 ){ jeu_fini = 1; } - } - + } + } } if (jeu_fini == 1){ diff --git a/partie.c b/partie.c index df5efe8..135dd65 100644 --- a/partie.c +++ b/partie.c @@ -9,7 +9,7 @@ void initialiser_plateau(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_ int i, j; int compteur = 1; - grille[0][0]=0; + grille[0][0] = 0; for (i = 0; i < nb_ligne; i++){ for(j = 0; j < nb_colonne; j++){ @@ -21,7 +21,7 @@ void initialiser_plateau(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_ } } -void deplacer(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_colonne,int touche) { +int deplacer(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_colonne,int touche) { int i, j; int vide_i = -1, vide_j = -1; int cible_i, cible_j; @@ -44,20 +44,23 @@ cible_j = vide_j; /* Calculer la cible */ if(touche == XK_Left) cible_j = vide_j - 1; -if(touche == XK_Right) cible_j = vide_j + 1; -if(touche == XK_Up) cible_i = vide_i - 1; -if(touche == XK_Down) cible_i = vide_i + 1; - + else if(touche == XK_Right) cible_j = vide_j + 1; + else if(touche == XK_Up) cible_i = vide_i - 1; + else if(touche == XK_Down) cible_i = vide_i + 1; + else { + return 0; + } /* Vérifier les bords */ if (cible_i < 0 || cible_i >= nb_ligne || cible_j < 0 || cible_j >= nb_colonne) { - return; + return 0; } /* Echanger */ temp = grille[cible_i][cible_j]; grille[cible_i][cible_j] = 0; grille[vide_i][vide_j] = temp; + return 1; } void melanger_plateau(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_colonne) { @@ -83,7 +86,8 @@ void melanger_plateau(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_col int verifier_victoire(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_colonne){ int i,j,compteur = 1; - if(grille[0][0]!= 0)return 0; + + if(grille[0][0] != 0)return 0; for(i = 0; i < nb_ligne; i++) { for(j = 0; j< nb_colonne; j++) { diff --git a/partie.h b/partie.h index e150450..d6bdaba 100644 --- a/partie.h +++ b/partie.h @@ -4,7 +4,7 @@ #include "config.h" void initialiser_plateau(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_colonne); -void deplacer(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_colonne, int touche); +int deplacer(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_colonne, int touche); void deplacer_souris(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_colonne,int clic_x,int clic_y); void melanger_plateau(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_colonne); diff --git a/taquin b/taquin index 6ddb01e..454ced8 100755 Binary files a/taquin and b/taquin differ