Rolland garros 2003

Description

Je l'ai appelé Rolland Garros 2003 mais en fait il ne s'agit que d'un simple pong (mais comme on est en plein rolland garros alors voila :))
euh bon je pense qu'il ya une petite originalite c'est la possibilité de monter au filet mais sinon rien de special :)

Source / Exemple :


#include <allegro.h>
#include <stdio.h>
#include <stdlib.h>

void main()

{
	BITMAP *fond;
	BITMAP *buffer;
	BITMAP *image;
	SAMPLE *pam;
	MIDI   *midi;
                PALETTE palette;
  
	float x1=10,y1=10,x2=20,y2=50;   // Variable pour la raquette humain
	float xo1=310,yo1=10,xo2=300,yo2=50; // pour la raquette de l'ordi
                float xb=50,yb=50;  // Coordonés du centre de la balle
	float dirx=0.125,diry=0.125; // La direction

	install_allegro(SYSTEM_AUTODETECT,&errno,atexit);
	install_keyboard();
	install_sound(DIGI_AUTODETECT,MIDI_AUTODETECT,"pong");
	set_color_depth(16);
	set_gfx_mode(GFX_AUTODETECT,320,200,0,0);

	buffer=create_bitmap(320,200);
	fond=load_bitmap("noir.bmp",palette);
	image=load_bitmap("presentation.bmp",palette);
                pam=load_sample("boing.wav");
	midi=load_midi("mario.mid");
	blit(image,buffer,0,0,0,0,image->w,image->h);
	blit(buffer,screen,0,0,0,0,320,200);
	play_midi(midi,1);
	text_mode(-1);
	textout(screen,font,"Rolland Garros 2003 V 1.0",60,120,makecol(0,0,255));
	textout(screen,font,"Auteur : Amokrane Chentir(AmK)",50,140,makecol(34,12,98));
	textout(screen,font,"Appuyez sur une touche pour continuer !",20,160,makecol(0,255,0));
	readkey();
	stop_midi(midi);
	while(!key[KEY_ESC])
	{ 
retour :
	    
	       clear_bitmap(fond); 
               if(yo1<yb)
		{
		yo1=yo1+0.125;
		yo2=yo2+0.125;
		}

		else if(yo1>yb)
		{
		yo1=yo1-0.125;
		yo2=yo2-0.125;
		}

		else if(xo1!=160) // la ya un probleme le pc ne veut pas monter au filet ! 
		{
			xo1=xo1-0.125;
			xo2=xo2-0.125;
		}
		else if(xo2!=320) // la aussi !
		{
			xo1=xo1+0.125;
			xo2=xo2+0.125;
		}

	       xb=xb+dirx;
               yb=yb+diry;

               if     (yb>=199) 
		{
		diry=-0.125;
                play_sample(pam,255,128,1000,0);
		}

                else if(yb<=1)
		{
		diry=+0.125;
		play_sample(pam,255,128,1000,0);
		}

                else if(xb>=319)
		{
		dirx=-0.125;
		play_sample(pam,255,128,1000,0);
		}

                else if(((xb>x1) && (xb<=x2+5))&& ((yb>y1-5) && (yb<y2+5)))
		{
		dirx=+0.125;
                play_sample(pam,255,128,1000,0);
		}

		else if(((xb<xo1) && (xb>=xo2-5))&&((yb>yo1-5) && (yb<yo2+5)))
		{
			dirx=-0.125;
			play_sample(pam,255,128,1000,0);
		}
		
		else if(xb<=1) 
		{  
		exit(0);
		}
	
       
		rectfill(fond,x1,y1,x2,y2,makecol(0,255,0)); // Dessin d'un rectangle
		circlefill(fond,xb,yb,5,makecol(0,0,255)); // Dessin d'un rond
		rectfill(fond,xo1,yo1,xo2,yo2,makecol(255,0,0));
		vline(fond,160,1,199,makecol(255,0,0));
		blit(fond,buffer,0,0,0,0,fond->w,fond->h);
		blit(buffer,screen,0,0,0,0,320,200);
       
    
	if((key[KEY_UP])&&(y1>1))
	{
		y1=y1-0.125;
		y2=y2-0.125;
	    goto retour;	
	}
	else if((key[KEY_DOWN]) && (y2<199))
	{
		y1=y1+0.125;
		y2=y2+0.125;
	    goto retour;
		
	}
	else if((key[KEY_LEFT]) && (x1>1))
	{
		x1=x1-0.125;
		x2=x2-0.125;
        
		goto retour;
	}
	else if((key[KEY_RIGHT]) && (x2 < 160))
	{
		x1=x1+0.125;
		x2=x2+0.125;
        
		goto retour;
    }
	
	    

    
	}

destroy_sample(pam);
}

END_OF_MAIN();

Conclusion :


voila .. j'ai du virer l'ecran de presentation et un peu de music parceque sinon ça aurait fait plus de 700 ko !!
mais si vous voulez vous pouvez la telecharger :

http://site.voila.fr/allbrain/Rolland.zip

Ah oui j'ai un peu honte de mon code à cause des goto , mais j'avais pas trop envie de me casser la tete ......

Si quelqu'un a lu le code et peut me dire pourquoi la raquette du PC n'arrive pas à monter au filet ça serait cool !
d'autres remarques sur l'optimisation du code seraient super ...

Encore desole pour les goto !

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.