Ajout time.c
This commit is contained in:
parent
315c543e94
commit
9b2b17d5be
9
SAE_semestre1/fonctions.h
Normal file
9
SAE_semestre1/fonctions.h
Normal file
@ -0,0 +1,9 @@
|
||||
#ifndef fonctions.h
|
||||
#define fonctions.h
|
||||
|
||||
/*Variables fichier terrain.c*/
|
||||
void variables(){
|
||||
int j;
|
||||
int i;
|
||||
}
|
||||
#endif
|
@ -0,0 +1,237 @@
|
||||
#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;
|
||||
}
|
@ -1,27 +1,44 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <graph.h>
|
||||
#include "time.c"
|
||||
|
||||
#define HAUTEUR 40
|
||||
#define LARGEUR 60
|
||||
#define HAUTEUR 20
|
||||
#define LARGEUR 30
|
||||
#define TAILLE_CASE 20
|
||||
#define ESPACE_NOIR 100
|
||||
|
||||
int AfficherRectangle(){
|
||||
void AfficherQuadrillage(){
|
||||
int j;
|
||||
int i;
|
||||
InitialiserGraphique();
|
||||
CreerFenetre(10,10,1500,1000);
|
||||
ChoisirCouleurDessin(CouleurParComposante(0,0,0));
|
||||
RemplirRectangle(0,0,1500,1000);
|
||||
ChoisirCouleurDessin(CouleurParComposante(73,162,37));
|
||||
RemplirRectangle(20,20,1450, 800);
|
||||
|
||||
ChoisirCouleurDessin(CouleurParComposante(255, 0, 0));
|
||||
RemplirRectangle(1460, 20, 30, 30);
|
||||
CreerFenetre(10, 10, 30 * TAILLE_CASE, 20 * TAILLE_CASE + ESPACE_NOIR);
|
||||
|
||||
for (i = 0; i < LARGEUR; i++) {
|
||||
for (j = 0; j < HAUTEUR; j++) {
|
||||
if ((i + j) % 2 == 0) {
|
||||
ChoisirCouleurDessin(CouleurParComposante(144, 238, 144));
|
||||
} else {
|
||||
ChoisirCouleurDessin(CouleurParComposante(0, 128, 0));
|
||||
}
|
||||
RemplirRectangle(i * TAILLE_CASE, j * TAILLE_CASE, TAILLE_CASE, TAILLE_CASE);
|
||||
}
|
||||
}
|
||||
ChoisirCouleurDessin(CouleurParComposante(0, 0, 0));
|
||||
RemplirRectangle(0, HAUTEUR * TAILLE_CASE, LARGEUR * TAILLE_CASE, ESPACE_NOIR);
|
||||
ChoisirCouleurDessin(CouleurParComposante(0, 0, 0));
|
||||
RemplirRectangle(0, 0, LARGEUR * TAILLE_CASE, TAILLE_CASE);
|
||||
RemplirRectangle(0, 0, TAILLE_CASE, HAUTEUR * TAILLE_CASE);
|
||||
RemplirRectangle(0, (HAUTEUR - 1) * TAILLE_CASE, LARGEUR * TAILLE_CASE, TAILLE_CASE);
|
||||
RemplirRectangle((LARGEUR - 1) * TAILLE_CASE, 0, TAILLE_CASE, HAUTEUR * TAILLE_CASE);
|
||||
}
|
||||
|
||||
int main(void){
|
||||
AfficherQuadrillage();
|
||||
Temps();
|
||||
Touche();
|
||||
FermerGraphique();
|
||||
}
|
||||
|
||||
int main(){
|
||||
AfficherRectangle();
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
20
SAE_semestre1/time.c
Normal file
20
SAE_semestre1/time.c
Normal file
@ -0,0 +1,20 @@
|
||||
#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++;
|
||||
}
|
||||
}
|
9
fonctions.h
Normal file
9
fonctions.h
Normal file
@ -0,0 +1,9 @@
|
||||
#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