From 7325bc75007f4442003062f5d94573e7cd2d35bf Mon Sep 17 00:00:00 2001 From: Ibrahim Date: Tue, 2 Dec 2025 23:05:23 +0100 Subject: [PATCH] =?UTF-8?q?J'ai=20ajout=C3=A9=20un=20=C3=A9rcan=20de=20fin?= =?UTF-8?q?=20quand=20le=20taquin=20est=20compl=C3=A9t=C3=A9=20,=20mais=20?= =?UTF-8?q?il=20y=20a=20d'autres=20chose=20a=20r=C3=A9gl=C3=A9=20comme=20l?= =?UTF-8?q?e=20fait=20que=20le=20nombre=20de=20ligne=20et=20cologne=20?= =?UTF-8?q?=C3=A9tait=20des=20constante=20,la=20case=20vide=20doit=20?= =?UTF-8?q?=C3=AAtre=20en=20haut=20a=20gauche=20et=20pas=20en=20bas=20a=20?= =?UTF-8?q?droite=20,=20et=20rajouter=20des=20d=C3=A9placements=20avec=20l?= =?UTF-8?q?a=20souris=20et=20pas=20juste=20les=20fl=C3=A9ches?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- #config.h# | 9 +++++++++ config.h | 6 ++---- main.c | 40 +++++++++++++++++++++++++------------- partie.c | 56 ++++++++++++++++++++++++++++++++++------------------- partie.h | 9 +++++---- taquin | Bin 16664 -> 0 bytes 6 files changed, 79 insertions(+), 41 deletions(-) create mode 100644 #config.h# delete mode 100755 taquin diff --git a/#config.h# b/#config.h# new file mode 100644 index 0000000..1e41a15 --- /dev/null +++ b/#config.h# @@ -0,0 +1,9 @@ +#ifndef CONFIG_H +#define CONFIG_H + +#define NB_LIGNES 4 +#define NB_COLS + +#define TAILLE_CASE 100 + +#endif diff --git a/config.h b/config.h index 99128d8..e05d241 100644 --- a/config.h +++ b/config.h @@ -1,9 +1,7 @@ #ifndef CONFIG_H #define CONFIG_H - -#define NB_LIGNES 4 -#define NB_COLS 4 - +/*La grille doit être en 3 et 8 */ +#define MAX_TAILLE 8 #define TAILLE_CASE 100 #endif diff --git a/main.c b/main.c index b7b7a91..dc642d4 100644 --- a/main.c +++ b/main.c @@ -8,7 +8,7 @@ int main(void){ int grille[NB_LIGNES][NB_COLS], touche; char *nom_image = NULL; - int choix_fait = 0; + int choix_fait = 0,jeu_fini = 0; init_affichage(); @@ -26,21 +26,20 @@ int main(void){ if(ToucheEnAttente()) { touche = Touche(); - printf("Touche reçue : %d (Caractère : %c)\n", touche, (char)touche); - if(touche == '1' || touche == 38) { + if(touche == XK_1 || touche == XK_KP_1) { nom_image = "image1.png"; choix_fait = 1; } - else if(touche == '2' || touche == 233) { + else if(touche == XK_2 || touche == XK_KP_2) { nom_image = "image2.png"; choix_fait = 2; } - else if(touche == '3' || touche == 34) { + else if(touche == XK_3 || touche == XK_KP_3) { nom_image = "image3.png"; choix_fait = 3; } - else if(touche == 'q' || touche == 27) { + else if(touche == XK_q || touche == XK_Q) { fermer_affichage(); return EXIT_SUCCESS; } @@ -55,23 +54,38 @@ int main(void){ afficher_plateau(grille); - while(1){ + while(jeu_fini == 0){ if (ToucheEnAttente()){ touche = Touche(); - /* Pour quitter cliquer sur q minuscule ou Escape (27) */ - if (touche == 'q' || touche == 27) break; + /* Pour quitter on clique sur q */ + if (touche == XK_q || touche == XK_Q) break; - /* Debug : affiche le code touche */ - printf("Touche appuyée : %d\n", touche); - /* Déplacement et mise a jour de l'affichage */ + /* Déplacement +on affiche la nouvelle grille */ deplacer(grille, touche); afficher_plateau(grille); + /*On vérifie si on a gagner */ + if(verifier_victoire(grille) == 1 ){ + jeu_fini = 1; + } } - + } + + if (jeu_fini == 1){ + ChoisirCouleurDessin(CouleurParNom("white")); + RemplirRectangle(50,150,300,100); + + ChoisirCouleurDessin(CouleurParNom("red")); + EcrireTexte(60,200,"Bravo",2); + EcrireTexte(60,230,"Appuyer pour quitter...",1); + + Touche(); + } + + fermer_affichage(); return EXIT_SUCCESS; diff --git a/partie.c b/partie.c index 5f0d30c..c3a1b47 100644 --- a/partie.c +++ b/partie.c @@ -3,11 +3,8 @@ #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 +#include + void initialiser_plateau(int grille[NB_LIGNES][NB_COLS]){ int i, j; @@ -34,23 +31,24 @@ void deplacer(int grille[NB_LIGNES][NB_COLS], int touche) { for(i = 0; i < NB_LIGNES; i++) { for(j = 0; j< NB_COLS; j++) { if (grille[i][j] == 0) { + /*vide i/j est l'adresse du trou*/ vide_i = i; vide_j = j; } } } -/* INiitialisation cible */ +/*cible i/j c'est l'adress de la case voisine qu'on veut faire glisser */ 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; +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; -/* Vérifier les murs */ +/* Vérifier les bords */ if (cible_i < 0 || cible_i >= NB_LIGNES || cible_j < 0 || cible_j >= NB_COLS) { return; @@ -74,15 +72,33 @@ void melanger_plateau(int grille[NB_LIGNES][NB_COLS]) { /* 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 */ + if (direction == 0)touche_aleatoire = XK_Left; + else if (direction == 1)touche_aleatoire = XK_Up; + else if (direction == 2)touche_aleatoire = XK_Right; + else touche_aleatoire = XK_Down; deplacer(grille, touche_aleatoire); } - printf("---DEBUG: Fin du mélange ! ---\n"); + +} + +int verifier_victoire(int grille[NB_LIGNES][NB_COLS]){ + int i,j,compteur = 1; + for(i = 0; i < NB_LIGNES; i++) { + for(j = 0; j< NB_COLS; j++) { + /*La dernière case en bas a droite doit être vide */ + if (i == NB_LIGNES - 1 && j == NB_COLS - 1){ + if(grille[i][j] != 0){ + return 0; + } + } + else { + /*les autres cases doivent être dans l'orde*/ + if(grille[i][j] != compteur){ + return 0; + } + compteur++; + } + } + } + return 1; } diff --git a/partie.h b/partie.h index 911de9b..88e87dc 100644 --- a/partie.h +++ b/partie.h @@ -3,10 +3,11 @@ #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 initialiser_plateau(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_cologne); +void deplacer(int grille[MAX_TAILLE][MAX_TAILLE], int touche); +void deplacer_souris(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_cologne,int clic_x,int clic_y); +void melanger_plateau(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_cologne); -void melanger_plateau(int grille[NB_LIGNES][NB_COLS]); +int verifier_victoire(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_cologne); #endif diff --git a/taquin b/taquin deleted file mode 100755 index 3b8787516b2b6ecaf1533a87e48abe8242eeed96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16664 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