Exemple #1
0
void printScreen(int snake[TAILLE_SNAKE][2], int len_snake, int pommes[20][2], int len_pommes, unsigned long int time, int score){
  EffacerEcran(CouleurParNom("black"));
  printTerrain(snake, len_snake, pommes, len_pommes);
  ChoisirCouleurDessin(CouleurParNom("white"));
  printScore(score);
  printTime(time);
  CopierZone(1,0,0,0,60*TAILLE_CASE+2*BORD,40*TAILLE_CASE+BORD+40,0,0);
}
Exemple #2
0
void AfficherScore(int score)
{ 
  char scoreTab[8] = {'0','0','0','0','0','0','0','\0'};
  sprintf(scoreTab,"%07d",score);
  ChoisirCouleurDessin(CouleurParNom("black"));
  RemplirRectangle(500,NB_PIXEL_Y_JEU,340,54);
  ChoisirCouleurDessin(CouleurParNom("white"));
  EcrireTexte(740,590,scoreTab,2);
}
Exemple #3
0
void AfficherTemps(int seconde, int minute, int carre, int* score) // Fonction qui affiche le temps
{
  char tempsTab[6] = {};
  sprintf(tempsTab,"%02d:%02d ",minute,seconde);
  ChoisirCouleurDessin(CouleurParNom("black"));
  RemplirRectangle(0,NB_PIXEL_Y_JEU,500,54);
  ChoisirCouleurDessin(CouleurParNom("white"));
  EcrireTexte(30,590,tempsTab,2);
} 
Exemple #4
0
void AfficherSerpent(Coordonnees* serpent, int tailleSerpent, int carre, Coordonnees queue){
  int i = 0;
  usleep(60000); // Vitesse du serpent
  ChoisirCouleurDessin(CouleurParNom("white"));
  RemplirRectangle(queue.x*carre,queue.y*carre,carre,carre);
  ChoisirCouleurDessin(CouleurParComposante(27,94,32)); // Vert fonce
  RemplirRectangle(serpent[0].x*carre,serpent[0].y*carre,carre,carre);
  for(i = 1; i < tailleSerpent; i++)
    {
      ChoisirCouleurDessin(CouleurParNom("green")); // Vert clair
      RemplirRectangle(serpent[i].x*carre,serpent[i].y*carre,carre,carre);
    }
}
Exemple #5
0
void AfficherSerpentLC(Serpent* serpent, int carre, Coordonnees queue){
  EltSerpent* s;
  usleep(VITESSE_SERPENT); // Vitesse du serpent
  ChoisirCouleurDessin(CouleurParNom("white"));
  RemplirRectangle(queue.x*carre,queue.y*carre,carre,carre);
  for(s = serpent->tete; s ->suivant!= NULL; s = s->suivant)
    {
      ChoisirCouleurDessin(CouleurParNom("green")); // Vert clair
      RemplirRectangle(s->element.x*carre,s->element.y*carre,carre,carre);
    }
  ChoisirCouleurDessin(CouleurParComposante(27,94,32)); // Vert fonce
  RemplirRectangle(s->element.x*carre,s->element.y*carre,carre,carre);
}
Exemple #6
0
int CreerPomme(int carre, Pomme* tabPomme, Obstacles* tabObstacle, int tailleSerpent, Coordonnees* serpent){ // Affiche une pomme au hasard sur la map
  int i,j,k;
  srand(time(NULL));
  for(i = 0; i < NB_POMME; i++)
    {
      if(tabPomme[i].flagP == 0) // Si il n'y a pas de pomme sur la map
	{
	  tabPomme[i].flagP = 1;
	  tabPomme[i].x = (rand() % (MAXGRILLEX - MINGRILLE + 1)) + MINGRILLE;
	  tabPomme[i].y = (rand() % (MAXGRILLEY - MINGRILLE + 1)) + MINGRILLE;
	  for(k = 0;  k < NB_OBSTACLE; k++)
	    {		
	      while(tabPomme[i].x == tabObstacle[k].x && tabPomme[i].y == tabObstacle[k].y)
		{
		  tabPomme[i].x = (rand() % (MAXGRILLEX - MINGRILLE + 1)) + MINGRILLE; // Permet d'obtenir une valeur aléatoire entre 0 et 60 sachant que la grille est de 60 par 40
		  tabPomme[i].y = (rand() % (MAXGRILLEY - MINGRILLE + 1)) + MINGRILLE; // Permet d'obtenir une valeur aléatoire entre 0 et 40
		  for(j = 1; j < tailleSerpent; j++)
		    {
		      if(tabPomme[i].x == serpent[j].x && tabPomme[i].x == serpent[j].y)
			{
			  tabPomme[i].x = (rand() % (MAXGRILLEX - MINGRILLE + 1)) + MINGRILLE; // Permet d'obtenir une valeur aléatoire entre 0 et 60 sachant que la grille est de 60 par 40
			  tabPomme[i].y = (rand() % (MAXGRILLEY - MINGRILLE + 1)) + MINGRILLE; // Permet d'obtenir une valeur aléatoire entre 0 et 40
			}
		    }
		}
	    }
	  ChoisirCouleurDessin(CouleurParNom("red"));
	  RemplirRectangle(tabPomme[i].x*carre,tabPomme[i].y*carre,carre,carre); // On multiplie les valeurs aléatoires obtenues à la taille d'un carré afin d'obtenir une position aléatoire d'un carré
	}
    }
}
Exemple #7
0
void CreerObstacles(int carre, Obstacle* tabObstacle){ // Affiche une pomme au hasard sur la map
  int i;
  for(i = 0; i < NB_OBSTACLE; i++)
    {
      tabObstacle[i].x = (rand() % (MAXGRILLEX - MINGRILLE + 1)) + MINGRILLE; // Permet d'obtenir une valeur aléatoire entre 0 et 60 sachant que la grille est de 60 par 40
      tabObstacle[i].y = (rand() % (MAXGRILLEY - MINGRILLE + 1)) + MINGRILLE; // Permet d'obtenir une valeur aléatoire entre 0 et 40
      ChoisirCouleurDessin(CouleurParNom("black"));
      RemplirRectangle(tabObstacle[i].x*carre,tabObstacle[i].y*carre,carre,carre); // On multiplie les valeurs aléatoires obtenues à la taille d'un carré afin d'obtenir une position aléatoire d'un carré
    }
}
Exemple #8
0
void DessinerGrille(int carre) // Fonction qui dessine la grille du jeu (60x40)
{
  ChoisirCouleurDessin(CouleurParNom("black"));
  int i;
  for(i = 0; i <= NB_PIXEL_X_JEU; i = i+carre)
    {
      DessinerSegment(i,0,i,NB_PIXEL_Y_JEU);
    }
  for(i = 0; i <= NB_PIXEL_Y_JEU; i = i+carre)
    {
      DessinerSegment(0,i,NB_PIXEL_X_JEU,i);
    }
}
Exemple #9
0
int CreerPomme(int carre, Pomme* tabPomme, Obstacle* tabObstacle){ // Affiche une pomme au hasard sur la map
  int i,j,k;
  for(i = 0; i < NB_POMME; i++)
    {
      if(tabPomme[i].flagP == 0) // Si il n'y a pas de pomme sur la map
	{
	  tabPomme[i].flagP = 1;
	  tabPomme[i].x = (rand() % (MAXGRILLEX - MINGRILLE + 1)) + MINGRILLE;
	  tabPomme[i].y = (rand() % (MAXGRILLEY - MINGRILLE + 1)) + MINGRILLE;
	  for(k = 0;  k < NB_OBSTACLE; k++)
	    {		
	      while(tabPomme[i].x == tabObstacle[k].x && tabPomme[i].y == tabObstacle[k].y)
		{
		  tabPomme[i].x = (rand() % (MAXGRILLEX - MINGRILLE + 1)) + MINGRILLE; // Permet d'obtenir une valeur aléatoire entre 0 et 60 sachant que la grille est de 60 par 40
		  tabPomme[i].y = (rand() % (MAXGRILLEY - MINGRILLE + 1)) + MINGRILLE; // Permet d'obtenir une valeur aléatoire entre 0 et 40
		}
	    }
	}
      ChoisirCouleurDessin(CouleurParNom("red"));
      RemplirRectangle(tabPomme[i].x*carre,tabPomme[i].y*carre,carre,carre);
    }
}
Exemple #10
0
void NettoyerEcran(){
  ChoisirCouleurDessin(CouleurParNom("white"));
  RemplirRectangle(0,0,NB_PIXEL_X_JEU,NB_PIXEL_Y_JEU);
}
Exemple #11
0
void printScreen(int snake[300][2], int len_snake, int pommes[20][2], int len_pommes, int time, int score){
  EffacerEcran(CouleurParNom("black"));
  printTerrain(snake, len_snake, pommes, len_pommes);
  printScore(score);
  printTime(time);
}
Exemple #12
0
void AfficherGameOver(){
  ChoisirCouleurDessin(CouleurParNom("red"));
  EcrireTexte(340,260,"Vous avez perdu !",2);	
  EcrireTexte(120,290,"Appuyez sur n'importe quelle touche pour recommencer",2);
  EcrireTexte(260,320,"Appuyez sur Echap pour quitter",2);
}
Exemple #13
0
int main() // Fonction principale
{
  int carre = NB_PIXEL_X_JEU/60;
  unsigned long suivant;
  suivant= Microsecondes()+delta;
  int i = 0;
  int etatJeu = 1;
  int score = 0;
  int direction = 0;
  int seconde = 0;
  int minute = 0;
  int tailleSerpent = 10;
  Coordonnees serpent[20];
  serpent[0].x = CENTRE_X_GRILLE;
  serpent[0].y = CENTRE_Y_GRILLE;
  Coordonnees queue;
  Pomme tabPomme[NB_POMME] = {};
  Obstacles tabObstacle[NB_OBSTACLE] = {};
  Coordonnees tete;
  InitialiserGraphique();
  CreerFenetre(10,10,NB_PIXEL_X_FENETRE,NB_PIXEL_Y_FENETRE);
  while(etatJeu){
    InitialiserVariable(&score,&direction,&tailleSerpent,&seconde,&minute,serpent);
    for (i = 0 ; i < NB_POMME; i++) // Initialisation du serpent
      {
	tabPomme[i].x = -1;
	tabPomme[i].y = -1;
	tabPomme[i].flagP = 0;
      }
    for (i = 1 ; i < TAILLE_MAX_SNAKE; i++) // Initialisation du serpent
      {
	serpent[i].x = -1;
	serpent[i].y = -1;
      }
    NettoyerEcran();
    RemplirRectangle(0,NB_PIXEL_Y_JEU,1080,carre*3); // Bande noir en bas
    for(i = 0; i < tailleSerpent; i++)
      {
	ChoisirCouleurDessin(CouleurParComposante(27,94,32));
	RemplirRectangle(serpent[i].x*carre,serpent[i].y*carre,carre,carre);
      }
    AfficherScore(score);
    AfficherTemps(seconde,minute,carre,&score);
    CreerObstacles(carre,tabObstacle);
    while(ToucheEnAttente() != 1)
      {
      }
    while(1)//Boucle principale
      {
	// DessinerGrille(carre);
	direction = DirectionSerpent(direction);
	if (Microsecondes()>suivant) // Si une seconde est passé
	  {
	    suivant=Microsecondes()+delta;
	    seconde++;
	    if(seconde == 60){
	      seconde = 0;
	      minute++;
	    }
	    AfficherTemps(seconde,minute,carre,&score);
	  }
	queue = DeplacerSerpent(carre,direction,serpent,tailleSerpent);
	tete = serpent[0];
	tailleSerpent = VerifieManger(&score,tete,tabPomme,tailleSerpent);
	CreerPomme(carre,tabPomme,tabObstacle,tailleSerpent,serpent);
	if(VerifieCollisionSerpent(tete,serpent,tailleSerpent,tabObstacle)){// Touche un mur => GAME OVER
	  break;
	}
	AfficherSerpent(serpent,tailleSerpent,carre,queue);
      }
    while(ToucheEnAttente() != 1)
      { 
	ChoisirCouleurDessin(CouleurParNom("red"));
	EcrireTexte(340,260,"Vous avez perdu !",2);	
	EcrireTexte(120,290,"Appuyez sur n'importe quelle touche pour recommencer",2);
	EcrireTexte(260,320,"Appuyez sur Echap pour quitter",2);	
      }
    if(Touche() == XK_Escape)
      {
	break;
      }
  }
  FermerGraphique();
  return EXIT_SUCCESS;
}