Organisation du code avec beaucoup de beug + jeu pas finis
This commit is contained in:
parent
eb6df98985
commit
107040e478
@ -1,15 +1,25 @@
|
|||||||
but : jeux
|
|
||||||
OFILES = terrain.o \
|
|
||||||
time.o
|
|
||||||
CC = gcc
|
CC = gcc
|
||||||
CFLAGS = -ansi -pedantic -lgraph -g
|
CFLAGS = -ansi -pedantic -lgraph -g
|
||||||
|
SRCDIR = ./src
|
||||||
|
HDIR = ./fichier.h
|
||||||
|
ODIR = ./out
|
||||||
|
OFILES = $(subst src/,out/,$(subst .c,.o,$(shell find $(SRCDIR)/ -type f)))
|
||||||
|
EXE = snake
|
||||||
|
|
||||||
terrain.o = terrain.c
|
but : $(EXE)
|
||||||
time.o = time.c
|
|
||||||
|
|
||||||
jeux : $(OFILES)
|
$(ODIR)/%.o : $(SRCDIR)/%.c
|
||||||
$(CC) $(CFLAGS) -o jeux $(OFILES)
|
@mkdir -p $(@D)
|
||||||
|
$(CC) -c $< -o $@
|
||||||
|
|
||||||
clean : -rm -f $(OFILES) jeux
|
$(EXE) : $(OFILES)
|
||||||
|
$(CC) $(CFLAGS) -o $(EXE) $(OFILES)
|
||||||
|
|
||||||
|
run : $(EXE)
|
||||||
|
./$(EXE)
|
||||||
|
|
||||||
|
clean : -rm -f $(OFILES) snake
|
||||||
|
|
||||||
.PHONY : but clean
|
.PHONY : but clean
|
||||||
|
6
SAE_semestre1/fichier.h/controle.h
Normal file
6
SAE_semestre1/fichier.h/controle.h
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#ifndef CONTROLE_H
|
||||||
|
#define CONTROLE_H
|
||||||
|
|
||||||
|
void Controle();
|
||||||
|
|
||||||
|
#endif
|
5
SAE_semestre1/fichier.h/fonctions.h
Normal file
5
SAE_semestre1/fichier.h/fonctions.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#ifndef FONCTIONS_H
|
||||||
|
#define FONCTIONS_H
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
5
SAE_semestre1/fichier.h/main.h
Normal file
5
SAE_semestre1/fichier.h/main.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#ifndef MAIN_H
|
||||||
|
#define MAIN_H
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
5
SAE_semestre1/fichier.h/menu.h
Normal file
5
SAE_semestre1/fichier.h/menu.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#ifndef MENU_H
|
||||||
|
#define MENU_H
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
5
SAE_semestre1/fichier.h/pastille.h
Normal file
5
SAE_semestre1/fichier.h/pastille.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#ifndef PASTILLE_H
|
||||||
|
#define PASTILLE_H
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
5
SAE_semestre1/fichier.h/serpent.h
Normal file
5
SAE_semestre1/fichier.h/serpent.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#ifndef SERPENT_H
|
||||||
|
#define SERPENT_H
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
7
SAE_semestre1/fichier.h/time.h
Normal file
7
SAE_semestre1/fichier.h/time.h
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#ifndef TIME_H
|
||||||
|
#define TIME_H
|
||||||
|
#define CYCLE 10000L
|
||||||
|
|
||||||
|
void Timer(unsigned long int suivant);
|
||||||
|
|
||||||
|
#endif TIME_H
|
@ -1,9 +0,0 @@
|
|||||||
#ifndef fonctions.h
|
|
||||||
#define fonctions.h
|
|
||||||
|
|
||||||
/*Variables fichier terrain.c*/
|
|
||||||
void variables(){
|
|
||||||
int j;
|
|
||||||
int i;
|
|
||||||
}
|
|
||||||
#endif
|
|
BIN
SAE_semestre1/img/jeu-snake.jpg
Normal file
BIN
SAE_semestre1/img/jeu-snake.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 49 KiB |
BIN
SAE_semestre1/img/serpent.png
Normal file
BIN
SAE_semestre1/img/serpent.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 492 B |
@ -1,237 +0,0 @@
|
|||||||
#include <stdlib.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <ncurses.h>
|
|
||||||
|
|
||||||
|
|
||||||
#define CORP_SNAKE '-'
|
|
||||||
#define TETE_SNAKE 'B'
|
|
||||||
#define DU_MANGER '*'
|
|
||||||
#define CASE_VIDE ' '
|
|
||||||
|
|
||||||
|
|
||||||
char ** grille = NULL;
|
|
||||||
int nbLignes = 0;
|
|
||||||
int nbColonnes = 0;
|
|
||||||
int modeEvolueDansLequelLeSerpentPeutPasserATraversLesMursEtCeSansAvoirMalDuToutCeQuiEstTresPratiqueCarCaPermetDeJouerPlusLongtemps = 0;
|
|
||||||
|
|
||||||
struct uneCellule {
|
|
||||||
int ligne;
|
|
||||||
int colonne;
|
|
||||||
struct uneCellule * suiv;
|
|
||||||
};
|
|
||||||
typedef struct uneCellule uneCellule;
|
|
||||||
|
|
||||||
struct unSnake {
|
|
||||||
uneCellule * teteSnake;
|
|
||||||
uneCellule * queueSnake;
|
|
||||||
};
|
|
||||||
typedef struct unSnake unSnake;
|
|
||||||
|
|
||||||
struct uneDirection {
|
|
||||||
int ligne;
|
|
||||||
int colonne;
|
|
||||||
};
|
|
||||||
typedef struct uneDirection uneDirection;
|
|
||||||
|
|
||||||
unSnake creerSnake() {
|
|
||||||
|
|
||||||
unSnake snake;
|
|
||||||
|
|
||||||
uneCellule * teteSnake = malloc(sizeof(uneCellule));
|
|
||||||
uneCellule * queueSnake = malloc(sizeof(uneCellule));
|
|
||||||
uneCellule * milieuSnake = malloc(sizeof(uneCellule));
|
|
||||||
|
|
||||||
teteSnake->ligne = 1;
|
|
||||||
teteSnake->colonne = 4;
|
|
||||||
teteSnake->suiv = NULL;
|
|
||||||
|
|
||||||
milieuSnake->ligne = 1;
|
|
||||||
milieuSnake->colonne = 3;
|
|
||||||
milieuSnake->suiv = teteSnake;
|
|
||||||
|
|
||||||
queueSnake->ligne = 1;
|
|
||||||
queueSnake->colonne = 2;
|
|
||||||
queueSnake->suiv = milieuSnake;
|
|
||||||
|
|
||||||
snake.teteSnake = teteSnake;
|
|
||||||
snake.queueSnake = queueSnake;
|
|
||||||
|
|
||||||
return snake;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ajouterEnTete (unSnake * snake, int ligne, int colonne,int * aMange, int * fail) {
|
|
||||||
uneCellule * nouvelleTete = malloc (sizeof(uneCellule));
|
|
||||||
|
|
||||||
nouvelleTete->ligne = ligne;
|
|
||||||
nouvelleTete->colonne = colonne;
|
|
||||||
nouvelleTete->suiv = NULL;
|
|
||||||
|
|
||||||
snake->teteSnake->suiv = nouvelleTete;
|
|
||||||
grille[(snake->teteSnake->ligne)][(snake->teteSnake->colonne)] = CORP_SNAKE;
|
|
||||||
snake->teteSnake = snake->teteSnake->suiv;
|
|
||||||
|
|
||||||
if ( modeEvolueDansLequelLeSerpentPeutPasserATraversLesMursEtCeSansAvoirMalDuToutCeQuiEstTresPratiqueCarCaPermetDeJouerPlusLongtemps) {
|
|
||||||
if( snake->teteSnake->ligne < 0) {
|
|
||||||
snake->teteSnake->ligne = nbLignes - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if( snake->teteSnake->ligne > nbLignes-1) {
|
|
||||||
snake->teteSnake->ligne = 0;
|
|
||||||
}
|
|
||||||
else if (snake->teteSnake->colonne < 0) {
|
|
||||||
snake->teteSnake->colonne = nbColonnes - 1;
|
|
||||||
}
|
|
||||||
else if ( snake->teteSnake->colonne > nbColonnes-1) {
|
|
||||||
snake->teteSnake->colonne = 0;
|
|
||||||
}
|
|
||||||
else if (grille[snake->teteSnake->ligne][snake->teteSnake->colonne] == CORP_SNAKE) {
|
|
||||||
*fail = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if( snake->teteSnake->ligne < 0 ||
|
|
||||||
snake->teteSnake->ligne > nbLignes-1 ||
|
|
||||||
snake->teteSnake->colonne < 0 ||
|
|
||||||
snake->teteSnake->colonne > nbColonnes-1)
|
|
||||||
*fail = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if(!*fail) {
|
|
||||||
*aMange = (grille[snake->teteSnake->ligne][snake->teteSnake->colonne] == DU_MANGER) ? 1 : 0;
|
|
||||||
grille[snake->teteSnake->ligne][snake->teteSnake->colonne] = TETE_SNAKE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void supprimerQueue(unSnake * snake) {
|
|
||||||
uneCellule * auxi;
|
|
||||||
|
|
||||||
auxi = snake->queueSnake;
|
|
||||||
grille[snake->queueSnake->ligne][snake->queueSnake->colonne] = CASE_VIDE;
|
|
||||||
snake->queueSnake = snake->queueSnake->suiv;
|
|
||||||
free(auxi);
|
|
||||||
}
|
|
||||||
|
|
||||||
void initGrille() {
|
|
||||||
int i , j = 0;
|
|
||||||
for (i = 0; i<nbLignes;i++) {
|
|
||||||
for (j=0;j<nbColonnes;j++) {
|
|
||||||
grille[i][j] = CASE_VIDE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void afficherGrille(unSnake snake) {
|
|
||||||
int i , j = 0;
|
|
||||||
for (i = 0; i<nbLignes;i++) {
|
|
||||||
for (j=0;j<nbColonnes;j++) {
|
|
||||||
printw("%c",grille[i][j]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void gererEvenement(unSnake * snake, int touche, int * fail, uneDirection * direction,int * aMange) {
|
|
||||||
if(direction->ligne == 0) {
|
|
||||||
if (touche == KEY_UP){
|
|
||||||
direction->ligne = -1;
|
|
||||||
direction->colonne = 0;
|
|
||||||
}
|
|
||||||
if (touche == KEY_DOWN) {
|
|
||||||
direction->ligne = 1;
|
|
||||||
direction->colonne = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (direction->colonne == 0) {
|
|
||||||
if (touche == KEY_LEFT) {
|
|
||||||
direction->colonne = -1;
|
|
||||||
direction->ligne = 0;
|
|
||||||
}
|
|
||||||
if (touche == KEY_RIGHT) {
|
|
||||||
direction->colonne = 1;
|
|
||||||
direction->ligne = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ajouterEnTete(snake,snake->teteSnake->ligne + direction->ligne,snake->teteSnake->colonne + direction->colonne, aMange,fail);
|
|
||||||
if(!*aMange)
|
|
||||||
supprimerQueue(snake);
|
|
||||||
}
|
|
||||||
|
|
||||||
void genererDuManger(char ** grille) {
|
|
||||||
int ligne = 0;
|
|
||||||
int colonne = 0;
|
|
||||||
int done = 0;
|
|
||||||
|
|
||||||
srand(time(NULL));
|
|
||||||
while (!done){
|
|
||||||
ligne = rand() % (nbLignes-1);
|
|
||||||
colonne = rand() % (nbColonnes-1);
|
|
||||||
if(grille[ligne][colonne] == CASE_VIDE) {
|
|
||||||
grille[ligne][colonne] = DU_MANGER;
|
|
||||||
done = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void printFail() {
|
|
||||||
move(nbLignes/2 - 5/2,nbColonnes/2 - 37/2);
|
|
||||||
printw(" _/_/_/_/ _/_/ _/_/_/ _/ \n");
|
|
||||||
move(1 + nbLignes/2 - 5/2,nbColonnes/2 - 37/2);
|
|
||||||
printw(" _/ _/ _/ _/ _/ \n");
|
|
||||||
move(2 + nbLignes/2 - 5/2,nbColonnes/2 - 37/2);
|
|
||||||
printw(" _/_/_/ _/_/_/_/ _/ _/ \n");
|
|
||||||
move(3 + nbLignes/2 - 5/2,nbColonnes/2 - 37/2);
|
|
||||||
printw(" _/ _/ _/ _/ _/ \n");
|
|
||||||
move(4 + nbLignes/2 - 5/2,nbColonnes/2 - 37/2);
|
|
||||||
printw("_/ _/ _/ _/_/_/ _/_/_/_/ \n");
|
|
||||||
}
|
|
||||||
|
|
||||||
int main (int argc, char * argv []) {
|
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
int touche = 0;
|
|
||||||
int fail = 0;
|
|
||||||
unSnake snake = creerSnake();
|
|
||||||
uneDirection direction = {0,1};
|
|
||||||
int aMange = 1;
|
|
||||||
int nbCasesMangees = 0;
|
|
||||||
int delay = 0;
|
|
||||||
|
|
||||||
if (argc > 1) {
|
|
||||||
modeEvolueDansLequelLeSerpentPeutPasserATraversLesMursEtCeSansAvoirMalDuToutCeQuiEstTresPratiqueCarCaPermetDeJouerPlusLongtemps = 1;
|
|
||||||
}
|
|
||||||
initscr();
|
|
||||||
keypad(stdscr, TRUE);
|
|
||||||
noecho();
|
|
||||||
cbreak();
|
|
||||||
|
|
||||||
getmaxyx(stdscr,nbLignes,nbColonnes);
|
|
||||||
|
|
||||||
grille = malloc(nbLignes * sizeof(char *));
|
|
||||||
for (i=0;i<nbLignes;i++) {
|
|
||||||
grille[i] = malloc(nbColonnes*sizeof(char));
|
|
||||||
}
|
|
||||||
initGrille();
|
|
||||||
|
|
||||||
while (!fail) {
|
|
||||||
if (aMange){
|
|
||||||
genererDuManger(grille);
|
|
||||||
nbCasesMangees ++;
|
|
||||||
delay = 101 - nbCasesMangees;
|
|
||||||
delay = (delay < 60) ? 60 : delay;
|
|
||||||
timeout(delay);
|
|
||||||
}
|
|
||||||
afficherGrille(snake);
|
|
||||||
touche = getch();
|
|
||||||
gererEvenement(&snake,touche,&fail,&direction,&aMange);
|
|
||||||
erase();
|
|
||||||
}
|
|
||||||
|
|
||||||
timeout(5000);
|
|
||||||
erase();
|
|
||||||
printFail();
|
|
||||||
getch();
|
|
||||||
|
|
||||||
endwin();
|
|
||||||
return 0;
|
|
||||||
}
|
|
5
SAE_semestre1/menu.c
Normal file
5
SAE_semestre1/menu.c
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <graph.h>
|
||||||
|
|
||||||
|
afficher
|
@ -1,26 +0,0 @@
|
|||||||
#Avant
|
|
||||||
5 cases placés aléatoirement dans le quadrillage
|
|
||||||
1 sepgment = 1 case
|
|
||||||
si une pastille disparait une autre apparait
|
|
||||||
|
|
||||||
si serpent touche pastille --> pastille disparais -->
|
|
||||||
nb_pastille -=1
|
|
||||||
place aléatoirement une pastille
|
|
||||||
nb_pastille += 1
|
|
||||||
|
|
||||||
dimension 1 case
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#Après
|
|
||||||
il faut que la tête du serpent soit le mangeur on vas donc lappeler mangeur
|
|
||||||
crée 5 pastilles de même taille (une case)
|
|
||||||
tant que le jeu = True {
|
|
||||||
place 5 pastilles de façon random sur le quadrillage
|
|
||||||
si mangeur touche pastille{
|
|
||||||
nb_pastille -= 1 (delete)
|
|
||||||
place aleatoirement une pastille sur une case dans le quadrillage
|
|
||||||
nb_pastille += 1
|
|
||||||
}
|
|
||||||
Tout cela devient une condition, si cette condition = True alors taille serpent augmente
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
|||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <graph.h>
|
|
||||||
|
|
||||||
Le serpent = 10
|
|
||||||
- Segment en tête = "O"
|
|
||||||
- Segmennt en queue = "o"
|
|
||||||
Le serpent avance sans cesse
|
|
||||||
- Si le le segment en tête est sur la même case que la pastille alors "Segment en queue +2"
|
|
||||||
- Si le serpent touche une extremité alors "EXIT_FAILLURE"
|
|
||||||
|
|
||||||
Pour déplacer le serpent on utilise les flèches des touches directionnelles.
|
|
||||||
- "XK_Left" = flèches de gauche
|
|
||||||
- "XK_Right" = flèches de droite
|
|
||||||
- "XK_UP" = flèche du haut
|
|
||||||
- "XK_Down" = flèche du bas
|
|
||||||
|
|
||||||
on aura 4 variables : - int pomme
|
|
||||||
- int Segment_en_tête
|
|
||||||
- int Segment_en_queue
|
|
||||||
- int serpent
|
|
||||||
|
|
||||||
4 tableau : tableau[serpent], tableau[pastille], tableau[Segment_en_tête], tableau[Segment_en_queue]
|
|
||||||
|
|
||||||
Des conditions : if(tableau[Segment_en_tête] == tableau[pastille]){
|
|
||||||
Segment_en_queue +2
|
|
||||||
pastille--
|
|
||||||
} else {
|
|
||||||
On continu le jeu
|
|
||||||
}
|
|
||||||
if(tableau[Segment_en_tête] == limite (0)){
|
|
||||||
return EXIT_FAILLURE
|
|
||||||
}
|
|
||||||
if(tableau[Segment_en_tête] == tableau[serpent]){
|
|
||||||
return EXIT_FAILLURE
|
|
||||||
}
|
|
||||||
|
|
||||||
Boucles
|
|
29
SAE_semestre1/src/controle.c
Normal file
29
SAE_semestre1/src/controle.c
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <graph.h>
|
||||||
|
int t ;
|
||||||
|
int direction;
|
||||||
|
int go_on =0;
|
||||||
|
void Controle(){
|
||||||
|
while(ToucheEnAttente()){
|
||||||
|
t = Touche();
|
||||||
|
switch(t){
|
||||||
|
case XK_Left :
|
||||||
|
direction=3;
|
||||||
|
break;
|
||||||
|
case XK_Right:
|
||||||
|
direction=4;
|
||||||
|
break;
|
||||||
|
case XK_Up:
|
||||||
|
direction=1;
|
||||||
|
break;
|
||||||
|
case XK_Down:
|
||||||
|
direction=2;
|
||||||
|
break;
|
||||||
|
case XK_Escape:
|
||||||
|
go_on=0;
|
||||||
|
break;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
59
SAE_semestre1/src/main.c
Normal file
59
SAE_semestre1/src/main.c
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <graph.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include "../fichier.h/time.h"
|
||||||
|
#include "../fichier.h/controle.h"
|
||||||
|
#define CYCLE 10000L
|
||||||
|
int go_on=0;
|
||||||
|
int go_on=1;
|
||||||
|
/*Fonction Pour créer la première scene du jeu*/
|
||||||
|
void DessinerScene(){
|
||||||
|
snprintf(timer,6,"%02d:%02d", minute, seconde);
|
||||||
|
ChoisirCouleurDessin(CouleurParComposante(141,199,63));
|
||||||
|
RemplirRectangle(20,20,1160,700);
|
||||||
|
ChoisirCouleurDessin(CouleurParComposante(255,255,255));
|
||||||
|
EcrireTexte(10,760,timer,2);
|
||||||
|
serpent=ChargerSprite("serpent.png");
|
||||||
|
fond = ChargerSprite("fond.png");
|
||||||
|
|
||||||
|
|
||||||
|
for (i = 0; i < segment; i++){
|
||||||
|
AfficherSprite(serpent, x-(i*20), y);
|
||||||
|
pos_x[i]=x-(i*20);
|
||||||
|
pos_y[i]=y;
|
||||||
|
old_y[i]=pos_y[i];
|
||||||
|
old_x[i]=pos_x[i];
|
||||||
|
}
|
||||||
|
srand(time(NULL));
|
||||||
|
pomme=ChargerSprite("pomme.png");
|
||||||
|
for (p = 0; p < 5; p++) {
|
||||||
|
pommex[p] = ((rand() % (58)+1)*20);
|
||||||
|
pommey[p] = ((rand() % (35)+1)*20);
|
||||||
|
AfficherSprite(pomme, pommex[p], pommey[p]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
|
||||||
|
/* paramétrage de la fenêtre + chargement première scène */
|
||||||
|
InitialiserGraphique();
|
||||||
|
CreerFenetre(350,100,1200,800);
|
||||||
|
EffacerEcran(CouleurParComposante(0,0,0));
|
||||||
|
suivant = Microsecondes()+CYCLE;
|
||||||
|
old_seconde=(suivant/1000000)%10;
|
||||||
|
DessinerScene();
|
||||||
|
|
||||||
|
/*Boucle Principale du Programme*/
|
||||||
|
while(go_on){
|
||||||
|
Timer();
|
||||||
|
Controle();
|
||||||
|
Serpent();
|
||||||
|
Pomme();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* fermeture de la fenêtre si ECHAP pressé*/
|
||||||
|
FermerGraphique();
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
0
SAE_semestre1/src/pastille.c
Normal file
0
SAE_semestre1/src/pastille.c
Normal file
27
SAE_semestre1/src/serpent.c
Normal file
27
SAE_semestre1/src/serpent.c
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <graph.h>
|
||||||
|
|
||||||
|
int direction = 4;
|
||||||
|
int t;
|
||||||
|
void Controle(void){
|
||||||
|
printf("JSHUIHUS");
|
||||||
|
while(ToucheEnAttente()){
|
||||||
|
t = Touche();
|
||||||
|
switch(t){
|
||||||
|
case XK_Left:
|
||||||
|
printf("Gauche\n");
|
||||||
|
break;
|
||||||
|
case XK_Right :
|
||||||
|
printf("Droite\n");
|
||||||
|
break;
|
||||||
|
case XK_Up:
|
||||||
|
printf("Haut");
|
||||||
|
break;
|
||||||
|
case XK_Down:
|
||||||
|
printf("bas");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,18 +1,20 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <graph.h>
|
#include <graph.h>
|
||||||
#include "time.c"
|
/*#include "time.h"*/
|
||||||
|
|
||||||
#define HAUTEUR 20
|
#define HAUTEUR 20
|
||||||
#define LARGEUR 30
|
#define LARGEUR 30
|
||||||
#define TAILLE_CASE 20
|
#define TAILLE_CASE 20
|
||||||
#define ESPACE_NOIR 100
|
#define ESPACE_NOIR 100
|
||||||
|
|
||||||
|
int direction = 4;
|
||||||
|
int t;
|
||||||
|
|
||||||
void AfficherQuadrillage(){
|
void AfficherQuadrillage(){
|
||||||
int j;
|
int j;
|
||||||
int i;
|
int i;
|
||||||
InitialiserGraphique();
|
InitialiserGraphique();
|
||||||
|
|
||||||
CreerFenetre(10, 10, 30 * TAILLE_CASE, 20 * TAILLE_CASE + ESPACE_NOIR);
|
CreerFenetre(10, 10, 30 * TAILLE_CASE, 20 * TAILLE_CASE + ESPACE_NOIR);
|
||||||
|
|
||||||
for (i = 0; i < LARGEUR; i++) {
|
for (i = 0; i < LARGEUR; i++) {
|
||||||
@ -34,11 +36,3 @@ void AfficherQuadrillage(){
|
|||||||
RemplirRectangle((LARGEUR - 1) * TAILLE_CASE, 0, TAILLE_CASE, HAUTEUR * TAILLE_CASE);
|
RemplirRectangle((LARGEUR - 1) * TAILLE_CASE, 0, TAILLE_CASE, HAUTEUR * TAILLE_CASE);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void){
|
|
||||||
AfficherQuadrillage();
|
|
||||||
Temps();
|
|
||||||
Touche();
|
|
||||||
FermerGraphique();
|
|
||||||
return EXIT_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
37
SAE_semestre1/src/time.c
Normal file
37
SAE_semestre1/src/time.c
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <graph.h>
|
||||||
|
#define CYCLE 10000L
|
||||||
|
|
||||||
|
int seconde=0;
|
||||||
|
int minute=0;
|
||||||
|
int seconde_actuel=0;
|
||||||
|
int old_seconde=0;
|
||||||
|
char timer[6];
|
||||||
|
unsigned long int suivant;
|
||||||
|
|
||||||
|
void Update_Timer(){
|
||||||
|
snprintf(timer,6,"%02d:%02d", minute, seconde);
|
||||||
|
ChoisirCouleurDessin(CouleurParComposante(0,0,0));
|
||||||
|
RemplirRectangle(0,700,1200,800);
|
||||||
|
ChoisirCouleurDessin(CouleurParComposante(255,255,255));
|
||||||
|
EcrireTexte(10,760,timer,2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Timer(){
|
||||||
|
if(Microsecondes()> suivant){
|
||||||
|
suivant = Microsecondes()+CYCLE;
|
||||||
|
seconde_actuel = (suivant/1000000)%10;
|
||||||
|
if(seconde_actuel !=old_seconde){
|
||||||
|
old_seconde = seconde_actuel;
|
||||||
|
if(seconde == 59){
|
||||||
|
minute=minute+1;
|
||||||
|
seconde=0;
|
||||||
|
Update_Timer();
|
||||||
|
}else{
|
||||||
|
seconde = seconde+1;
|
||||||
|
Update_Timer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,20 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <graph.h>
|
|
||||||
|
|
||||||
void Temps(void) {
|
|
||||||
int minutes = 0;
|
|
||||||
int secondes = 0;
|
|
||||||
int tempsTotal = minutes * 60;
|
|
||||||
char x[6];
|
|
||||||
|
|
||||||
while(1) {
|
|
||||||
snprintf(x,6, "%02d:%02d", tempsTotal / 60, tempsTotal % 60);
|
|
||||||
ChoisirCouleurDessin(CouleurParComposante(0,0,0));
|
|
||||||
RemplirRectangle(10,400, 100,50);
|
|
||||||
ChoisirCouleurDessin(CouleurParComposante(255, 255, 255)); /* Blanc */
|
|
||||||
EcrireTexte(10,450, x , 2); /* Taille 2 pour un texte plus grand */
|
|
||||||
sleep(1);
|
|
||||||
tempsTotal++;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
#ifndef fonctions.h
|
|
||||||
#define fonctions.h
|
|
||||||
|
|
||||||
/*Variables fichier terrain.c*/
|
|
||||||
void variables(){
|
|
||||||
int j;
|
|
||||||
int i;
|
|
||||||
}
|
|
||||||
#endif
|
|
Loading…
Reference in New Issue
Block a user