Space-racing

Description

Voilà le nouvo zine. Le prog a été compiler sur Borland c++ 4.02. ( pour Jo :o) )

Source / Exemple :


#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <video.h>

int cadre[5000], cadre2[5000], cadre3[5000];
int bylon3, by3, point=0, point2=0;
void decor2();
void decor3();
int index=62;
void decor();
void score(int);

void decor()
{
	randomize();
	for (int x=0;x<5000;x+=25)   //initialise un tableau entier d'initialisation qui va servir
	{                          //à affecter cadre2
		int num=rand()%220+40;
		cadre[x]=num;
	}
	for(x=0;x<5000;x++)    //initialisation de cadre2 avec cadre
		cadre2[x]=cadre[x];
	decor2();
}

void decor2()
{
		for(int x=0;x<=5000;x++)
		cadre3[x-1]=cadre2[x];     //cadre3 est un tableau virtuel
		decor3();					  // affiche cadre2 ( seul tableau à afficher !)
	for(int y=0;y<=5000;y++)
		cadre2[y]=cadre3[y];

}

void decor3()
{
	memset(cadre,0,4999);
	for (int y=0, i=0;y<=200;y++)
	{
	int num2=cadre2[y];
		if(num2!=0)
		{
		cadre[i]=y;
		cadre[i+20]=num2;
		i++;
		ligne(0,y,index,num2,0);
		ligne(num2+25,y,index,319-num2-25,0);
		ligne(0,y+1,index,num2,0);
		ligne(num2+25,y+1,index,319-num2-25,0);
		}
	}
}

class barre
{
	public:
		void affbarre();
		void indicebarre();
		void initbarre();
		void voirvariable();
		void descente();
	private:

	int bx, by, bindex, bxlon, bylon, dy;
};

void barre::descente()
{
	by+=2;
	if (by+bylon>=200)
		by=200-bylon-5;
}

void barre::voirvariable()
{
	bylon3=bylon;
	by3=by;
}

void barre::affbarre()
{
	carre(bx,by,bindex,bxlon,bylon);
}

void barre::indicebarre()
{
	if(bioskey(2)&1)        // fais bouger le carré
		bx++;
	if(bioskey(2)&2)
		bx--;

	if(bx<=0)               // détermine ses limites de déplacement
		bx=0;
	if(bx+bxlon>=319)
		bx=319-bxlon;
	for( int i=0;i<8;i++)    // lecture du tableau cadre.
	{
		int num=cadre[i];
		int num2=cadre[i+20];

		if( by+bylon>num-2 && by+bylon<=num&& (bx<=num2||bx>=num2+25))
		by--;

	}
}

void barre::initbarre()
{
	int i=5;
	int num=cadre[i];
	int num2=cadre[i+20];
	bx=num2+12, by=num, bindex=126, bxlon=2, bylon=2;
}

void main ()
{
	debut :
	int limite=20, indice=1;
	memset(cadre,0,4999);
	memset(cadre2,0,4999);
	memset(cadre3,0,4999);
	vga();
	palette();
	setecran(210);
	decor();
	decor2();
	barre baton;
	baton.initbarre();
	baton.affbarre();
	baton.voirvariable();
	aff();
	getch();
	while(!kbhit()&&indice==1)
	{
		baton.affbarre();
		decor2();
		aff();
		delay(12);
		setecran(210);
		ligne(0,limite,126,320,0);
		baton.indicebarre();
		baton.descente();
		baton.indicebarre();
		baton.indicebarre();
		baton.indicebarre();
		baton.voirvariable();
		point++;
		if( by3<=limite)
			indice=-1;
	}
	if(getch()!=27)
		{
		score(point);
		goto debut;
		}
	getch();
}

void score(int newpoint)
{
	if (newpoint >point2)
		{
		point2 =newpoint;
		point=0;
		}
	texte();
	textbackground(5);
	textcolor(2);
	_setcursortype(_NOCURSOR);
	clrscr();
	window(37,2,43,2);
	textcolor(6);
	textbackground(1);
	clrscr();
	cout<<" SCORE";
	window(10,5,70,15);
	textcolor(6);
	textbackground(1);
	clrscr();
	cout<<"\t\t Vous venez de marquer : "<<newpoint<<" points";
	cout<<"\n \t\t et le record est "<<point2<<"  point(s)";
	getch();
}

Conclusion :


Et bien toutes les explications de ce code sont dans le fichier space.htm du zip. Sinon rendez vous sur www.multimania.com/progzine à la rubrique tutoriaux.

NB : vous aurez besoin du fichier header video.h inclu dans le zip.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.