From 1ca9ee8f1d5de0b62b82565ccacb9571d4bfa49e Mon Sep 17 00:00:00 2001 From: Tajeddine Date: Fri, 5 Dec 2025 21:17:40 +0100 Subject: [PATCH] =?UTF-8?q?suppression=20de=20la=20constante=20TAILLE=5FCA?= =?UTF-8?q?SE=20pour=20que=20lecran=20sadapte=20a=20limage=20directement?= =?UTF-8?q?=20pour=20pas=20faire=20de=20probleme=20de=20dimension=20en=20a?= =?UTF-8?q?joutant=20des=20variable=20de=20types=20int=20img=5Fw=20et=20im?= =?UTF-8?q?age=5Fh=20ainsi=20que=20hauteur=5Fimage=20et=20largeur=5Fimg=20?= =?UTF-8?q?qui=20sont=20representer=20par=20l=5Fcase=20et=20h=5Fcase=20(je?= =?UTF-8?q?=20l'ai=20appeler=20img=5Fw=20car=20=C3=A7a=20peut=20porter=20a?= =?UTF-8?q?=20confusion=20en=20francais=20vu=20quil=20y=20a=20longueu=20et?= =?UTF-8?q?=20largeur=20donc=20jai=20choisi=20w=20pour=20width=20et=20pas?= =?UTF-8?q?=20img=5Fl).=20Ainsi=20quune=20correction=20dans=20affichage.c?= =?UTF-8?q?=20:=20j'ai=20retire=20-1=20dans=20les=20lignes=20avec=20src=5F?= =?UTF-8?q?x=20et=20src=5Fy=20car=20sinon=20il=20y=20a=20un=20decalage=20d?= =?UTF-8?q?onc=20comme=20ca=20le=20num=201=20correspond=20bien=20au=20morc?= =?UTF-8?q?eau=20dimage=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- affichage.c | 25 +++++++++++++------------ affichage.h | 4 ++-- config.h | 2 +- main.c | 27 +++++++++++++++++++-------- taquin | Bin 20760 -> 20760 bytes 5 files changed, 35 insertions(+), 23 deletions(-) diff --git a/affichage.c b/affichage.c index 3d4ed28..d7482bf 100644 --- a/affichage.c +++ b/affichage.c @@ -4,11 +4,11 @@ #include "config.h" -void init_affichage(int nb_ligne,int nb_colonne){ +void init_affichage(int largeur_img, int hauteur_img){ InitialiserGraphique(); /*La fenetre vass faire la taille de la grille*/ - CreerFenetre(100, 100, nb_colonne * TAILLE_CASE, (nb_ligne * TAILLE_CASE)+60); + CreerFenetre(100, 100, largeur_img, hauteur_img + 60); } void charger_image_source(char *nom_fichier) { @@ -22,7 +22,7 @@ void charger_image_source(char *nom_fichier) { ChoisirEcran(0); } -void afficher_plateau(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_colonne,int coups){ +void afficher_plateau(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_colonne,int coups, int l_case, int h_case){ int i,j; int x, y; int num; @@ -33,32 +33,33 @@ void afficher_plateau(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_col /*Compteur de coups*/ ChoisirCouleurDessin(CouleurParNom("white")); sprintf(text_coups,"Coups : %d",coups); - /*Comme la taille de l'écran chage y n'est pas fixe*/ - EcrireTexte(10,nb_ligne*TAILLE_CASE + 40, text_coups,2); + /* On place le texte en bas de l'image */ + EcrireTexte(10, nb_ligne*h_case + 40, text_coups, 2); for (i = 0; i < nb_ligne; i++){ for(j = 0; j < nb_colonne; j++){ /*Calcul en pixel de la taille d'une case*/ num = grille[i][j]; - x = j * TAILLE_CASE; - y = i * TAILLE_CASE; + /* Calcul dynamique de la position */ + x = j * l_case; + y = i * h_case; /*Ici on saute la case vide du taquin*/ if (num == 0) { ChoisirCouleurDessin(CouleurParNom("black")); - RemplirRectangle(x, y, TAILLE_CASE, TAILLE_CASE); + RemplirRectangle(x, y, l_case, h_case); continue; } - src_x = ((num - 1) % nb_colonne) * TAILLE_CASE; - src_y = ((num - 1) / nb_colonne) * TAILLE_CASE; + src_x = (num % nb_colonne) * l_case; + src_y = (num / nb_colonne) * h_case; - CopierZone(1, 0, src_x, src_y, TAILLE_CASE, TAILLE_CASE, x, y); + CopierZone(1, 0, src_x, src_y, l_case, h_case, x, y); /*ET on ecrit le numéro dans un rectagle*/ ChoisirCouleurDessin(CouleurParNom("black")); - DessinerRectangle(x, y, TAILLE_CASE, TAILLE_CASE); + DessinerRectangle(x, y, l_case, h_case); } } } diff --git a/affichage.h b/affichage.h index 591804c..0dbe47e 100644 --- a/affichage.h +++ b/affichage.h @@ -2,9 +2,9 @@ #define AFFICHAGE_H #include "config.h" -void init_affichage(int nb_ligne,int nb_colonne); +void init_affichage(int largeur_img, int hauteur_img); void fermer_affichage(void); void charger_image_source(char *nom_fichier); -void afficher_plateau(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_colonne,int coups); +void afficher_plateau(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_colonne,int coups, int l_case, int h_case); #endif diff --git a/config.h b/config.h index e794870..897c80f 100644 --- a/config.h +++ b/config.h @@ -2,6 +2,6 @@ #define CONFIG_H /*La grille doit être en 3 et 8 */ #define MAX_TAILLE 8 -#define TAILLE_CASE 60 + #endif diff --git a/main.c b/main.c index 9f02d65..a800b44 100644 --- a/main.c +++ b/main.c @@ -9,6 +9,10 @@ int main(void){ int grille[MAX_TAILLE][MAX_TAILLE]; int ligne=0, colonne=0, touche, coups; char *nom_image = NULL; + + int img_w = 0, img_h = 0; + int l_case = 0, h_case = 0; + int choix_image_fait = 0; int choix_lignes_fait = 0; int choix_colonne_fait = 0; @@ -46,14 +50,17 @@ int main(void){ if(touche == XK_1 || touche == XK_KP_1) { nom_image = "image1.png"; + img_w = 400; img_h = 400; choix_image_fait = 1; } else if(touche == XK_2 || touche == XK_KP_2) { nom_image = "image2.png"; + img_w = 400; img_h = 400; choix_image_fait = 2; } else if(touche == XK_3 || touche == XK_KP_3) { nom_image = "image3.png"; + img_w = 400; img_h = 400; choix_image_fait = 3; } else if(touche == XK_q || touche == XK_Q) { @@ -130,13 +137,16 @@ int main(void){ } } + + /* CALCUL AUTO des tailles*/ + + l_case = img_w / colonne; + h_case = img_h / ligne; FermerGraphique(); - init_affichage(ligne,colonne); - - - - + /* On met la taille de l'image pour créer la fenêtre */ + init_affichage(img_w, img_h); + charger_image_source(nom_image); @@ -144,7 +154,7 @@ int main(void){ melanger_plateau(grille,ligne,colonne); - afficher_plateau(grille,ligne,colonne,coups); + afficher_plateau(grille,ligne,colonne,coups, l_case, h_case); while(jeu_fini == 0){ @@ -160,7 +170,7 @@ int main(void){ /* Déplacement +on affiche la nouvelle grille */ if (deplacer(grille,ligne,colonne,touche) == 1) { coups++; - afficher_plateau(grille,ligne,colonne,coups); + afficher_plateau(grille,ligne,colonne,coups, l_case, h_case); /*On vérifie si on a gagner */ if(verifier_victoire(grille,ligne,colonne) == 1 ){ jeu_fini = 1; @@ -171,7 +181,8 @@ int main(void){ if (jeu_fini == 1){ ChoisirCouleurDessin(CouleurParNom("white")); - RemplirRectangle(50,150,300,100); + /* pense à utiliser img_w pour la largeur du rectangle blanc */ + RemplirRectangle(50,150, img_w - 100,100); ChoisirCouleurDessin(CouleurParNom("red")); EcrireTexte(60,200,"Bravo",2); diff --git a/taquin b/taquin index 454ced898a640cba4b58fc585d1932eacc7b7473..91fb2f76b0f85440505c5ab26a6ced173b978244 100755 GIT binary patch delta 2889 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