137 lines
3.9 KiB
C
137 lines
3.9 KiB
C
|
# include <stdio.h>
|
||
|
# include <stdlib.h>
|
||
|
# include <graph.h>
|
||
|
|
||
|
|
||
|
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();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|