PONG

coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 - 18 févr. 2003 à 22:21
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 - 20 févr. 2003 à 00:18
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/10431-pong

cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
20 févr. 2003 à 00:18
Ce n'est pas suffisant de changer la rez, ton rafraichissement d'écran n'est pas optimal. Par ailleurs la vitesse de déplacement dépend de la machine hôte, il faudrait harmoniser
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
19 févr. 2003 à 22:37
Apparement le manque de FPS venait de la résolution: En 400 * 300 j'obtiens 800 FPS et en 320 * 240 1200 FPS. Mais a ce rythme là le déplacement est tellement trop rapide... C pas jouable, vais améliorer le tout et updater ma source.
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
19 févr. 2003 à 20:39
Merci!
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
19 févr. 2003 à 19:28
/* VARIABLES GLOBALES */

volatile int fps,counter;

/*FONCTION FPS_COUNTER */

void fps_counter()
{
fps=counter;
counter=0;
}

après allegro_init(); tu mets

install_timer();
install_int_ex(fps_counter,BPS_TO_TIMER(1));

Et juste avant le blit(screen,....) tu colles : counter++;
Pour afficher ben tu fais un textprintf de %d,fps
}
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
19 févr. 2003 à 18:50
Hello. Je ne sais pas comment compter efficacement les secondes pour calculer le fps. Comment faire? Merci
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
19 févr. 2003 à 18:42
Ta question Galett est intéréssante. J'entends par fps le nombre de boucles d'affichage internes (les frames) par seconde. La confusion est souvent faite avec le taux de rafraichissement de l'écran, la fréquence en Hz dont tu parles (85,100 voire 120 Hz au grand maximum). Les fps internes du programmeur sont un bon moyen de mesurer la qualité du programme. En effet plus le nombre de boucles d'affichage est important, plus le programme sera fluide (au delà de la fréquence de rafraichissement de l'écran, on ne voit plus la différence entre 120 frames internes et 1200). Mais lorsque que la configuration du PC hôte baisse le nombre de fps interne risque de repasser en dessous de cette fréquence d'écran auqul cas des saccades apparaissent. Mieux vaut alors partir de 1200 fps que de 120. C'est à partir de là entre autres que l'on détermine la config minimale en dessous de laquelle l'anmation devient saccadée.

Pour le programme de coockiesch, le nombre de boucles internes est très faible ce qui laisse supposer une grosse config minimale.

Pour le Pacman voyez sur perso.wanadoo.fr/goldeneyerv
(en bas de la page)
Il n'y a pas de sons pour le moment mais l'affichage est ultra optimisé
Galett Messages postés 115 Date d'inscription jeudi 7 février 2002 Statut Membre Dernière intervention 21 mai 2005
19 févr. 2003 à 18:18
euh, je connais pas vraiement allegro, mais tu dis Golden, pouvoir atteindre des fps à 240 ???, euh, t'es sûr ? pasque moi G un écran rafraichit ea 85Hz, et les fps peuvent pas aller plus vite que la musique(le taux de rafraichissement de l'écran), ou alors tu considères des frames mais qui passent en interne, ce n'est donc pas un vrai fps ?
enfin, je ne te fais pas le reproche personnellement, sur tous les sites qui proposent des benchmarks, je vois des "quake 3 à 150fps", je trouve ça bizarre qd même. Vous avez p'tet tous des super écran, et vous complotez tous contre moi pour me faire croire que les meilleurs sont à 100Hz....oula, faut que j'arrêtes moi :-)
cs_kjus Messages postés 269 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 9 juin 2003
19 févr. 2003 à 13:42
oops, voici l'adresse de mon pong si tu veux voir :
http://www.cppfrance.com/article.aspx?Val=841
cs_kjus Messages postés 269 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 9 juin 2003
19 févr. 2003 à 13:41
Salut,
Moi aussi j'ai fait un pong avec allegro (attention, je l'ai fait il y a longtemps c'est pas du tout programmé proprement, mais il est pas mal quand même)

J'ai repéré quelques petites erreurs au niveau des colision le long du mur gauche et du mur du haut :

if(balle_y <= 0 + balle->h / 2)
// virer "+ balle->h/2" ^^^

// contre mur
if(balle_x <= 0 + balle->w / 2
// virer + balle->w/2 ^^^^


Sinon, pour la gestion des touches, je te conseille de ne pas utiliser if(keypressed()) puis readkey(). En effet, il existe un tableau key[] qui est contient constamment l'état de chaque touche.

Tu peut faire par exemple :
if (key[KEY_ESC] )
// touche echap pressée
if (key[KEY_L])
// touche l pressée

Bon courage
cmarsc Messages postés 455 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 18 décembre 2003
19 févr. 2003 à 08:59
srand((unsigned)time(NULL)); exit(1) <stdlib.h> <time.h>
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
18 févr. 2003 à 23:14
Autre chose, 800*600 pour un Pong, je suis sceptique. Regarde mon Pacman, c'est du 320*240 et ça convient parfaitement. 800*600 est une rez à utiliser pour les monstres (RPG, jeux aboutis...), pas pour un pong. Ca augmente la config minimale pour rien.
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
18 févr. 2003 à 23:09
Pour un premier programme avec Allegro, c'est bien. Mais:

1/ J'ai rajouté un fps counter et le résultat est très décevant. J'ai un PC monstrueux et je n'atteins que 240 fps. En gros, il faut un Pentium 2 400Mhz pour faire tourner le prog... Pour un pong wof wof. Le programme n'est absolument pas optimisé, je te laisse trouver pourquoi. Pour info, une version optimisée permettrait d'atteindre des nombres à 4 voire 5 chiffres.

2/Attention le clavier est en qwerty (choix de l;m...)

3/Astuce blabla%2 est moins bien que blabla&1

4/ Idem pour blabla/2 moins bien que blabla>>1

5/Remplace le masked_blit par un draw_sprite, c'est 10% plus rapide

6/ Le changement de direction peut être factorisé

7/ Le source est un vrai bordel, découpe en plusieurs fichiers

8/ Dis moi, pourquoi rafraichis tu tout l'écran à chaque boucle d'affichage ? Alors que seule la zone de la balle ou la zone du plateau est modifiée. Réfléchis y
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
18 févr. 2003 à 22:21
Merci de déposer critiques, remarques, suggestions, améliorations.

coockiesch
Rejoignez-nous