Améliration Graphique ( non fini ) + code plus facile a lire
This commit is contained in:
113
scene.c
Normal file
113
scene.c
Normal file
@@ -0,0 +1,113 @@
|
||||
#include <graph.h>
|
||||
#include <time.h>
|
||||
#include <stdlib.h>
|
||||
#include "main.h"
|
||||
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
PIXELS gen_pastille(PIXELS *serpent,PIXELS *pastilles,int longueur_serpent)
|
||||
|
||||
/* nb_pastille = int nombre de pastille voulue , p_pastilles est un pointeur d'un tableau de pixels qui sont des pastilles*/
|
||||
/*-Elles se génèrent à des endroits qui peuvent être les mêmes ou gêner le snake*/
|
||||
{
|
||||
int x_pastille,y_pastille,i;
|
||||
int ok = 0;
|
||||
PIXELS pastille;
|
||||
do{
|
||||
ok = 0;
|
||||
x_pastille= ArrondirPixel(rand()%W_GAME);
|
||||
y_pastille = ArrondirPixel(rand()%H_GAME);
|
||||
for(i=0;i<longueur_serpent;i++)
|
||||
{
|
||||
if(x_pastille == serpent[i].x && y_pastille == serpent[i].y)
|
||||
{
|
||||
ok = 1; /* Check si la pastille se genère sur une coordonné du serpent */
|
||||
}
|
||||
if(x_pastille == pastilles[i].x && y_pastille == pastilles[i].y)
|
||||
{
|
||||
ok = 1;
|
||||
}
|
||||
|
||||
}
|
||||
}while(ok);
|
||||
|
||||
if(x_pastille < DECALEMENT)
|
||||
{
|
||||
x_pastille =+ DECALEMENT;
|
||||
}
|
||||
|
||||
if(y_pastille < DECALEMENT)
|
||||
{
|
||||
y_pastille =+ DECALEMENT;
|
||||
}
|
||||
|
||||
|
||||
pastille.x = x_pastille ;
|
||||
pastille.y = y_pastille ;
|
||||
|
||||
return pastille;
|
||||
}
|
||||
|
||||
void InitialisationDuSerpent(PIXELS *p_serpent) /* L'initialisation du serpent */
|
||||
{
|
||||
int x_millieu = 0, y_millieu = 0 , compteur = 0;
|
||||
x_millieu = T_PIXEL*30; /* 30 = 60 colonnes divisé par 2*/
|
||||
y_millieu = T_PIXEL*20; /* 20 = 40 colonnes divisé par 2*/
|
||||
ChoisirEcran(2);
|
||||
ChargerImage("./images/SnakePart.png",x_millieu,y_millieu,0,0,T_PIXEL,T_PIXEL);
|
||||
|
||||
p_serpent[0].x = x_millieu;
|
||||
p_serpent[0].y = y_millieu;
|
||||
for(compteur=0;compteur<9;compteur++) /*Commence par 1 car p_serpent index 0 initialisées pour la tête et 2 + 2x9 = 10 couples de coordonnées 2D */
|
||||
{
|
||||
p_serpent[compteur+1].x = p_serpent[compteur].x+T_PIXEL;
|
||||
p_serpent[compteur+1].y = p_serpent[compteur].y;
|
||||
|
||||
ChargerImage("./images/SnakePart.png",p_serpent[compteur+1].x,p_serpent[compteur+1].y,0,0,T_PIXEL,T_PIXEL);
|
||||
}
|
||||
}
|
||||
|
||||
void InitialiserPastilles(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent) {
|
||||
int i;
|
||||
|
||||
srand(time(NULL));
|
||||
|
||||
for (i = 0; i < PASTILLES; i++) {
|
||||
pastilles[i] = gen_pastille(serpent,pastilles,longueur_serpent);
|
||||
ChargerImage("./images/PommePastille.png",pastilles[i].x,pastilles[i].y,0,0,T_PIXEL,T_PIXEL);
|
||||
}
|
||||
}
|
||||
|
||||
void DessinerScene(PIXELS *pastilles, PIXELS *serpent, int longueur_serpent) /* Dessine la scène */
|
||||
{
|
||||
couleur bg;
|
||||
couleur border;
|
||||
ChoisirEcran(2);
|
||||
border=CouleurParComposante(78, 93, 47);
|
||||
bg=CouleurParComposante(171, 204, 104);
|
||||
|
||||
ChoisirCouleurDessin(border);
|
||||
RemplirRectangle(0,0,930,630);
|
||||
|
||||
ChoisirCouleurDessin(bg);
|
||||
RemplirRectangle(0,630,930,650);
|
||||
|
||||
ChoisirCouleurDessin(border);
|
||||
RemplirRectangle(0,650,930,15);
|
||||
|
||||
ChoisirCouleurDessin(bg);
|
||||
RemplirRectangle(T_PIXEL,T_PIXEL,W_GAME,H_GAME);
|
||||
InitialiserPastilles(pastilles,serpent,longueur_serpent);
|
||||
InitialisationDuSerpent(serpent);
|
||||
}
|
||||
Reference in New Issue
Block a user