From 1676f05187bb1271932afbabad8fa80df9957a84 Mon Sep 17 00:00:00 2001 From: boutarci Date: Tue, 19 Dec 2023 17:27:47 +0100 Subject: [PATCH] ajout fichier.h et makefile --- SAE_semestre1/Makefile | 49 ++++++++-------- SAE_semestre1/fichier.h/fonctions.h | 5 -- SAE_semestre1/fichier.h/main.h | 2 +- SAE_semestre1/fichier.h/pastille.h | 3 +- SAE_semestre1/fichier.h/serpent.h | 30 ++-------- SAE_semestre1/fichier.h/terrain.h | 2 +- SAE_semestre1/fichier.h/time.h | 3 +- SAE_semestre1/img/bombe.png | Bin 4883 -> 0 bytes SAE_semestre1/img/jeu-snake.jpg | Bin 50115 -> 0 bytes SAE_semestre1/out/fruit.c | 20 ------- SAE_semestre1/out/fruit.h | 21 ------- SAE_semestre1/out/main.c | 87 ---------------------------- SAE_semestre1/out/serpent.h | 30 ---------- SAE_semestre1/out/test.c | 76 ------------------------ SAE_semestre1/src/main.c | 14 +++-- SAE_semestre1/src/pastille.c | 2 +- SAE_semestre1/src/serpent.c | 2 +- SAE_semestre1/src/terrain.c | 2 +- SAE_semestre1/src/time.c | 37 +++++++----- 19 files changed, 69 insertions(+), 316 deletions(-) delete mode 100644 SAE_semestre1/fichier.h/fonctions.h delete mode 100644 SAE_semestre1/img/bombe.png delete mode 100644 SAE_semestre1/img/jeu-snake.jpg delete mode 100644 SAE_semestre1/out/fruit.c delete mode 100644 SAE_semestre1/out/fruit.h delete mode 100644 SAE_semestre1/out/main.c delete mode 100644 SAE_semestre1/out/serpent.h delete mode 100644 SAE_semestre1/out/test.c diff --git a/SAE_semestre1/Makefile b/SAE_semestre1/Makefile index f0f3519..eec7a62 100644 --- a/SAE_semestre1/Makefile +++ b/SAE_semestre1/Makefile @@ -1,25 +1,26 @@ -### VARIABLES ### + CC = gcc -CFLAGS = -lgraph -ansi -SRCDIR = ./src -HDIR = ./fichier.h -ODIR = ./out -OFILES = $(subst src/,out/,$(subst .c,.o,$(shell find $(SRCDIR)/ -type f))) -EXE = game -### BUT PAR DEFAUT ### -but : $(EXE) -### REGLES ESSENTIELLES ### -$(ODIR)/%.o : $(SRCDIR)/%.c - @mkdir -p $(@D) - $(CC) -c $< -o $@ -$(EXE) : $(OFILES) - $(CC) $(CFLAGS) -o $(EXE) $(OFILES) -### REGLES OPTIONNELLES ### -run : $(EXE) - ./$(EXE) -clean : - -rm -rf $(ODIR) -mrproper : - clean but -### BUTS FACTICES ### -.PHONY : but run clean mrproper +CFLAGS = -ansi -pedantic -lgraph +OBJS = main.o serpent.o time.o terrain.o pastille.o + + +serpent: $(OBJS) + $(CC) -o serpent $(OBJS) $(CFLAGS) + +main.o: serpent.h time.h pastille.h main.h + $(CC) -c main.c $(CFLAGS) + +serpent.o: serpent.h + $(CC) -c serpent.c $(CFLAGS) + +timer.o: timer.h serpent.h main.h + $(CC) -c timer.c $(CFLAGS) + +pastille.o: pastille.h serpent.h + $(CC) -c pastille.c $(CFLAGS) + +terrain.o: terrain.h serpent.h time.h main.h pastille.h + $(CC) -c terrain.c $(CFLAGS) + +clean: + rm -f *.0 serpent \ No newline at end of file diff --git a/SAE_semestre1/fichier.h/fonctions.h b/SAE_semestre1/fichier.h/fonctions.h deleted file mode 100644 index 209efff..0000000 --- a/SAE_semestre1/fichier.h/fonctions.h +++ /dev/null @@ -1,5 +0,0 @@ -#ifndef FONCTIONS_H -#define FONCTIONS_H - - -#endif \ No newline at end of file diff --git a/SAE_semestre1/fichier.h/main.h b/SAE_semestre1/fichier.h/main.h index e1cf47f..39d1c80 100644 --- a/SAE_semestre1/fichier.h/main.h +++ b/SAE_semestre1/fichier.h/main.h @@ -1,6 +1,6 @@ #ifndef MAIN_H #define MAIN_H - void main(void); + int main(void); #endif \ No newline at end of file diff --git a/SAE_semestre1/fichier.h/pastille.h b/SAE_semestre1/fichier.h/pastille.h index c135005..d456071 100644 --- a/SAE_semestre1/fichier.h/pastille.h +++ b/SAE_semestre1/fichier.h/pastille.h @@ -1,6 +1,7 @@ #ifndef PASTILLE_H #define PASTILLE_H -void Pomme(); +void InitialiserPommes(int pommex[], int pommey[], int segment); +void Pomme(int pos_x[], int pos_y[], int pommex[], int pommey[], int *segment); #endif diff --git a/SAE_semestre1/fichier.h/serpent.h b/SAE_semestre1/fichier.h/serpent.h index 1809bcc..738ad6e 100644 --- a/SAE_semestre1/fichier.h/serpent.h +++ b/SAE_semestre1/fichier.h/serpent.h @@ -1,30 +1,8 @@ #ifndef SERPENT_H #define SERPENT_H -#define LARGEUR_FENETRE 1200 -#define HAUTEUR_FENETRE 900 -#define TAILLE_CASE 20 -#define NB_COLONNES 60 -#define NB_LIGNES 40 -#define CYCLE 100000 - - -typedef struct { - int x , y; -} Corps; - -typedef struct { - int longueur; - int directionX; - int directionY; - Corps corps[NB_COLONNES * NB_LIGNES]; -} Serpent; - -void InitialiserSerpent(Serpent *serpent, int x, int y); - -void DeplacerSerpent(Serpent *serpent); - -int VerifierCollision(const Serpent *serpent); - -void DessinerSerpent(const Serpent *serpent); +void Serpent(int pos_x[], int pos_y[], int old_x[], int old_y[], int *segment, int murx[], int mury[], int *go_on, int *direction); +void Collision_Serpent(int pos_x[], int pos_y[], int segment, int murx[], int mury[], int *go_on); +void Update_Serpent(int pos_x[], int pos_y[], int segment, int old_x[], int old_y[]); +void Controle(int *direction, int last_direction, int *go_on); #endif diff --git a/SAE_semestre1/fichier.h/terrain.h b/SAE_semestre1/fichier.h/terrain.h index 75552ab..0ddf113 100644 --- a/SAE_semestre1/fichier.h/terrain.h +++ b/SAE_semestre1/fichier.h/terrain.h @@ -1,6 +1,6 @@ #ifndef TERRAIN_H #define TERRAIN_H -void DessinerScene(); +void DessinerScene(int murx[30], int mury[30]); #endif diff --git a/SAE_semestre1/fichier.h/time.h b/SAE_semestre1/fichier.h/time.h index 2d5498d..8aa397b 100644 --- a/SAE_semestre1/fichier.h/time.h +++ b/SAE_semestre1/fichier.h/time.h @@ -1,8 +1,7 @@ #ifndef TIME_H #define TIME_H -#define CYCLE 10000L -void Timer(); +void Score(int segment); #endif \ No newline at end of file diff --git a/SAE_semestre1/img/bombe.png b/SAE_semestre1/img/bombe.png deleted file mode 100644 index a42b71b766a1138859d3a21b1dae92bfeaae50ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4883 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 T zo;mcV{2=&Aruf>=Q=eK}%V{m8M2RCiHv&28Jw<&TX>PWb(ZYc2iZzXLdB7MMucE}` zF!>b)m*xAVtAFN=7Ka+Y1^gQuqm3FogSl}lbr?DK72D-dCPTn!6cs5 zcwc_(W{f!_R0_}^>d4GP-d!_(>( z7l}A$lOA5=!N{*P9}s*^f&Ty#?MJ8l_BGOY!@>R?w9{g54PDEr-kAV+qHi>+bMs+G z9RC11;1)8Ih@}QLQ?IBZt zH=JXS&b<#ZSeqFsyGG{J=c$2qa^-wRruPh%US% z;}NT9bBlSbZrWQ(ly3`;glDaE)WLsksr!4zNocl>%CY*Q%e*%vbq$`w{PABt{8IP_ z{{RTioo%fADbUu_#mRS*I?vK34ZM8E2d~zse$F4XI&0n>)us4>;=2eh&ptUF*yi9Q!%47`fdi3{QhXjoG8R=Zl#{U3>`d!@DzY&qIWbrnO zWFF20U|?pAi9k>cpS;AKhN}mOt!=cZV2xe|Xv{m9o<>`)1$p_VR}6JG zjlp#IqvzTyu&jFvo+>lY)Qm%PIpeoZl*7e-e`gsq(L`hpeQG~ikoC<)>sp{Aar@4l zsjJB}=Kla$_){H$%`h6kZZ#W#1vs1vjQSq6v`R|kZUE^_BjwFV;+o%Z{VPOT(5mM% z0ot7+fzWYHZ}sA&6=(>VKpYBVD9=ifzUZbmTGL=7ljQ>x)6i3;=qU&w3b=t@5DJ|7 z(X@I|2i-qfQChGKqtcC|(w2%qVp5Lul%u_Ouo6%8ZS<)k8HH*&f7Q3rq>SPe`qaOK z30I{l=}4U^PfExKo`dnH(+@%T)9NGxW&6?nYH`w_m+wdQsmDqlz&&|fdsK=yV0u&_ z;-y25r<%wKLBPd7c5(PrK=r4C)1OMshQp%&09hy2rct@ERpTeje@xYg{{Yr6rfPbb zUgyi7wDu2=ty!0LH2C_TbMI03Yel~JQJ`6P^Ub%^A-aS^_A(htnK;gUu}}S{PCR>O z&Ogv2>OIX(;aw(Qhk72L;_X_0?Ts4d5fW*{mf63MaQ^@=7(Yzc?)YiA<#>2S?yYa; z@=u@^Pxh9oKjCeYZmVzq05H?LELZn^eK^i5iTIcCE`Nwdz|UhHn%ag`5wRfW9Y?k+ zbH#R(`13{AJY%NL+HQ*jBxg)KX9@w~eqM8$<^CP~Ji7Ras$E)JT*GMa$L1E4HZh!I ziuACMqfLEctN1jx^7%gR%nBY0@cMYG#X5G7^B5z#lVOn;cHR#-{3`Fne+WU~UlX>C z4DC8c6l^4Mw{a_+VxZ8xF?WCCXtX#kg}vX}THP*Gl?uZ-Jaf=~wds0)h;053UTPj5 z*R7YtT7{KW?Imqu_Mz7&-5O{(~J|umb&OJ1;-!-wEmc(QXV;%4-cGJSq{0^M>hg?`St6S{D z9i(xM=veOrhU0-)sduaDULu>vHu_!A@Qf1~q_tU8CdB|S*bd&m&bX&lSDULvD{X%M zR`2Ep!Ix6~qxV}XTIk=|L`qohlX-uaw@hNG>K-z_*Wh1h&wA!jo!2yMmrMK}Z@3F*;|uSD)82R~t!?!U_XjsynMdyc00qZytxj~kL-unf z_1@1`8lUb8<XZ+fCTWw?c*ea}%s*YLA>`9*4bJw(+!n2JrO$ z81V*;Gx&j$MHh0EW?wVz9mkQ3_UT+wgR_E;oAUL)^KZA1$fnY@582aLhUuEySbahl zgevY&F9$g$u1c5sE02qtZDdQayZbvX8AJTPd)pcOYUQ{5StyJ6pKpnVsH)IlZZMVm z-+$L|=}IJBE=Kr~HYf1i#x`hc$w1#A`F`LajPX;?H17TD>3x*ElIZ-v#sjT!VrJKU(#vVbvI__0_p{ zU6*IvN7?@X04�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

_l$Fvd&SY+!MNa`}Cxk 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 -#include -#include -#include "fruit.h" - -void pomme(){ - int pos_x[60]; - int pos_y[60]; - int p, pp; - int pomme, pommex[5], pommey[5]; - for(p=0; p<6; p++){ - if(pommex[p]==pos_x[0] && pommey[p]==pos_y[0]){ - pommex[p] = ((rand() % (60)+1)*20); - pommey[p] = ((rand() % (27)+1)*20); - } - } - for(pp = 0; pp < 5; ++pp){ - AfficherSprite(pomme, pommex[pp], pommey[pp]); - } -} diff --git a/SAE_semestre1/out/fruit.h b/SAE_semestre1/out/fruit.h deleted file mode 100644 index 8d9f0ab..0000000 --- a/SAE_semestre1/out/fruit.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef FRUIT_H -#define FRUIT_H -#include"serpent.h" - -typedef struct { - int x; - int y; - int estMangee; - int sprite; /* Ajout d'un identifiant pour le sprite de la pomme */ -} Pomme; - -void InitialiserPommes(Pomme pommes[], int nombrePommes); -void GenererPommes(Pomme pommes[], int nombrePommes); -void AfficherPommes(Pomme pommes[], int nombrePommes); -void MangerPomme(Pomme pommes[], int nombrePommes, int x, int y); -void DessinerPomme(int x, int y, int sprite); -int ChargerSprite(char *file); -void AfficherSprite(int n, int x, int y); -void LibererSprite(int n); - -#endif diff --git a/SAE_semestre1/out/main.c b/SAE_semestre1/out/main.c deleted file mode 100644 index 7084ae9..0000000 --- a/SAE_semestre1/out/main.c +++ /dev/null @@ -1,87 +0,0 @@ -#include -#include -#include -#include "serpent.h" -#include "fruit.h" - -#define LARGEUR_FENETRE 1600 /* Largeur de la fenêtre (60 colonnes de jeu + murs de 2 cases de chaque côté) */ -#define HAUTEUR_FENETRE 1000 /* Hauteur de la fenêtre (40 lignes de jeu + murs de 2 cases en haut et en bas) */ -#define TAILLE_CASE 20 /* Taille d'une case pour le jeu de Snake */ -#define NB_COLONNES 60 /* Nombre de colonnes du jeu */ -#define NB_LIGNES 40 /* Nombre de lignes du jeu */ -#define CYCLE 100000 -#define VITESSE_SERPENT 100000 -#define NB_POMMES 5 - - -int main() { - - - couleur couleurFond = CouleurParComposante(200, 200, 200); - int touchePressee, i; - Serpent serpent; - unsigned long tempsPrecedent = Microsecondes(); - unsigned long tempsActuel; - couleur couleurMurs = CouleurParComposante(0, 0, 0); - Pomme pommes[NB_POMMES]; - srand(time(NULL)); - - - InitialiserGraphique(); - CreerFenetre(10, 10, LARGEUR_FENETRE, HAUTEUR_FENETRE); - - EffacerEcran(couleurFond); - - AfficherFenetre(); - - pomme(); - - InitialiserSerpent(&serpent, LARGEUR_FENETRE / 2, HAUTEUR_FENETRE / 2); - - while (1) { - if (ToucheEnAttente()) { - int touche = Touche(); - if (touche == XK_Left && serpent.directionX != 1) { - serpent.directionX = -1; - serpent.directionY = 0; - } else if (touche == XK_Right && serpent.directionX != -1) { - serpent.directionX = 1; - serpent.directionY = 0; - } else if (touche == XK_Up && serpent.directionY != 1) { - serpent.directionX = 0; - serpent.directionY = -1; - } else if (touche == XK_Down && serpent.directionY != -1) { - serpent.directionX = 0; - serpent.directionY = 1; - } else if (touche == XK_Escape) { - break; - } - } - - tempsActuel = Microsecondes(); - if (tempsActuel - tempsPrecedent >= VITESSE_SERPENT) { - DeplacerSerpent(&serpent); - if (VerifierCollision(&serpent)) { - FermerGraphique(); - return EXIT_SUCCESS; - } - - EffacerEcran(couleurFond); - DessinerSerpent(&serpent); - AfficherFenetre(); - tempsPrecedent = tempsActuel; - ChoisirCouleurDessin(couleurMurs); - RemplirRectangle(0, HAUTEUR_FENETRE - 80, LARGEUR_FENETRE, 80); - } - } - - for (i = 0; i < NB_POMMES; i++) { - LibererSprite(pommes[i].sprite); - } - - FermerGraphique(); - return EXIT_SUCCESS; -} - - - diff --git a/SAE_semestre1/out/serpent.h b/SAE_semestre1/out/serpent.h deleted file mode 100644 index 512ef37..0000000 --- a/SAE_semestre1/out/serpent.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef SERPENT_H -#define SERPENT_H -#define LARGEUR_FENETRE 1200 -#define HAUTEUR_FENETRE 900 -#define TAILLE_CASE 20 -#define NB_COLONNES 60 -#define NB_LIGNES 40 -#define CYCLE 100000 - - -typedef struct { - int x , y; -} Corps; - -typedef struct { - int longueur; - int directionX; - int directionY; - Corps corps[NB_COLONNES * NB_LIGNES]; -} Serpent; - -void InitialiserSerpent(Serpent *serpent, int x, int y); - -void DeplacerSerpent(Serpent *serpent); - -int VerifierCollision(const Serpent *serpent); - -void DessinerSerpent(const Serpent *serpent); - -#endif \ No newline at end of file diff --git a/SAE_semestre1/out/test.c b/SAE_semestre1/out/test.c deleted file mode 100644 index e31a867..0000000 --- a/SAE_semestre1/out/test.c +++ /dev/null @@ -1,76 +0,0 @@ -#include -#include -#include"serpent.h" - -#include - -#define LARGEUR_FENETRE 1200 -#define HAUTEUR_FENETRE 900 -#define TAILLE_CASE 20 -#define NB_COLONNES 60 -#define NB_LIGNES 40 -#define CYCLE 100000 - - - -void InitialiserSerpent(Serpent *serpent, int x, int y) { - serpent->longueur = 10; - serpent->directionX = 1; - serpent->directionY = 0; - serpent->corps[0].x = x; - serpent->corps[0].y = y; -} - -void DeplacerSerpent(Serpent *serpent) { - int i; - - for ( i = serpent->longueur - 1; i > 0; i--) { - serpent->corps[i] = serpent->corps[i - 1]; - } - - serpent->corps[0].x += serpent->directionX * TAILLE_CASE; - serpent->corps[0].y += serpent->directionY * TAILLE_CASE; -} - - - -int VerifierCollision(const Serpent *serpent) { - int teteX = serpent->corps[0].x; - int teteY = serpent->corps[0].y; - int i; - - if (teteX < 0 || teteX >= LARGEUR_FENETRE || teteY < 0 || teteY >= HAUTEUR_FENETRE-80) { - return 1; - } - - for (i = 1; i < serpent->longueur; i++) { - if (teteX == serpent->corps[i].x && teteY == serpent->corps[i].y) { - return 1; - } - } - - return 0; -} - -void DessinerSerpent(const Serpent *serpent) { - int i; - couleur couleurSerpent = CouleurParComposante(34, 139, 34); - - ChoisirEcran(1); - - EffacerEcran(CouleurParNom("grey")); - - - ChoisirCouleurDessin(couleurSerpent); - /* Afficher la tête du serpent */ - RemplirRectangle(serpent->corps[0].x, serpent->corps[0].y, TAILLE_CASE, TAILLE_CASE); - - - for (i = 0; i < serpent->longueur; i++) { - RemplirRectangle(serpent->corps[i].x, serpent->corps[i].y, TAILLE_CASE, TAILLE_CASE); - } -ChoisirEcran(0); -AfficherFenetre(); -CopierZone(1, 0, 0, 0, LARGEUR_FENETRE, HAUTEUR_FENETRE, 0, 0); - -} diff --git a/SAE_semestre1/src/main.c b/SAE_semestre1/src/main.c index 0425f4f..c1af7a0 100644 --- a/SAE_semestre1/src/main.c +++ b/SAE_semestre1/src/main.c @@ -1,9 +1,10 @@ #include #include #include -#include "serpent.h" -#include "pommes.h" -#include "time.h" +#include "../fichier.h/serpent.h" +#include "../fichier.h/pastille.h" +#include "../fichier.h/time.h" +#include "../fichier.h/main.h" #define CYCLE 10000L @@ -25,17 +26,18 @@ int main(void) { InitialiserGraphique(); CreerFenetre(350,100,1200,900); EffacerEcran(CouleurParComposante(0,0,0)); - suivant = Microsecondes()+CYCLE; - old_seconde=(suivant/1000000)%10; + /* suivant = Microsecondes()+CYCLE; + old_seconde=(suivant/1000000)%10;*/ DessinerScene(murx, mury); InitialiserPommes(pommex, pommey, segment); while(go_on){ - Timer(); + /*Timer();*/ Score(*pointeur_segment); Controle(pointeur_direction, 0, pointeur_go_on); Serpent(pos_x, pos_y, old_x, old_y, pointeur_segment, murx, mury, pointeur_go_on, pointeur_direction); Pomme(pos_x, pos_y, pommex, pommey, pointeur_segment); } + usleep(100000); FermerGraphique(); return EXIT_SUCCESS; } \ No newline at end of file diff --git a/SAE_semestre1/src/pastille.c b/SAE_semestre1/src/pastille.c index 9c5db79..a5499af 100644 --- a/SAE_semestre1/src/pastille.c +++ b/SAE_semestre1/src/pastille.c @@ -1,6 +1,6 @@ #include #include -#include "pommes.h" +#include "../fichier.h/pastille.h" void InitialiserPommes(int pommex[], int pommey[], int segment) { int p; diff --git a/SAE_semestre1/src/serpent.c b/SAE_semestre1/src/serpent.c index fbe6f2c..190aa38 100644 --- a/SAE_semestre1/src/serpent.c +++ b/SAE_semestre1/src/serpent.c @@ -1,5 +1,5 @@ #include -#include "serpent.h" +#include "../fichier.h/serpent.h" void Update_Serpent(int pos_x[], int pos_y[], int segment, int old_x[], int old_y[]){ int i = 0; diff --git a/SAE_semestre1/src/terrain.c b/SAE_semestre1/src/terrain.c index a19702a..74b66d7 100644 --- a/SAE_semestre1/src/terrain.c +++ b/SAE_semestre1/src/terrain.c @@ -10,7 +10,7 @@ void DessinerScene(int murx[30], int mury[30]){ int mur; int i; int fond; - snprintf(timer,6,"%02d:%02d", minute ,seconde); + /* snprintf(timer,6,"%02d:%02d", minute ,seconde);*/ ChoisirCouleurDessin(CouleurParComposante(91,222,122)); RemplirRectangle(20,20,1160,700); ChoisirCouleurDessin(CouleurParComposante(255,255,255)); diff --git a/SAE_semestre1/src/time.c b/SAE_semestre1/src/time.c index 5e9604c..b4408d0 100644 --- a/SAE_semestre1/src/time.c +++ b/SAE_semestre1/src/time.c @@ -2,26 +2,37 @@ #include #include #include "../fichier.h/time.h" +#include "../fichier.h/main.h" +#include "../fichier.h/serpent.h" #define CYCLE 10000L -/*time*/ - void Update_Timer(void){ - int seconde =0; - int minute=1; - char timer[6]; +int seconde=0; +int minute=0; +int seconde_actuel=0; +int old_seconde=0; +unsigned long int suivant; +char timer[6]; + +void Score(int segment){ + int nombre; + char score[4]; + nombre= (segment-10)*10; + snprintf(score,4,"%04d0", nombre); + ChoisirCouleurDessin(CouleurParNom("black")); + RemplirRectangle(1100,700,1200,800); + ChoisirCouleurDessin(CouleurParNom("white")); + EcrireTexte(1000,760,"Score: ",2); + EcrireTexte(1100,760,score,2); +} +void Update_Timer(){ snprintf(timer,6,"%02d:%02d", minute, seconde); ChoisirCouleurDessin(CouleurParComposante(0,0,0)); RemplirRectangle(10,700,12000,800); ChoisirCouleurDessin(CouleurParComposante(255,255,255)); - EcrireTexte(50,760,"Temps: ",2); - EcrireTexte(160,760,timer,2); + EcrireTexte(50,760,"time: ",2); + EcrireTexte(120,760,timer,2); } -void Timer(void){ -int seconde = 0; -int minute = 0; -int seconde_actuel; -int old_seconde; -unsigned long int suivant; +void Timer(){ if(Microsecondes()> suivant){ suivant = Microsecondes()+CYCLE; seconde_actuel = (suivant/1000000)%10;