Rolland garros 2003

Soyez le premier à donner votre avis sur cette source.

Vue 5 478 fois - Téléchargée 240 fois

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

Ajouter un commentaire Commentaires
Messages postés
547
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
7 octobre 2007
1
j'ai l'impression que tu confonds application visuelle et utilisation d'un editeur RAD.
Avec C++ Builder on peut parfaitement faire une application visuelle sans utiliser l'editeur RAD. tu peux utiliser les MFC ou OWL (ancienne librairie borland) ou même coder toute la gestion de tes fenêtres windows a la main. Tout dépend de ce que tu veux faire et pourquoi.
et puis l'argument du genre on à l'impression de rien faire, c'est clair que si ton programme ne fait qu'uvrir une fenêtre tu n'aspas grand chose à coder avec C++ builder. Mais si tu met en jeux plusieurs dizaines de fenêtres et des traitements complexes, tu est bien content de ne pas avoir à gérer en plus toutes la GUI.

A+
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

je parlais bien sur des applications visuelles VCL, je ne vois pas comment tu peux en faire sans la VCL (en mode visuel j'entend bien, donc tu dépose les composants dessus et tout marche tt seul pr ainsi dire)

Ceci dit, je ne nie absolument pas que c'est là un travail formidable de la part des programmeurs d'Inprise. Je suis toujours aussi impressionné par la simplicité et le résutlat obtenu. Ce que je disais donc, c'est que 50% du travail est fait pr le programmeur, et que du coup, on a moins le sentiment d'avoir accompli qq ch, d'avoir appris.
Messages postés
547
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
7 octobre 2007
1
pour répondre à kirua,
je suis plutôt étonné par tes propos sur le C++ Builder de Borland (je l'utilise depuis la version 1)
il est clair que la version entreprise est hors de prix pour un particulier (à moins d'avoir des sous à dépenser)
mais la vesrion standard est tout à fait abordable.
de plus la librairie VCL n'est pas obligatoire, tu peux aussi utiliser CLX, qui est cross plate-forme linux/Windows. Ou n'importe qu'elle autre librairie.
en ce moment moi je ne me sers d'aucune librairie, Pour ce qui est de la compatibilité du code, il faut juste faire bien attention de ne pas utiliser les extensions du langage propre à Borland ( du genre __property, __closure, etc...). Le logiciel que je développe actuellement compile aussi bien avec BC++6 et GCC (dev CPP 5)


A+

Fred
Messages postés
368
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
27 janvier 2010
1
ok Kirua c'est noté !!! :)
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

C++ Builder c'est le top pour les utilitaires et les applications web surtout, je l'ai utilisé pendant 2 ans, mais j'arrête parce que c'est frustrant. T'as jamais l'impression d'avoir créé qq ch, c'est tjs basé sur des compos tout fait. Et en plus, c'est illégal (à moins d'avoir une license à 1500 EUR). Et encore un argument: c'est difficile de distribuer son code (pas compilable avec les autres compilos (GCC ...) (enfin, CBuilder 7 devrait corriger ça, ils vont enfin arrêter avec la VCL) et puis ton code est pas portable.

mais honnêtement, ce qui me tuait le plus, c que même après avoir fait des prog complex, long, gros, utiles, j'avais jamais l'impression d'avoir vraiment progressé. Alors que la programmation graphique (opengl, allegro, directx ...) ça, ça te donne de la satisfaction. En fait je dirais, tous les programmes que tu fais dans la stricte légalité (donc avec les moyens du bord) sont source de satisfaction personnelle. Faire un client FTP en Builder, c'est l'histoire de 1-2 heures avec BCB, et une bien plus intéressante et complexe épopée avec Dev-C++ pour citer celui-là.
Afficher les 22 commentaires

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.