# include # include # include void affiche_boutons(void) { /* Initialise le graphique et le ferme SEULEMENT si l'utilisateur ferme la fenêtre ou appuie sur QUITTER */ couleur c; c = CouleurParNom("white"); EffacerEcran(c); c = CouleurParNom("black"); ChoisirCouleurDessin(c); DessinerRectangle(150,300,200,50); DessinerRectangle(150,375,200,50); c = CouleurParComposante(0, 129, 60); ChoisirCouleurDessin(c); EcrireTexte(188,412, "QUITTER", 2); c = CouleurParNom("dark blue"); ChoisirCouleurDessin(c); EcrireTexte(200,337, "JOUER", 2); /* printf("\n%d\n", TailleChaineEcran("QUITTER", 2)); */ } int souris_clique_bouton(int bouton_x, int bouton_y, int largeur, int hauteur) { /* Prend en argument les coordonnées x et y du point en haut à gauche du bouton, sa largeur et sa hauteur puis renvoie un booléen si la souris clique dans la zone du bouton (0 si oui, 1 sinon) */ int hitbox_largeur[500]; int hitbox_hauteur[500]; int i; int j; SourisCliquee(); /* Remplit le tableau hitbox_largeur avec toutes les coordonnées x qui correspondent à celles du bouton */ for (i = 0; i != largeur; i++) { hitbox_largeur[i] = i + bouton_x; } /* Remplit le tableau hitbox_hauteur avec toutes les coordonnées y qui correspondent à celles du bouton */ for (i = 0; i != hauteur; i++) { hitbox_hauteur[i] = i + bouton_y; } /* Vérifie si les coordonnées de la souris sont présentes dans les tableaux qui définissent la hitbox du bouton */ for (i = 0; i != largeur; i++) { for (j = 0; j != hauteur; j++) { if ((hitbox_largeur[i] == _X) && (hitbox_hauteur[j] == _Y)) { return 1; } } } return 0; } void previsualisation_grille(int taille_grille) { int i; int j; int cote_par_carre = (102/taille_grille); for (i = 0; i != taille_grille; i++) { for (j = 0; j != taille_grille; j++) { ChoisirCouleurDessin(CouleurParNom("black")); DessinerRectangle(194 + (cote_par_carre*i), 40 + (cote_par_carre*j), cote_par_carre, cote_par_carre); } } } void affiche_selection_taille_grille(int taille_grille) { couleur c; char nouv_taille_grille[1]; sprintf(nouv_taille_grille, "%d", taille_grille); c = CouleurParNom("black"); ChoisirCouleurDessin(c); EcrireTexte(117,200,"Taille de la grille : ", 2); printf("%d",TailleChaineEcran("Taille de la grille : ", 2)); EcrireTexte(367,200,nouv_taille_grille, 2); DessinerSegment(124,250,376,250); DessinerSegment(125,251,375,251); DessinerSegment(125,249,375,249); DessinerArc(114+(42*(taille_grille-3)),240,20,20,0,360); DessinerArc(113+(42*(taille_grille-3)),239,22,22,0,360); c = CouleurParNom("grey"); ChoisirCouleurDessin(c); RemplirArc(114+(42*(taille_grille-3)),240,20,20,0,360); } void affiche_fleches(void) { /* Flèche gauche */ DessinerSegment(105,242, 105,257); DessinerSegment(105,242, 97, 250); DessinerSegment(97, 250, 105,257); /* Flèche droite */ DessinerSegment(400,242, 400,257); DessinerSegment(400,242, 408,250); DessinerSegment(408,250, 400,257); } int main(void) { int test = 1; int bouton_taille_x = 114; int taille_grille = 3; InitialiserGraphique(); CreerFenetre(100,100,500,500); affiche_boutons(); affiche_selection_taille_grille(taille_grille); previsualisation_grille(taille_grille); affiche_fleches(); while (1) { if (souris_clique_bouton(150,375,200,50)) { FermerGraphique(); return EXIT_SUCCESS; } if (souris_clique_bouton(150,375,200,50)) { /* Lancer le code du jeu */ } if (ToucheEnAttente()) { int touche = (Touche()); if (touche == XK_Left && taille_grille > 3) { taille_grille--; affiche_boutons(); affiche_selection_taille_grille(taille_grille); previsualisation_grille(taille_grille); affiche_fleches(); } if (touche == XK_Right && taille_grille < 9) { taille_grille++; affiche_boutons(); affiche_selection_taille_grille(taille_grille); previsualisation_grille(taille_grille); affiche_fleches(); } } } }