From aad348e2b8a88d1b94cf60cd2de66d3a98bde915 Mon Sep 17 00:00:00 2001 From: Tajeddine Date: Sun, 30 Nov 2025 19:40:22 +0100 Subject: [PATCH] =?UTF-8?q?modification=20et=20am=C3=A9liorations=20des=20?= =?UTF-8?q?codes=20+=20ajout=20du=20melange=20+=20jeu=20fonctionnel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.c | 23 ++++++++++++++--- partie.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ partie.h | 3 +++ taquin | Bin 0 -> 16472 bytes 4 files changed, 96 insertions(+), 4 deletions(-) create mode 100755 taquin diff --git a/main.c b/main.c index a71595d..4a48f22 100644 --- a/main.c +++ b/main.c @@ -1,24 +1,39 @@ #include +#include #include "affichage.h" #include #include "config.h" #include "partie.h" + int main(void){ - int grille[NB_LIGNES][NB_COLS],touche; - + int grille[NB_LIGNES][NB_COLS], touche; + init_affichage(); + initialiser_plateau(grille); + + melanger_plateau(grille); + afficher_plateau(grille); while(1){ if (ToucheEnAttente()){ touche = Touche(); - if (touche == XK_q)break; + /* Pour quitter cliquer sur q minuscule ou Escape (27) */ + if (touche == 'q' || touche == 27) break; + + /* Debug : affiche le code touche */ + printf("Touche appuyée : %d\n", touche); + + /* Déplacement et mise a jour de l'affichage */ + deplacer(grille, touche); + afficher_plateau(grille); } } + fermer_affichage(); - return 0; + return EXIT_SUCCESS; } diff --git a/partie.c b/partie.c index 76d4528..5f0d30c 100644 --- a/partie.c +++ b/partie.c @@ -1,4 +1,14 @@ #include "partie.h" +/* On inclut stdio au cas où */ +#include +#include +#include +/* Codes des touches avec les fleches (standards X11) */ +#define FL_GAUCHE 65361 +#define FL_HAUT 65362 +#define FL_DROITE 65363 +#define FL_BAS 65364 + void initialiser_plateau(int grille[NB_LIGNES][NB_COLS]){ int i, j; int compteur = 1; @@ -12,3 +22,67 @@ void initialiser_plateau(int grille[NB_LIGNES][NB_COLS]){ /*On laisse la dernière case du tableu vide pour le taquin*/ grille[NB_LIGNES - 1 ][NB_COLS - 1] = 0; } + +void deplacer(int grille[NB_LIGNES][NB_COLS], int touche) { + int i, j; + int vide_i, vide_j; + int cible_i, cible_j; + int temp; + + /* Trouver la case vide */ + vide_i = -1; + for(i = 0; i < NB_LIGNES; i++) { + for(j = 0; j< NB_COLS; j++) { + if (grille[i][j] == 0) { + vide_i = i; + vide_j = j; + } + } + } + +/* INiitialisation cible */ +cible_i = vide_i; +cible_j = vide_j; + +/* Calculer la cible */ +if(touche == FL_GAUCHE) cible_j = vide_j + 1; +if(touche == FL_DROITE) cible_j = vide_j - 1; +if(touche == FL_HAUT) cible_i = vide_i + 1; +if(touche == FL_BAS) cible_i = vide_i - 1; + +/* Vérifier les murs */ +if (cible_i < 0 || cible_i >= NB_LIGNES || + cible_j < 0 || cible_j >= NB_COLS) { + return; + } + +/* Echanger */ +temp = grille[cible_i][cible_j]; +grille[cible_i][cible_j] = 0; +grille[vide_i][vide_j] = temp; +} + +void melanger_plateau(int grille[NB_LIGNES][NB_COLS]) { + int i; + int touche_aleatoire; + int direction; + + srand(time(NULL)); + + /* On fais 500 mouvements aléatoires */ + for (i = 0; i < 500; i++) { + /* tirage d'un nombre entre 0 et 3 */ + direction = rand() % 4; + + /* On convertit ce nombre en code de touche fléchée */ + /* Rappel : FL_GAUCHE vaut 65361 donc 65361 + 0, 1, 2 ou 3 donne les 4 flèches */ + touche_aleatoire = FL_GAUCHE + direction; + + if (i < 5) { + printf("DEBUG: Coup %d, Direction %d, Touche %d\n", i, direction, touche_aleatoire); + } + /* On joue le coup */ + deplacer(grille, touche_aleatoire); + } + printf("---DEBUG: Fin du mélange ! ---\n"); +} diff --git a/partie.h b/partie.h index 0ee530b..911de9b 100644 --- a/partie.h +++ b/partie.h @@ -4,6 +4,9 @@ #include "config.h" void initialiser_plateau(int grille[NB_LIGNES][NB_COLS]); +/*Nouvelle fonction pour gérer le déplacment */ +void deplacer(int grille[NB_LIGNES][NB_COLS], int touche); +void melanger_plateau(int grille[NB_LIGNES][NB_COLS]); #endif diff --git a/taquin b/taquin new file mode 100755 index 0000000000000000000000000000000000000000..9e8d476b9b733f71517429b46908090e429cd539 GIT binary patch literal 16472 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