begin process at 2012 05 27 19:12:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > SERPENT

SERPENT


 Information sur la source

Note :
1 / 10 - par 1 personne
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Jeux Niveau :Débutant Date de création :08/12/2003 Date de mise à jour :05/01/2004 11:56:50 Vu :3 003

Auteur : ivanoff1

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

je commence un jeu  de serpent en turbo c++ 3....
le principe du jeu est opérationnel mais je suis en train de l'amélioré!!!!

Source

  • /* PIXEL.CPP--Example from Chapter 5 of User's Guide */
  • #include <graphics.h> // declarations for graphics library
  • #include <conio.h> // for getch() function
  • #include <dos.h>
  • //#include <time.h>
  • #include <iostream.h>
  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <string.h>
  • //************CONSTANTES***********************************************
  • #define MinI 0
  • #define MinJ 0
  • #define MaxI 100
  • #define MaxJ 110
  • //************VARIABLES GLOBALES***************************************
  • struct TDep
  • {
  • int I;
  • int J;
  • int Dir;
  • };
  • TDep Coin[5000];
  • struct Tfleche
  • {
  • int h;
  • int b;
  • int g;
  • int d;
  • };
  • Tfleche fl;
  • struct TDirection
  • {
  • int Avant;
  • int Vers;
  • };
  • struct Tserpent
  • {
  • int I;
  • int J;
  • };
  • Tserpent Serpent[5000];
  • int hasardI,hasardJ;
  • int i,Idebut,Jdebut,Ifin,Jfin,Vitesse;
  • int NouveauCoin,DepCoin,Av;
  • int TailleJ,Coul;
  • int Point;
  • TDirection Direction; //1 pour gauche, 2 pour en bas, 3 pour la droite, 5 pour en haut
  • //************PROTOTYPAGES*********************************************
  • void INITgraph(); //On initialise la carte graphique
  • void InitSerpent(int coul); //On initialise le serpent et on le dessine
  • void GestionTete(); //On gSre la direction de la t^te pour un cycle de jeu
  • void GestionQueue(); //Idem, pour la queue
  • void INITt(); //On initialise les tableaux . z,ro
  • int MangeCorps(); //Fonction qui renvoie 1, si le serpent . manger son corps
  • void RempSerp(); //On remplit les cases du tableaux du serpent avec les coordonn,es actuelles
  • void DessinerContour(); //On dessine les murs
  • void AffichePomme(); //On affiche une pomme avec des coordonn,es au hasard
  • void MangePomme(); //On gSre si on doit afficher une nouvelle pomme
  • void RempSerpPomme(); //On remplie le tableau du serpent quand il mange une pomme
  • void SupprimeQueue(); //On supprime tous les pixels de la queue
  • void DessineLangue(); //On dessine une langue . un moment donn, (g,n,r, au hasard)
  • //************DEBUT DES FONCTIONS ET PROCEDURES************************
  • int main()
  • {
  • //time_t t;
  • INITgraph(); //Initialisation de la carte graphique
  • INITt();
  • fl.h=5;//Touches de direction
  • fl.b=2;//pourront ^tre chang,es
  • fl.g=1;
  • fl.d=3;
  • NouveauCoin=0;
  • DepCoin=0;
  • Av=0;
  • Coin[NouveauCoin].Dir=fl.d;
  • TailleJ=40;
  • Coul=6;
  • Point=0;
  • int midx = MinJ+20;
  • int midy = MaxI+20;
  • char *ch;
  • InitSerpent(Coul); //On dessine le serpent du d,but
  • Coin[NouveauCoin].I=Idebut;
  • Coin[NouveauCoin].J=Jdebut;
  • Vitesse=50; //On rSgle la vitesse
  • Direction.Avant=Idebut;
  • Direction.Vers=fl.d; //Direction du d,but
  • DessinerContour();
  • AffichePomme();
  • while((MangeCorps()!=1) && (Idebut>MinI) && (Idebut<MaxI) && (Jdebut>MinJ) && (Jdebut<MaxJ))
  • {
  • GestionTete();
  • GestionQueue();
  • MangePomme();
  • DessinerContour();
  • window(10,10,20,20);
  • cout<<"\\nPoints Gagn,s : "<<Point<<"\\n";
  • cout<<"Longueur du serpent : "<<TailleJ<<"\\n";
  • cout<<"Tete (i) : "<<Idebut<<"\\n";
  • cout<<"Tete (j): "<<Jdebut<<"\\n";
  • cout<<"Coordonn,es de la pomme : \\n";
  • cout<<" I : "<<hasardI<<"\\n";
  • cout<<" J : "<<hasardJ<<"\\n";
  • cout<<"Vitesse : "<<Vitesse;
  • delline;
  • delay(Vitesse);
  • }
  • closegraph();//on remet la configuration par d,faut de l',cran
  • getch();
  • return 0;
  • }
  • void MangePomme()
  • {
  • if((Idebut==hasardI)&&(Jdebut==hasardJ)||(Idebut==hasardI+1)&&
  • (Jdebut==hasardJ)||(Idebut==hasardI)&&(Jdebut==hasardJ+1)||
  • (Idebut==hasardI-1)&&(Jdebut==hasardJ)||
  • (Idebut==hasardI)&&(Jdebut==hasardJ-1))
  • //Si les coordonn,es de la t^te corrspondent avec celle de la pomme
  • {
  • //On efface la pomme pr,c,dente qui a ,t, mang,e
  • putpixel(hasardJ,hasardI,0);
  • putpixel(hasardJ+1,hasardI,0);
  • putpixel(hasardJ,hasardI+1,0);
  • putpixel(hasardJ-1,hasardI,0);
  • putpixel(hasardJ,hasardI-1,0);
  • switch(Direction.Vers)
  • {
  • case 1 :Jdebut--;
  • putpixel(Jdebut,Idebut,Coul);
  • break;
  • case 2 :
  • Idebut++;
  • putpixel(Jdebut,Idebut,Coul);
  • break;
  • case 3 :
  • Jdebut++;
  • putpixel(Jdebut,Idebut,Coul);
  • break;
  • case 5 :
  • Idebut--;
  • putpixel(Jdebut,Idebut,Coul);
  • break;
  • }
  • Point++;
  • if(Point%10==0)
  • Vitesse-=3;//Augmentation de la vitesse
  • RempSerpPomme();
  • AffichePomme();
  • }
  • }
  • void RempSerpPomme()
  • {
  • TailleJ++;
  • for(int i=1;i<=TailleJ;i++)
  • {
  • Serpent[i].I=Serpent[i-1].I;//on d,place les coordonn,es vers la droite dans le tableau
  • Serpent[i].J=Serpent[i-1].J;
  • }
  • Serpent[0].I=Ifin;//le d,but du serpent prend les nouvelles coordonn,es
  • Serpent[0].J=Jfin;
  • }
  • void AffichePomme()
  • {
  • int Val;
  • Val=1;
  • randomize();
  • do
  • {
  • hasardJ=(rand()%(MaxJ-1))+2; //les nouvelles coordonn,es th,oriques de la pomme
  • hasardI=(rand()%(MaxI-1))+1;
  • //Il ne faut pas que les coordonn,es de la pomme tombent sur le serpent
  • for(int j=0;j<=TailleJ;j++)
  • {
  • if((Serpent[j].I!=hasardI)&&(Serpent[j].J!=hasardJ))
  • Val=0;
  • }
  • }while(Val==1);
  • putpixel(hasardJ,hasardI,2);
  • putpixel(hasardJ+1,hasardI,2);
  • putpixel(hasardJ,hasardI+1,2);
  • putpixel(hasardJ-1,hasardI,2);
  • putpixel(hasardJ,hasardI-1,2);
  • }
  • void DessinerContour()
  • {
  • int i,j;
  • for(i=MinI;i<=MaxI;i++)
  • {
  • putpixel(MinI,i,3);
  • putpixel(MaxJ,i,3);
  • }
  • for(j=MinJ;j<=MaxJ;j++)
  • {
  • putpixel(j,MinJ,3);
  • putpixel(j,MaxI,3);
  • }
  • }
  • void RempSerp()
  • {
  • int i;
  • for(i=0;i<=(TailleJ-1);i++)
  • {
  • Serpent[i].I=Serpent[i+1].I;
  • Serpent[i].J=Serpent[i+1].J;
  • }
  • }
  • int MangeCorps()
  • {
  • int i;
  • int Toucher;
  • Toucher=0;
  • for(i=0;i<TailleJ-1;i++)
  • {
  • if((Serpent[i].I==Idebut) && (Serpent[i].J)==Jdebut)
  • Toucher=1;
  • }
  • return(Toucher);
  • }
  • void INITt()
  • {
  • int i;
  • for(i=0;i<=5000;i++)
  • {
  • Serpent[i].I=0;
  • Serpent[i].J=0;
  • Coin[i].I=0;
  • Coin[i].J=0;
  • Coin[i].Dir=0;
  • }
  • }
  • void GestionTete()
  • {
  • int Touche;
  • if(kbhit()) //Si on a appuy, sur une touche
  • {
  • Coin[NouveauCoin].I=Idebut; //On r,cupSre les nouvelles...
  • Coin[NouveauCoin].J=Jdebut; //...coordonn,es pour chaque changement de direction
  • Touche=getch(); //On r,cupSre la valeur de la touche
  • switch(Touche)
  • {
  • //pour chaque direction : il ne faut pas...
  • //qu'on soit sur la m^me ligne si on veut faire ...
  • //demi-tour
  • case 49 : if(Direction.Avant!=Idebut)
  • {
  • Direction.Vers=fl.g;
  • Direction.Avant=Idebut;
  • }break;
  • case 50 : if(Direction.Avant!=Jdebut)
  • {
  • Direction.Vers=fl.b;
  • Direction.Avant=Jdebut;
  • }break;
  • case 51 : if(Direction.Avant!=Idebut)
  • {
  • Direction.Vers=fl.d;
  • Direction.Avant=Idebut;
  • }break;
  • case 53 : if(Direction.Avant!=Jdebut)
  • {
  • Direction.Vers=fl.h;
  • Direction.Avant=Jdebut;
  • }break;
  • }
  • NouveauCoin++;
  • Coin[NouveauCoin].Dir=Direction.Vers;
  • }
  • else //Si on n'a press, aucune touche, le serpent...
  • { //...continue . avancer dans la m^me direction
  • switch(Direction.Vers)
  • {
  • case 1 : Jdebut--;
  • Serpent[TailleJ].I=Idebut;//pour connaOtre les coordonn,es de tout le serpent
  • Serpent[TailleJ].J=Jdebut;
  • RempSerp();break;
  • case 2 : Idebut++;
  • Serpent[TailleJ].I=Idebut;//pour connaOtre les coordonn,es de tout le serpent
  • Serpent[TailleJ].J=Jdebut;
  • RempSerp();break;
  • case 3 : Jdebut++;
  • Serpent[TailleJ].I=Idebut;//pour connaOtre les coordonn,es de tout le serpent
  • Serpent[TailleJ].J=Jdebut;
  • RempSerp();break;
  • case 5 : Idebut--;
  • Serpent[TailleJ].I=Idebut;//pour connaOtre les coordonn,es de tout le serpent
  • Serpent[TailleJ].J=Jdebut;
  • RempSerp();break;
  • }
  • Coin[NouveauCoin].I=Idebut; //On r,cupSre les nouvelles...
  • Coin[NouveauCoin].J=Jdebut; //...coordonn,es pour chaque changement de direction
  • }
  • putpixel(Jdebut,Idebut,Coul);//on ajoute un pixel pour la t^te
  • DessineLangue();
  • switch(Direction.Vers)
  • {
  • case 3:
  • putpixel(Jdebut,Idebut-1,Coul);
  • putpixel(Jdebut,Idebut+1,Coul);break;
  • case 1:
  • putpixel(Jdebut,Idebut-1,Coul);
  • putpixel(Jdebut,Idebut+1,Coul);break;
  • case 2:
  • putpixel(Jdebut-1,Idebut,Coul);
  • putpixel(Jdebut+1,Idebut,Coul);break;
  • case 5:
  • putpixel(Jdebut-1,Idebut,Coul);
  • putpixel(Jdebut+1,Idebut,Coul);break;
  • }
  • }
  • void DessineLangue()
  • {
  • switch(Direction.Vers)
  • {
  • case 1 :
  • putpixel(Jdebut-1,Idebut,12);break;
  • case 2:
  • putpixel(Jdebut,Idebut+1,5);break;
  • case 3:
  • putpixel(Jdebut+1,Idebut,5);break;
  • case 5 :
  • putpixel(Jdebut,Idebut-1,5);break;
  • }
  • }
  • void GestionQueue()
  • {
  • switch(Coin[DepCoin].Dir)
  • //selon la direction du Prochain coin (angle o- la t^te du serpent change de direction)
  • {
  • case 1 : if(Jfin>(Coin[DepCoin].J))
  • {
  • Jfin--;
  • Serpent[0].I=Ifin;
  • Serpent[0].J=Jfin;
  • }
  • else
  • DepCoin++;break;
  • case 2 :if(Ifin<(Coin[DepCoin].I))
  • {
  • Serpent[0].I=Ifin;
  • Serpent[0].J=Jfin;
  • Ifin++;
  • }
  • else
  • DepCoin++;break;
  • case 3 : if(Jfin<(Coin[DepCoin].J))
  • {
  • Serpent[0].I=Ifin;
  • Serpent[0].J=Jfin;
  • Jfin++;
  • }
  • else
  • DepCoin++;break;
  • case 5 : if(Ifin>Coin[DepCoin].I)
  • {
  • Serpent[0].I=Ifin;
  • Serpent[0].J=Jfin;
  • Ifin--;
  • }
  • else
  • DepCoin++;break;
  • }
  • SupprimeQueue(); //on efface un pixel de la queue
  • }
  • void SupprimeQueue()
  • {
  • switch(Coin[DepCoin].Dir)
  • {
  • case 3:
  • putpixel(Jfin,Ifin,0);
  • putpixel(Jfin,Ifin-1,0);
  • putpixel(Jfin,Ifin+1,0);break;
  • case 1:
  • putpixel(Jfin,Ifin,0);
  • putpixel(Jfin,Ifin-1,0);
  • putpixel(Jfin,Ifin+1,0);break;
  • case 2:
  • putpixel(Jfin,Ifin,0);
  • putpixel(Jfin-1,Ifin,0);
  • putpixel(Jfin+1,Ifin,0);break;
  • case 5:
  • putpixel(Jfin,Ifin,0);
  • putpixel(Jfin-1,Ifin,0);
  • putpixel(Jfin+1,Ifin,0);break;
  • }
  • }
  • void InitSerpent(int coul)
  • {
  • Idebut=2;
  • Jdebut=TailleJ;
  • Ifin=2;
  • Jfin=2;
  • for(Av=0;Av<=Jdebut;Av++)//On trace le serpent du d,but
  • {
  • putpixel(2+Av,Idebut,coul);
  • putpixel(2+Av,Idebut-1,coul);
  • putpixel(2+Av,Idebut+1,coul);
  • Serpent[Av].I=Idebut;
  • Serpent[Av].J=i;
  • }
  • }
  • void INITgraph()
  • {
  • // initialize the graphics system
  • int graphdriver = DETECT, graphmode;
  • initgraph(&graphdriver, &graphmode, "..//bgi");
  • }
/* PIXEL.CPP--Example from Chapter 5 of User's Guide */
#include <graphics.h>   // declarations for graphics library
#include <conio.h>      // for getch() function
#include <dos.h>
//#include <time.h>
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//************CONSTANTES***********************************************

#define MinI 0
#define MinJ 0
#define MaxI 100
#define MaxJ 110

//************VARIABLES GLOBALES***************************************
struct TDep
{
	int I;
	int J;
	int Dir;
};
TDep Coin[5000];

struct Tfleche
{
	int h;
	int b;
	int g;
	int d;
};
Tfleche fl;

struct TDirection
{
	int Avant;
	int Vers;
};

struct Tserpent
{
	int I;
	int J;
};
Tserpent Serpent[5000];

int hasardI,hasardJ;
int i,Idebut,Jdebut,Ifin,Jfin,Vitesse;
int NouveauCoin,DepCoin,Av;
int TailleJ,Coul;
int Point;
TDirection Direction;                            //1 pour gauche, 2 pour en bas, 3 pour la droite, 5 pour en haut


//************PROTOTYPAGES*********************************************
void INITgraph();             //On initialise la carte graphique
void InitSerpent(int coul);   //On initialise le serpent et on le dessine
void GestionTete();           //On gSre la direction de la t^te pour un cycle de jeu
void GestionQueue();          //Idem, pour la queue
void INITt();                 //On initialise les tableaux . z,ro
int MangeCorps();             //Fonction qui renvoie 1, si le serpent . manger son corps
void RempSerp();              //On remplit les cases du tableaux du serpent avec les coordonn,es actuelles
void DessinerContour();       //On dessine les murs
void AffichePomme();          //On affiche une pomme avec des coordonn,es au hasard
void MangePomme();            //On gSre si on doit afficher une nouvelle pomme
void RempSerpPomme();         //On remplie le tableau du serpent quand il mange une pomme
void SupprimeQueue();         //On supprime tous les pixels de la queue
void DessineLangue();         //On dessine une langue . un moment donn, (g,n,r, au hasard)

//************DEBUT DES FONCTIONS ET PROCEDURES************************
int main()
{
	//time_t t;

	INITgraph();		    //Initialisation de la carte graphique
	INITt();

	fl.h=5;//Touches de direction
	fl.b=2;//pourront ^tre chang,es
	fl.g=1;
	fl.d=3;

	NouveauCoin=0;
	DepCoin=0;
	Av=0;
	Coin[NouveauCoin].Dir=fl.d;
	TailleJ=40;
	Coul=6;
	Point=0;

	int midx = MinJ+20;
	int midy = MaxI+20;
	char *ch;

	InitSerpent(Coul);                 //On dessine le serpent du d,but

	Coin[NouveauCoin].I=Idebut;
	Coin[NouveauCoin].J=Jdebut;

	Vitesse=50;                     //On rSgle la vitesse
	Direction.Avant=Idebut;
	Direction.Vers=fl.d;               //Direction du d,but
	DessinerContour();
	AffichePomme();

	while((MangeCorps()!=1) && (Idebut>MinI) && (Idebut<MaxI) && (Jdebut>MinJ) && (Jdebut<MaxJ))
	{

		GestionTete();
		GestionQueue();
		MangePomme();
		DessinerContour();

		window(10,10,20,20);
		cout<<"\\nPoints Gagn,s : "<<Point<<"\\n";
		cout<<"Longueur du serpent : "<<TailleJ<<"\\n";
		cout<<"Tete (i) : "<<Idebut<<"\\n";
		cout<<"Tete (j): "<<Jdebut<<"\\n";
		cout<<"Coordonn,es de la pomme : \\n";
		cout<<"                         I : "<<hasardI<<"\\n";
		cout<<"                         J : "<<hasardJ<<"\\n";
		cout<<"Vitesse : "<<Vitesse;
		delline;
		delay(Vitesse);

       }
       closegraph();//on remet la configuration par d,faut de l',cran

       getch();
       return 0;
}

void MangePomme()
{


	if((Idebut==hasardI)&&(Jdebut==hasardJ)||(Idebut==hasardI+1)&&
		(Jdebut==hasardJ)||(Idebut==hasardI)&&(Jdebut==hasardJ+1)||
		(Idebut==hasardI-1)&&(Jdebut==hasardJ)||
		(Idebut==hasardI)&&(Jdebut==hasardJ-1))
	//Si les coordonn,es de la t^te corrspondent avec celle de la pomme
	{

			//On efface la pomme pr,c,dente qui a ,t, mang,e
			putpixel(hasardJ,hasardI,0);
			putpixel(hasardJ+1,hasardI,0);
			putpixel(hasardJ,hasardI+1,0);
			putpixel(hasardJ-1,hasardI,0);
			putpixel(hasardJ,hasardI-1,0);

			switch(Direction.Vers)
			{
				case 1 :Jdebut--;
					putpixel(Jdebut,Idebut,Coul);
					break;
				case 2 :
					Idebut++;
					putpixel(Jdebut,Idebut,Coul);
					break;
				case 3 :
					Jdebut++;
					putpixel(Jdebut,Idebut,Coul);
					break;
				case 5 :
					Idebut--;
					putpixel(Jdebut,Idebut,Coul);
					break;
			}
			Point++;
			if(Point%10==0)
				Vitesse-=3;//Augmentation de la vitesse
			RempSerpPomme();
			AffichePomme();

	}
}


void RempSerpPomme()
{
	TailleJ++;
	for(int i=1;i<=TailleJ;i++)
	{
	    Serpent[i].I=Serpent[i-1].I;//on d,place les coordonn,es vers la droite dans le tableau
	    Serpent[i].J=Serpent[i-1].J;

	}
	Serpent[0].I=Ifin;//le d,but du serpent prend les nouvelles coordonn,es
	Serpent[0].J=Jfin;
}

void AffichePomme()
{
	int Val;

	Val=1;
	randomize();
	do
	{
		hasardJ=(rand()%(MaxJ-1))+2; //les nouvelles coordonn,es th,oriques de la pomme
		hasardI=(rand()%(MaxI-1))+1;
		//Il ne faut pas que les coordonn,es de la pomme tombent sur le serpent
		for(int j=0;j<=TailleJ;j++)
		{
		       if((Serpent[j].I!=hasardI)&&(Serpent[j].J!=hasardJ))
				Val=0;
		}
	}while(Val==1);
	putpixel(hasardJ,hasardI,2);
	putpixel(hasardJ+1,hasardI,2);
	putpixel(hasardJ,hasardI+1,2);
	putpixel(hasardJ-1,hasardI,2);
	putpixel(hasardJ,hasardI-1,2);
}

void DessinerContour()
{
	int i,j;

	for(i=MinI;i<=MaxI;i++)
	{
		putpixel(MinI,i,3);
		putpixel(MaxJ,i,3);
	}
	for(j=MinJ;j<=MaxJ;j++)
	{
		putpixel(j,MinJ,3);
		putpixel(j,MaxI,3);
	}
}

void RempSerp()
{
	int i;

	for(i=0;i<=(TailleJ-1);i++)
	{
		Serpent[i].I=Serpent[i+1].I;
		Serpent[i].J=Serpent[i+1].J;
	}
}

int MangeCorps()
{
	int i;
	int Toucher;

	Toucher=0;

	for(i=0;i<TailleJ-1;i++)
	{
		if((Serpent[i].I==Idebut) && (Serpent[i].J)==Jdebut)
			Toucher=1;
	}

	return(Toucher);

}
void INITt()
{
	int i;

	for(i=0;i<=5000;i++)
	{
		Serpent[i].I=0;
		Serpent[i].J=0;
		Coin[i].I=0;
		Coin[i].J=0;
		Coin[i].Dir=0;
	}
}

void GestionTete()
{
	int Touche;

	if(kbhit())               //Si on a appuy, sur une touche
	{
		Coin[NouveauCoin].I=Idebut;  //On r,cupSre les nouvelles...
		Coin[NouveauCoin].J=Jdebut;  //...coordonn,es pour chaque changement de direction

		Touche=getch();  //On r,cupSre la valeur de la touche
		switch(Touche)
		{
				 //pour chaque direction : il ne faut pas...
				 //qu'on soit sur la m^me ligne si on veut faire ...
				 //demi-tour

			case 49 : if(Direction.Avant!=Idebut)
				  {
					Direction.Vers=fl.g;
					Direction.Avant=Idebut;
				  }break;

			case 50 : if(Direction.Avant!=Jdebut)
				  {
					Direction.Vers=fl.b;
					Direction.Avant=Jdebut;
				  }break;

			case 51 : if(Direction.Avant!=Idebut)
				  {
					Direction.Vers=fl.d;
					Direction.Avant=Idebut;
				  }break;

			case 53 : if(Direction.Avant!=Jdebut)
				   {
					Direction.Vers=fl.h;
					Direction.Avant=Jdebut;
				  }break;
		}
		NouveauCoin++;
		Coin[NouveauCoin].Dir=Direction.Vers;
	}
	else                     //Si on n'a press, aucune touche, le serpent...
	{                        //...continue . avancer dans la m^me direction
		switch(Direction.Vers)
		{
			case 1 : Jdebut--;
				Serpent[TailleJ].I=Idebut;//pour connaOtre les coordonn,es de tout le serpent
				Serpent[TailleJ].J=Jdebut;
				RempSerp();break;

			case 2 : Idebut++;
				Serpent[TailleJ].I=Idebut;//pour connaOtre les coordonn,es de tout le serpent
				Serpent[TailleJ].J=Jdebut;
				RempSerp();break;

			case 3 : Jdebut++;
				Serpent[TailleJ].I=Idebut;//pour connaOtre les coordonn,es de tout le serpent
				Serpent[TailleJ].J=Jdebut;
				RempSerp();break;

			case 5 : Idebut--;
				Serpent[TailleJ].I=Idebut;//pour connaOtre les coordonn,es de tout le serpent
				Serpent[TailleJ].J=Jdebut;
				RempSerp();break;
		}
	       Coin[NouveauCoin].I=Idebut;  //On r,cupSre les nouvelles...
	       Coin[NouveauCoin].J=Jdebut;  //...coordonn,es pour chaque changement de direction
	}
	putpixel(Jdebut,Idebut,Coul);//on ajoute un pixel pour la t^te
	DessineLangue();
	switch(Direction.Vers)
	{
		case 3:
		putpixel(Jdebut,Idebut-1,Coul);
		putpixel(Jdebut,Idebut+1,Coul);break;

		case 1:
		putpixel(Jdebut,Idebut-1,Coul);
		putpixel(Jdebut,Idebut+1,Coul);break;

		case 2:
		putpixel(Jdebut-1,Idebut,Coul);
		putpixel(Jdebut+1,Idebut,Coul);break;

		case 5:
		putpixel(Jdebut-1,Idebut,Coul);
		putpixel(Jdebut+1,Idebut,Coul);break;
	}
}


void DessineLangue()
{
	switch(Direction.Vers)
	{
		case 1 :
		putpixel(Jdebut-1,Idebut,12);break;

		case 2:
		putpixel(Jdebut,Idebut+1,5);break;

		case 3:
		putpixel(Jdebut+1,Idebut,5);break;

		case 5 :
		putpixel(Jdebut,Idebut-1,5);break;
	}
}

void GestionQueue()
{
		switch(Coin[DepCoin].Dir)
		//selon la direction du Prochain coin (angle o- la t^te du serpent change de direction)
		{
			case 1 : if(Jfin>(Coin[DepCoin].J))
				{
					Jfin--;
					Serpent[0].I=Ifin;
					Serpent[0].J=Jfin;

				}
				else
					DepCoin++;break;
			case 2 :if(Ifin<(Coin[DepCoin].I))
				{
					Serpent[0].I=Ifin;
					Serpent[0].J=Jfin;
					Ifin++;

				}
				else
					DepCoin++;break;
			case 3 : if(Jfin<(Coin[DepCoin].J))
				 {
					Serpent[0].I=Ifin;
					Serpent[0].J=Jfin;
					Jfin++;

				 }
				else
					DepCoin++;break;
			case 5 : if(Ifin>Coin[DepCoin].I)
				 {
					Serpent[0].I=Ifin;
					Serpent[0].J=Jfin;
					Ifin--;

				 }
				else
					DepCoin++;break;
		}

		SupprimeQueue();    //on efface un pixel de la queue

}


void SupprimeQueue()
{
	switch(Coin[DepCoin].Dir)
	{
		case 3:
		putpixel(Jfin,Ifin,0);
		putpixel(Jfin,Ifin-1,0);
		putpixel(Jfin,Ifin+1,0);break;

		case 1:
		putpixel(Jfin,Ifin,0);
		putpixel(Jfin,Ifin-1,0);
		putpixel(Jfin,Ifin+1,0);break;

		case 2:
		putpixel(Jfin,Ifin,0);
		putpixel(Jfin-1,Ifin,0);
		putpixel(Jfin+1,Ifin,0);break;

		case 5:
		putpixel(Jfin,Ifin,0);
		putpixel(Jfin-1,Ifin,0);
		putpixel(Jfin+1,Ifin,0);break;
	}
}

void  InitSerpent(int coul)
{
	Idebut=2;
	Jdebut=TailleJ;
	Ifin=2;
	Jfin=2;

	for(Av=0;Av<=Jdebut;Av++)//On trace le serpent du d,but
	{
		putpixel(2+Av,Idebut,coul);
		putpixel(2+Av,Idebut-1,coul);
		putpixel(2+Av,Idebut+1,coul);
		Serpent[Av].I=Idebut;
		Serpent[Av].J=i;
	}
}
void INITgraph()
{
      // initialize the graphics system
   int graphdriver = DETECT, graphmode;
   initgraph(&graphdriver, &graphmode, "..//bgi");

}

 Conclusion

desole mais pour linstant jai plus winzip.... donc pour l'exe , compilez le ...jen sui vraimen desolé!!


je viens de l'améliorer : 11/12/03 !!!


 Sources du même auteur

Source avec Zip GESTION BASE DE DONNÉES RÉPERTOIRE TÉLÉPHONIQUE
Source avec Zip SIMULATION D'UN ROND-POINT
Source avec Zip Source .NET (Dotnet) JEU_DE_ROLE

 Sources de la même categorie

Source avec Zip Source avec une capture JEU DES CARTES par eapaceinfo
PROGRAMME DE JEU DE MPT par KerizGarmm
Source avec Zip Source avec une capture JEUX SERPENT par antho974
Source avec Zip Source avec une capture PENDU EN SDL par Damsou91
Source avec Zip STATE MACHINE MODIFICATION MATH BUCKHAM par billybones79

Commentaires et avis

Commentaire de djl le 08/12/2003 13:54:05

ta koi comme os?
sinon ca a l'air sympa
lol, faut que je ressorte le vieux compilo

Commentaire de Viper31 le 08/12/2003 19:46:18

Moi j adore les chtit commentaires en anglais eu debut de la source :P et pusi ca aussi :

/* PIXEL.CPP--Example from Chapter 5 of User's Guide */

Sinon ca a l air bien sympa , j'ai pas testé ^_^ !!
Tu devrai nous le faire en OpenGL , OpenGL ca roxx :P

Commentaire de ivanoff1 le 12/12/2003 16:13:58

j'ai XP familiale

C sous turbo c++ 3

Commentaire de Suisse00 le 24/12/2003 03:46:12

Ou télécharger le KIT graphics.h parce que il me manque Xlib.h :s sinon j'ai bien hâte de voir le résultat ^^

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales