#include <stdlib.h> #include <stdio.h> #include <graph.h> #include <time.h> #define W_WINDOW 1200 /* Largeur de la fenêtre*/ #define H_WINDOW 800 /* Hauteur de la fenêtre*/ #define W_GAME 900 #define H_GAME 600 #define T_PIXEL 15 /* Taille d'un pixel*/ #define DECALEMENT 30 #define delta 1000000L int ArrondirPixel(int nombre) /* Calcule un arrondi du pixel pour pouvoir respecter la norme des 40 lignes et 60 colonnes */ { /* Calcul du reste de la division par 15 */ int reste = nombre % 15; /* Calcul de l'arrondi au multiple de 15 le plus proche */ int arrondi = (reste <= 7) ? nombre - reste : nombre + (15 - reste); return arrondi; } void gen_pastille(int nb_pastille, int *p_pastilles) /* Ajout des pointeurs pour le futur tableau de pastilles */ /* nb_pastille = int nombre de pastille voulue , p_pastilles est un pointeur d'un tableau de pixels qui sont des pastilles*/ /*Générer une pastille dans la grid*/ /*Seulement le code n'est pas complet*/ /*-Elles se génèrent à des endroits qui peuvent être les mêmes ou gêner le snake*/ { couleur r; int x_pastille,y_pastille,i; r=CouleurParNom("red"); srand(time(NULL)); for(i=0;i<nb_pastille;i++) { x_pastille= ArrondirPixel(rand()%W_GAME); y_pastille = ArrondirPixel(rand()%H_GAME); if(x_pastille < DECALEMENT) { x_pastille =+ DECALEMENT; } else if(x_pastille >W_GAME-DECALEMENT) { x_pastille - DECALEMENT; } if(y_pastille < DECALEMENT) { y_pastille =+ DECALEMENT; } else if(y_pastille > H_GAME-DECALEMENT) { y_pastille - DECALEMENT; } printf("x : %d ; y : %d\n",x_pastille,y_pastille); ChoisirCouleurDessin(r); RemplirRectangle(x_pastille,y_pastille,T_PIXEL,T_PIXEL); } } void DessinerScene(int* pastilles) /* Dessine la scène */ { couleur c; c=CouleurParNom("lightgreen"); ChoisirCouleurDessin(c); RemplirRectangle(T_PIXEL,T_PIXEL,W_GAME,H_GAME); gen_pastille(5,pastilles); } void InitialisationDuSerpent() /* L'initialisation du serpent */ { } int main() { unsigned long suivant; int go_on=1; int n; int x_pastille,y_pastille; int p_serpent[100]; int pastilles[5]; InitialiserGraphique(); CreerFenetre(10,10,W_WINDOW,H_WINDOW); /* Peut être changer cette ligne avec la fonction Maxx et Maxy fournie dans graph.h ??*/ ChoisirTitreFenetre("SNAKE SAE11 IN C"); DessinerScene(pastilles); while(go_on) /* Lancement du cycle pour les Inputs et le Jeu*/ { if (ToucheEnAttente() == 1) { switch (Touche()) { case XK_Up: printf("Touche haut\n"); break; case XK_Down: printf("Touche bas\n"); break; case XK_Left: printf("Touche gauche\n"); break; case XK_Right: printf("Touche droite\n"); break; default: printf("Autre touche\n"); break; } } else { if (Microsecondes()>suivant) { n++; suivant=Microsecondes()+delta; } } } FermerGraphique(); return EXIT_SUCCESS; }