Pongball

Description

Bon alors le code source se trouve dans le fichier pong.zip. A cela est ajouté le programme compilé ( pong.exe )et l'étude du listing (pong.htm). Le fichier pong.cpp utilise le fichier header video.h (inclus dans le zip ) que vous devrez copier vers le dossier "include" de votre compilateur.
Vous trouverez tout dans ce fichier zip ! :o). Bon alors le jeu est en mode 320*200 256c. La barre se déplace grace aux shifts ( fonction bioskey ! eh oui :o))et puis j'explique tout dans le zine.

NB : mailez moi à alexandre9999@aol.com pour m'avertir des problèmes que vous pourriez éventuellement rencontrerer ou pour tout simplement me demander de développer un peu plus une notion évoquée dans le zine et qui reste floue.

Bonne lecture ! Ntomega.

Source / Exemple :


#include <iostream.h>
#include <conio.h>
#include "video.h"
int bx3, bxlon3, by3;
unsigned long int point=0;
unsigned long int point2=0;
void score (int);

class balle
{
	public :
		void affballe();
		void indiceballe(int, int, int);
		void effaceballe();
		void initballe();
		int voirindice();
	private:
		int dx, dy;
		int x, y, index, xlon, ylon;
		int pasx, pasy;
		int indice;
};

int balle::voirindice()
{
	return indice;
}

void balle::affballe()
{
	carre(x,y,index,xlon, ylon);

}

void balle::effaceballe()
{
	if (dx==1&&dy==1)
		carre(x-pasx,y-pasy,0,xlon, ylon);
	if (dx==-1&&dy==1)
		carre(x+pasx,y-pasy,0,xlon, ylon);
	if (dx==1&&dy==-1)
		carre(x-pasx,y+pasy,0,xlon, ylon);
	if (dx==-1&&dy==-1)
		carre(x+pasx,y+pasy,0,xlon, ylon);
}

void balle::indiceballe(int bx2, int by2, int bxlon2)
{
	if (x+xlon>=300-pasx)
			{
			dx=-1;
			index+=64;
			}
		if (x<=21+pasx)
			{
			dx=1;
			index+=64;
			}
		if (y<=21+pasy)
			{
			dy=1;
			index+=64;
			}
		if (y+ylon>=179-pasy)
			{
			dy=-1;
			index+=64;
			indice++;
			cout<<"\a";
			}
		if (y+ylon==by2-pasy && x<=bx2+bxlon2 && x+xlon>=bx2)
			{
			dy=-1;
			index+=64;
			}
		if (dx==1)
			x+=pasx;
		if (dx==-1)
			x-=pasx;
		if (dy==1)
			y+=pasy;
		if (dy==-1)
			y-=pasy;
}

void balle::initballe()
{
	x=50, y=80, index=62, xlon=3, ylon=3, pasx=1, pasy=1;
	dx=1, dy=-1, indice=0;
}

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

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

void barre::voirvariable()
{
	bx3=bx, bxlon3=bxlon, by3=by;
}

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

void barre::effacebarre()
{
	if(bx<=23 ||bx+bxlon>=298)
		goto fin;
	carre(bx+1,by,0,bxlon,bylon);
	carre(bx-1,by,0,bxlon,bylon);
	carre(bx+2,by,0,bxlon,bylon);
	carre(bx-2,by,0,bxlon,bylon);
	fin :
}

void barre::indicebarre()
{
	if(bioskey(2)&1)
		bx++;
	if(bioskey(2)&2)
		bx--;
	if(bx<=21)
		bx=21;
	if(bx+bxlon>=300)
		bx=300-bxlon;
}

void barre::initbarre()
{
	bx=50, by=170, bindex=60, bxlon=35, bylon=2;
}

void main ()
{
	debut :
	vga ();
	palette ();
	carre(0,0,190,320,200);
	carrecontour(20,20,126,281,160);
	carre(21,21,0,279,158);
	aff();
	balle ballon;
	barre barre1;
	ballon.initballe();
	barre1.initbarre();
	while (!kbhit())
	{
	ballon.affballe();
	barre1.affbarre();
	barre1.indicebarre();
	barre1.affbarre();
	barre1.indicebarre();
	barre1.voirvariable();
	if(ballon.voirindice()==3)
		{
		score(point);
		goto debut;
		}
	point++;
	aff();
	delay(5);
	ballon.indiceballe(bx3, by3, bxlon3);
	ballon.effaceballe();
	barre1.effacebarre();
	carre(21,170,0,3,2);
	carre(297,170,0,3,2);
	}
	if (getch()==27)
		goto fin;
	score(point);
	goto debut;
	fin :
}

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"<<point2<<"  point(s)";
	getch();
	clrscr();
}

Conclusion :


Rendez vous sur www.multimania.com/progzine à la rubrique tutoriaux.

Codes Sources

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.