From fbede17e046a2bf9b04ceecb7d19ba10b73ac0b5 Mon Sep 17 00:00:00 2001 From: keraudre <yann.keraudren@etu-upec.fr> Date: Tue, 19 Dec 2023 11:49:49 +0100 Subject: [PATCH] =?UTF-8?q?mise=20=C3=A0=20niveau?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- snake/Makefile | 5 +- snake/ecr_lancement.c | 123 ++++++++++++++++++++-------------------- snake/ecran_lancement.c | 96 +++++++++++++++++++++++++++++++ snake/ecran_lancement.h | 13 +++++ snake/fenetre.c | 9 +++ snake/lancement | Bin 0 -> 25104 bytes 6 files changed, 185 insertions(+), 61 deletions(-) create mode 100644 snake/ecran_lancement.c create mode 100644 snake/ecran_lancement.h create mode 100755 snake/lancement diff --git a/snake/Makefile b/snake/Makefile index 34f4da5..8056d0a 100755 --- a/snake/Makefile +++ b/snake/Makefile @@ -7,6 +7,7 @@ but : run ### VARIABLES ### OFILES = plateau_init.o \ + ecran_lancement.o \ fenetre.o \ augmentation_serpent.o \ deplacement.o \ @@ -24,7 +25,9 @@ CFLAGS = -ansi -pedantic -lgraph plateau_init.o : plateau_init.h -fenetre.o : fenetre.h plateau_init.h +fenetre.o : fenetre.h plateau_init.h ecran_lancement.h + +ecran_lancement.o : ecran_lancement.h augmentation_serpent.o : augmentation_serpent.h diff --git a/snake/ecr_lancement.c b/snake/ecr_lancement.c index f1ccd6c..c0f6477 100644 --- a/snake/ecr_lancement.c +++ b/snake/ecr_lancement.c @@ -1,78 +1,81 @@ +/* Fonction qui affiche un écran principal avant de lancer le jeu + + Written by Yann KERAUDREN and Titouan LERICHE */ + + + #include <stdlib.h> -#include <graph.h> +#include <stdio.h> +#include "ecran_lancement.h" -int main(void) { +void ecran_lancement(void) { - couleur grey, green, yellow, red; + couleur grey, green, yellow, red; + + grey = CouleurParComposante(50,205,50); + ChoisirCouleurDessin(grey); + RemplirRectangle(0,0,1450,840); + + + yellow = CouleurParComposante(255,255,0); + ChoisirCouleurDessin(yellow); + RemplirRectangle(100,100,1200,6); + RemplirRectangle(1300,100,6,220); + RemplirRectangle(90,320,1216,6); + RemplirRectangle(90,320,6,165); + RemplirRectangle(90,485,200,6); + RemplirRectangle(250,465,50,46); + DessinerSegment(300, 470, 380, 440); + DessinerSegment(300, 469, 380, 439); + DessinerSegment(300, 468, 380, 438); + DessinerSegment(300, 467, 380, 437); + + DessinerSegment(300, 507, 380, 537); + DessinerSegment(300, 506, 380, 536); + DessinerSegment(300, 505, 380, 535); + DessinerSegment(300, 504, 380, 534); + + + + + + - InitialiserGraphique(); + + + - CreerFenetre(10,10,1450,840); + EcrireTexte(700,200, "SNAKE", 2); - grey = CouleurParComposante(50,205,50); - ChoisirCouleurDessin(grey); - RemplirRectangle(0,0,1450,840); - - - yellow = CouleurParComposante(255,255,0); - ChoisirCouleurDessin(yellow); - RemplirRectangle(100,100,1200,6); - RemplirRectangle(1300,100,6,220); - RemplirRectangle(90,320,1216,6); - RemplirRectangle(90,320,6,165); - RemplirRectangle(90,485,200,6); - RemplirRectangle(250,465,50,46); - DessinerSegment(300, 470, 380, 440); - DessinerSegment(300, 469, 380, 439); - DessinerSegment(300, 468, 380, 438); - DessinerSegment(300, 467, 380, 437); - - DessinerSegment(300, 507, 380, 537); - DessinerSegment(300, 506, 380, 536); - DessinerSegment(300, 505, 380, 535); - DessinerSegment(300, 504, 380, 534); - - - + + red = CouleurParComposante(255,0,0); + ChoisirCouleurDessin(red); + + + EcrireTexte(400,500, "space = play", 2); + + EcrireTexte(1000,500, "echap = quit", 2); + + + (if Touche() == XK_space ) { + + return ; + + } + if ( Touche() == XK_Escape) { + + FermerGraphique(); + + } - - - - - EcrireTexte(700,200, "SNAKE", 2); - - - red = CouleurParComposante(255,0,0); - ChoisirCouleurDessin(red); - - - - - EcrireTexte(400,500, "space = play", 2); - - EcrireTexte(1000,500, "echap = quit", 2); - - while (1) { - - - - - - - - } - - FermerGraphique(); - - return EXIT_SUCCESS; } diff --git a/snake/ecran_lancement.c b/snake/ecran_lancement.c new file mode 100644 index 0000000..df43c84 --- /dev/null +++ b/snake/ecran_lancement.c @@ -0,0 +1,96 @@ +/* Fonction qui affiche l'écran principale du jeu + + Written by Yann KERAUDREN and Titouan LERICHE */ + + + +#include <stdlib.h> +#include <stdio.h> +#include "ecran_lancement.h" + + + + +void ecran_lancement(void) { + + couleur grey, green, yellow, red; + + + + grey = CouleurParComposante(50,205,50); + ChoisirCouleurDessin(grey); + RemplirRectangle(0,0,1450,840); + + + yellow = CouleurParComposante(255,255,0); + ChoisirCouleurDessin(yellow); + RemplirRectangle(100,100,1200,6); + RemplirRectangle(1300,100,6,220); + RemplirRectangle(90,320,1216,6); + RemplirRectangle(90,320,6,165); + RemplirRectangle(90,485,200,6); + RemplirRectangle(250,465,50,46); + DessinerSegment(300, 470, 380, 440); + DessinerSegment(300, 469, 380, 439); + DessinerSegment(300, 468, 380, 438); + DessinerSegment(300, 467, 380, 437); + + DessinerSegment(300, 507, 380, 537); + DessinerSegment(300, 506, 380, 536); + DessinerSegment(300, 505, 380, 535); + DessinerSegment(300, 504, 380, 534); + + + + + + + + + + + + EcrireTexte(700,200, "SNAKE", 2); + + + red = CouleurParComposante(255,0,0); + ChoisirCouleurDessin(red); + + + + + EcrireTexte(400,500, "space = play", 2); + + EcrireTexte(1000,500, "echap = quit", 2); + + + if (Touche() == XK_space ) { + + return ; + + } + + if (Touche() == XK_Escape) { + + FermerGraphique(); + + } + +} + + + + + + + + + + + + + + + + + diff --git a/snake/ecran_lancement.h b/snake/ecran_lancement.h new file mode 100644 index 0000000..7ea73d5 --- /dev/null +++ b/snake/ecran_lancement.h @@ -0,0 +1,13 @@ +/* Fichier d'en-tête du fichier ecran_lancemetn.c + + Written by Yann KERAUDREN and Titouan LERICHE */ + +#ifndef ECRAN_LANCEMENT_H + +#define ECRAN_LANCEMENT_H + +#include <graph.h> + +void ecran_lancement(void) ; + +#endif /* ECRAN_LANCEMENT_H */ diff --git a/snake/fenetre.c b/snake/fenetre.c index 982fa2f..57b1617 100755 --- a/snake/fenetre.c +++ b/snake/fenetre.c @@ -7,6 +7,7 @@ #include <graph.h> #include "plateau_init.h" #include "fenetre.h" +#include "ecran_lancement.h" @@ -29,6 +30,14 @@ void start (struct adresse* pointeur) { int score=0; + + + /* affichage du l'écran principale */ + + ecran_lancement(); + + + /* remplisage du fond d'écran */ grey = CouleurParComposante(35,35,35); diff --git a/snake/lancement b/snake/lancement new file mode 100755 index 0000000000000000000000000000000000000000..4bd4ac1ff4214468c07a99613238daa7aaed5c2a GIT binary patch literal 25104 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 literal 0 HcmV?d00001