From 7ff1201a28b6ef9df55360f0db09f915a69c945c Mon Sep 17 00:00:00 2001 From: Haffa Bakhouche Date: Thu, 14 Nov 2024 12:24:23 +0100 Subject: [PATCH] =?UTF-8?q?Impl=C3=A9mentation=20de=20la=20grille=20(pas?= =?UTF-8?q?=20encore=20termin=C3=A9)=20apr=C3=A8s=20avoir=20clear=20le=20m?= =?UTF-8?q?enu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blocus | Bin 16584 -> 16592 bytes jeu.c | 25 ++++++++++++++++---- main.c | 71 ++++++++++++++++++++++++++++++++++----------------------- 3 files changed, 63 insertions(+), 33 deletions(-) diff --git a/blocus b/blocus index eae3b13c3c2413057cb211520240c78748fafaac..fc48cc565114b4351f26e3126b8d73918303e876 100755 GIT binary patch delta 2419 zcmX@n$atZVae@Y8z(mdaT(VpYU?9siS%^`OQ-lf3V-VTw$*9jLctiohh0~Kenf{AB z`1a9f;caQ3UyX02mLzSpI^3&wY4RNAIg=N#N-#=I4rFm>RGS>gB0hNoO9i7SnB~AK z!Rp4yz@RjFBa<*==;T6HeMWh(%nnuwMwZDJS=||9L3~Et$%btDjP{!o+4LAEPi0qN zD=p4RO)Z$bg}rLBE{CNhBLg!-5hDYG0K{bsTP99pV_;xmsDX-!WM=X*FfcQ;L;0mr znVbv^Obin@FXXtz!IZ-~xmNI7{Ssyd28QFVD;UAl8W6PuWZ;VnfB*mA8NtNBuuFlN zfni??0|Uc;5bw&9!S7_*)E^7#KWyS#6=R zyZ-+F4^njrMEA1lK!q2BxShvetd0WN0t#x6URE)%@Nleh8OmK|Nrj}UEVgs2V$H2g_ z3qFD8MwoyT9y0%-#IY!}F9`?i1_@~a-?4M9{Hkk|Huh!;P8 zgB^E<8|3lhFFc_p1%lK=9d{orcWB>XkZ}?q$1x+xUW3YVGBPmi2g^Q%7+DXNIR1j` z8;IX|{KdcDllw))>q|l0URF=2^f3^(^Z1K%zY)RF2bMdu&mUx_1IWgP-~ay~cU=QY zG?0+r|NH;{)&u-4OBfj#x>+x3GcYv&$gQjFW<93Oz+l_Mz`#(S)6F^)#QDs~z)+{$ z&DsOv2-Pz&Fw~1R*Dm3x7ie}}!g$;joE~3BgAK|AsgY)4VBqib0t-Zd1gt;;{g#ZN z^tXhWzfT{;%0=jv2P@SDDgDU+(#sDPkO2vR;)}ok9|Opl+S&{Zp0=C8N|u2|q(DlZ zfdu-eGJq1b>xORMCA&Z&-w8@)FAg$-L|H)v2Plcp`UOeqn|}TOKY6F9Q9UFyj)C+x zA2E2%zh6L|fdL}8@z?+V5LWsxP+*ljKJK~#6oRkayID)L7#M6pj;#~xW=#iiKuM;a z6Q)F^n>7$5Y7YuL@orWZ5C>Ee)N{d;L}= z9^I}lQarR-R5chF7)n@QScAOK9sA?t;ZTpxrw|7wz_i4I1wESIC>(eF04fuXyM6(c z58b{3-L4;Ie*f9&`lh>7pxgD!%N@TvT}1m(!2amNO-FM{Qtk(_f2=`o9@y--L5}6kH1**^Z);5 z*B6Z4t^$^>FKV_myFP)ipVTazFahHF;K@Sbf!1|DK!&(J@aT4Z;L&=ZRM(@M^_2$5 zf`hwc85kJ$fuhr+mo7LU;kx;=*fj}|3SHZ-zLA6FjW)>m5|Lx3?@Kg z;lwv^GWi7Iz54e5|7I=8U#yc9X7GEZmMS>qOhplKNM{{R0H1_p*X zAO8Q3VPIgG`tkq&ISdR8>fiqVKfu7iVDs(&e^7Kh`S$-m3nK%=y2&3E)FmxG{Qs{8 ziW?VpaHXQcz`$U_z`*cevZ127>c{=4EqjW@heS;bG@sU;x#Q z4Gatn@sn#6l@$ZN{{Ih7%`lZri{Yw{FfcIOn0!!CS+ef?|NpZ=w!u`nHZwC#N7#KJwJDP|yicT&x5oa_2k&;eK5S5Wa5S8E%V_;wi z1k1)Tf$D2X1_4KiER0N^e9=T)GL4CWL6AX`fdMMZ0hO)<>+J#S#q`BwuNfL22?vCSk^q$%U-?lPy>zChuUCVC0&7k=30s2BeNrXR;xiKBL{{L^eG}*5aJh z)Pl)1G(EDY69F_FwnUIqqchBhd_ zR4S8`fq{u(!sdk>w>X&ou}rQN{3g7DnSp`fxa%551_p*5Ad_BPpWG`XQ9tkB|NkDn ztkJv-3?7}wU&R0W|NrF-W(Ee2URFP-*y+Fj|AXWngXmsXTd43B5V!OAi#>n;|KAA; zMvq=rb+Fu_eMSrn4EuE$85myVfn-6Jdi1giKxHdHvcDJ@7+wU({r&&HJ9LFduj>q3&`w!lN*F3>X-fj`=F8s;)8D> zZs+kA|Ni{{zY}V42UzaVKCs3AKw38-$>t!-sxdJzyqE+sqnA|&EOGqBVi33U_>0vb zO(3uB0(ouU7LY@Jv4Z@eG+9POB8L;Cu9x*LH^e1TAa3XJ7fB#(P?vlF%N^Qx7^GJM zGMPDTcX{b1Q|zrmiH0G2rZf*ook|DVYVM8xacAhJt@{u;(TUgV5pPnW?cf}2r)4*)blsj*012G=WKRe!T3@TY(fV}Qksc@fxnLdEKm*- zumTD6zh_`zXs%ts%-{DE#L8X4`0@?|$l73#nx70HO=rLYP9OnLH1PND1`7m&1U54; zFw~`Yv$}vd&p=L#@(}HH-O%m3VizcEJ3*=DMF=AU!{mRWM)fbAGchoDG#@cI?z#q) z+F!eOv)W2>n@O}J;<-(-K=XtoFYaBhI%fT62=Mp zL6*JP^y~ls=Grw3{H<|+V4>Of>;L}=9^I}lQarTlSyVL`7#K=eU#$G~|G!6f?2nU& zLp?g5Lc;wVECyo1f*#Fp6pp)o0VS;Cu5ZAu4L|Ps0nBjfcKyJ=-t|kT>yK{NHxSkz zk6zYgoRBoO>n9{{9{TzJf4A?K?$9sYrGL6z<$iP?e_;=Dr0WO9ZdUyDZmVADE}zgYeQW=3?C*tDypk8e*FJmg@u8E!I4j(jmepp&9#}C zS&D^+or8e^R4p_xFfcGq?p0J){PgAj|7wsqFqKSYa8*Yb7#MsfUsP0<{QT|z|0rZt zuFcF$0X*y+n+28Db5B0NBr^Gcu7qGRD40P;gOoBbFceOHsVmQ9A~~5$ua0rfn+o}9eVSe)@HsA`dX z$;iMU$RxqAzyYEKMt++tXd*88laYZzh=Gq`k{CoB>>~yS29C*&CgO}DlM7A68TCP= zq$3kVWuy>9B{-BA7#IS;vaw8{x=E5jz!4$~Bas0&4*dbey&G(E>C3$833+ hauteurFenetre / etatJeu.tailleGrille) { + tailleCase = hauteurFenetre / etatJeu.tailleGrille; /* Ajuster si la hauteur est plus restrictive */ + } for (i = 0; i < etatJeu.tailleGrille; i++) { for (j = 0; j < etatJeu.tailleGrille; j++) { - x = j * tailleCase; /* Calculer la position x */ - y = i * tailleCase; /* Calculer la position y */ + int x = j * tailleCase; /* Calculer la position x */ + int y = i * tailleCase; /* Calculer la position y */ ChoisirCouleurDessin(CouleurParNom("black")); /* Couleur de la grille */ DessinerRectangle(x, y, tailleCase, tailleCase); /* Dessiner le rectangle pour la case */ /* Vous pouvez ajouter ici du code pour dessiner des éléments spécifiques dans chaque case */ @@ -61,6 +67,10 @@ struct EtatJeu initialiserJeu(int tailleGrille, int mode) { /* Fonction pour jouer avec l'IA */ void jouerAvecIA(struct EtatJeu etatJeu) { + /* Créer une nouvelle fenêtre pour le jeu */ + CreerFenetre(100, 100, 800, 600); /* Créer la fenêtre */ + ChoisirTitreFenetre("Jeu Blocus - IA"); /* Choisir le titre de la fenêtre */ + /* Logique de jeu avec l'IA ici */ /* Par exemple, afficher la grille et gérer les tours */ printf("Début du jeu avec l'IA...\n"); @@ -69,5 +79,12 @@ void jouerAvecIA(struct EtatJeu etatJeu) { dessinerGrille(etatJeu); /* Ajoutez ici la logique pour gérer les tours de jeu, etc. */ + + /* Attendre que l'utilisateur ferme la fenêtre */ + while (!SourisCliquee()) { + /* Vous pouvez ajouter ici une logique pour mettre à jour l'affichage si nécessaire */ + } + + FermerGraphique(); /* Fermer la fenêtre graphique lorsque l'utilisateur clique */ } /* Ajouter d'autres fonctions de logique de jeu si nécessaire */ \ No newline at end of file diff --git a/main.c b/main.c index 05a120e..be08002 100755 --- a/main.c +++ b/main.c @@ -7,6 +7,7 @@ void menuPrincipale() { int tailleGrille = 3; /* Taille de la grille */ int continuer = 1; /* Variable pour continuer le menu */ + int besoinRedessiner = 1; /* Drapeau pour indiquer si un redessin est nécessaire */ char tailleStr[4]; /* Augmenter la taille pour contenir des nombres plus grands */ @@ -15,44 +16,56 @@ void menuPrincipale() { ChoisirTitreFenetre("Blocus"); /* Choisir le titre de la fenêtre */ while (continuer) { /* Boucle principale du menu */ - EffacerEcran(CouleurParNom("white")); /* Effacer l'écran */ - - ChoisirCouleurDessin(CouleurParNom("black")); /* Choisir la couleur noire pour le dessin */ - EcrireTexte(300, 50, "BLOCUS", 2); /* Écrire le titre du jeu */ - - EcrireTexte(250, 120, "Taille de la grille:", 1); /* Écrire le texte pour la taille de la grille */ - sprintf(tailleStr, "%d", tailleGrille); /* Convertir la taille de la grille en chaîne */ - EcrireTexte(450, 120, tailleStr, 1); /* Afficher la taille de la grille */ - - RemplirRectangle(500, 110, 30, 30); /* Dessiner le rectangle pour augmenter la taille */ - RemplirRectangle(540, 110, 30, 30); /* Dessiner le rectangle pour diminuer la taille */ - ChoisirCouleurDessin(CouleurParNom("white")); /* Choisir la couleur blanche pour le texte */ - EcrireTexte(510, 120, "+", 1); /* Écrire le symbole pour augmenter */ - EcrireTexte(550, 120, "-", 1); /* Écrire le symbole pour diminuer */ - - ChoisirCouleurDessin(CouleurParNom("black")); /* Choisir la couleur noire pour le dessin */ - RemplirRectangle(250, 180, 300, 50); /* Dessiner le rectangle pour le mode 1 joueur */ - RemplirRectangle(250, 250, 300, 50); /* Dessiner le rectangle pour le mode 2 joueurs */ - ChoisirCouleurDessin(CouleurParNom("white")); /* Choisir la couleur blanche pour le texte */ - EcrireTexte(280, 195, "1 Joueur (contre IA)", 1); /* Écrire le texte pour le mode 1 joueur */ - EcrireTexte(280, 265, "2 Joueurs (Humain vs Humain)", 1); /* Écrire le texte pour le mode 2 joueurs */ - - ChoisirCouleurDessin(CouleurParNom("black")); /* Choisir la couleur noire pour le dessin */ - RemplirRectangle(250, 320, 300, 50); /* Dessiner le rectangle pour quitter */ - ChoisirCouleurDessin(CouleurParNom("white")); /* Choisir la couleur blanche pour le texte */ - EcrireTexte(320, 335, "Quitter", 1); /* Écrire le texte pour quitter */ - + if (besoinRedessiner) { /* Redessiner uniquement si nécessaire */ + EffacerEcran(CouleurParNom("white")); /* Effacer l'écran */ + + ChoisirCouleurDessin(CouleurParNom("black")); /* Choisir la couleur noire pour le dessin */ + EcrireTexte(300, 50, "BLOCUS", 2); /* Écrire le titre du jeu */ + + EcrireTexte(250, 120, "Taille de la grille:", 1); /* Écrire le texte pour la taille de la grille */ + sprintf(tailleStr, "%d", tailleGrille); /* Convertir la taille de la grille en chaîne */ + EcrireTexte(450, 120, tailleStr, 1); /* Afficher la taille de la grille */ + + RemplirRectangle(500, 110, 30, 30); /* Dessiner le rectangle pour augmenter la taille */ + RemplirRectangle(540, 110, 30, 30); /* Dessiner le rectangle pour diminuer la taille */ + ChoisirCouleurDessin(CouleurParNom("white")); /* Choisir la couleur blanche pour le texte */ + EcrireTexte(510, 120, "+", 1); /* Écrire le symbole pour augmenter */ + EcrireTexte(550, 120, "-", 1); /* Écrire le symbole pour diminuer */ + + ChoisirCouleurDessin(CouleurParNom("black")); /* Choisir la couleur noire pour le dessin */ + RemplirRectangle(250, 180, 300, 50); /* Dessiner le rectangle pour le mode 1 joueur */ + RemplirRectangle(250, 250, 300, 50); /* Dessiner le rectangle pour le mode 2 joueurs */ + ChoisirCouleurDessin(CouleurParNom("white")); /* Choisir la couleur blanche pour le texte */ + EcrireTexte(280, 195, "1 Joueur (contre IA)", 1); /* Écrire le texte pour le mode 1 joueur */ + EcrireTexte(280, 265, "2 Joueurs (Humain vs Humain)", 1); /* Écrire le texte pour le mode 2 joueurs */ + + ChoisirCouleurDessin(CouleurParNom("black")); /* Choisir la couleur noire pour le dessin */ + RemplirRectangle(250, 320, 300, 50); /* Dessiner le rectangle pour quitter */ + ChoisirCouleurDessin(CouleurParNom("white")); /* Choisir la couleur blanche pour le texte */ + EcrireTexte(320, 335, "Quitter", 1); /* Écrire le texte pour quitter */ + + besoinRedessiner = 0; /* Réinitialiser le drapeau de redessin */ + } + if (SourisCliquee()) { /* Vérifier si la souris est cliquée */ if (_Y >= 110 && _Y <= 140) { /* Vérifier si le clic est dans la zone de taille de grille */ if (_X >= 500 && _X <= 530 && tailleGrille < 9) { /* Augmenter la taille de la grille */ tailleGrille++; + besoinRedessiner = 1; /* Indiquer qu'un redessin est nécessaire */ } else if (_X >= 540 && _X <= 570 && tailleGrille > 3) { /* Diminuer la taille de la grille */ tailleGrille--; + besoinRedessiner = 1; /* Indiquer qu'un redessin est nécessaire */ } } else if (_X >= 250 && _X <= 550) { /* Vérifier si le clic est dans la zone de mode de jeu */ if (_Y >= 180 && _Y <= 230) { /* Mode 1 joueur */ struct EtatJeu etatJeu = initialiserJeu(tailleGrille, 1); /* Initialiser l'état du jeu */ - jouerAvecIA(etatJeu); /* Appeler la fonction pour démarrer le jeu avec l'IA */ + EffacerEcran(CouleurParNom("white")); /* Effacer l'écran pour afficher la grille */ + dessinerGrille(etatJeu); /* Dessiner la grille */ + + /* Boucle pour garder la fenêtre ouverte */ + while (!SourisCliquee()) { + usleep(10000); /* Attendre un court instant */ + } continuer = 0; /* Sortir du menu */ } else if (_Y >= 250 && _Y <= 300) { /* Mode 2 joueurs */ continuer = 0; /* Sortir du menu */ @@ -62,7 +75,7 @@ void menuPrincipale() { } } - sleep(1); /* Attendre un court instant (remplacer usleep par sleep) */ + usleep(10000); /* Attendre 10 millisecondes pour améliorer la réactivité */ } FermerGraphique(); /* Fermer la graphique */