CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

c++ et allegro :)

Scullder
Scullder
Niveau 10
21 mai 2004 à 00:29:25

voilà, je débute en c++ et j´utilise allegro qui est assez simple d´utilisation. Alors voilà mon premier jeu ( f1 pr lancer le jeu, f2 pr la balle, haut bas pour la raquette, echap pr quitter) :-d
http://pagesperso.aol.fr/scullder88/pong.zip
Bon, oui c´est un pong, c´est un peu pourri quand même, mais voilà, ce que je vous demanderai, c´est de regarder mes sources ( dans le zip) et de me dire les grosses erreurs que j´ai faites, quelles bonnes habitudes je devrais prendre, et si je peux mieux optimiser mon code... Ce serait vraiment sympa :)
j´attends vos réponses :) Merci d´avance

Lapintade
Lapintade
Niveau 30
21 mai 2004 à 12:26:24

Ok vais voir ca . ..

Lapintade
Lapintade
Niveau 30
21 mai 2004 à 12:35:08

C´est pas mal pour un debut.
Tu as utilisé du C et ca suffit amplement pour faire un pong.

La premiere remarque, c´est que tu n´a fait aucun synchro video. C´est a dire que ta boucle principale tourne aussi vite que le PC peut. Du coup quand je lance le jeu, j´ai la balle qui part a 500 Km/H et j´ai pas le temps de toucher le clavier que j´ai deja perdu.

Un jeu doit tourner a 60 images par secondes, c´est a dire que chaque image doit durer 17 ms. Dans ton cas, si ta boucle de jeu dure 2 ms, alors tu dois attendre 15 ms avant de calculer l´image suivante sinon c´est trooop rapide. Pour faire ca, il doit exister une fonction dans allegro qui te permets d´attendre la synchro video ( en gros ca attend que tes 17ms soient ecoulé).

Au niveau de l´ecriture, c´est pas mal ecrit et aeré. Si je devais faire des remarques je dirais que tu devrais mettre des commentaire, utiliser des noms de variables plus explicites et utilisé des define pour ne pas avoir plein de constante numerique dans tes formules sans qu´on sache a quoi ca sert.

Voila

Bravo pour ce premier programme.

( Si tu veux des examples de code de ce genre, tu peux regardes les corrigés de ma methode pour apprendre le C : http://perso.wanadoo.fr/ck/NGCK.htm )

LGV
LGV
Niveau 28
21 mai 2004 à 13:27:50

ouaip, pour une fois qu´un projet est raisonnable, on ne peut que encourager.

Meme désagrément que lapintade concernant la rapidité, par contre j´aurai une approche différente : pourquoi contraindre le nombre d´images par seconde ? A QIII, qqun avec un gros est bien content de faire 200 FPS alors que qqun avec un PC moindre peut quand meme jouer à 50 FPS.
Le plus courant est donc plutôt de mesurer le temps de passage entre chaque itération dans ta boucle de jeu principale, et d´adapter toutes les animations/déplacements en conséquences.
Ainsi, on n´a plus :
position.y += DELTA_Y;
mais :
position.y += DELTA_Y*fElapsedTime;
ensuite, c´est vrai que le joueur peut toujours activer le VSYNC dans les préférences de sa carte, mais là c´est plus question de goût.
Si allegro ne te permet pas d´avoir un timer précis, va voir du côté du " multimedia timer" ( win32 specific), qu´on obtient via un QueryPerformanceTimer ( cf. MSDN)

Lapintade
Lapintade
Niveau 30
21 mai 2004 à 13:41:12

L´approche frame a temps fixe est plus facile pour un debutant. Ca te permets de faire des pas constant pour les deplacements.

Je suis d´accord que pour un avancé, c´est mieux de faire en fonction du temps que dure la frame, c´est utile si le frame rate chute en dessous de 60, mais ca sert a rien du tout de jouer a 200fps . ..

Scullder
Scullder
Niveau 10
21 mai 2004 à 22:47:25

ok, merci pour tous vos conseils et d´avoir pris du temps pour me répondre :)
je cherche et j´améliore ça tt de suite.
( le lien http://perso.wanadoo.fr/ck/NGCK.htm est mort)

Lapintade
Lapintade
Niveau 30
21 mai 2004 à 22:59:39

Non pas de liens morts chez moi. Je viens juste de cliquer dessus et c´est ok :) :)

Scullder
Scullder
Niveau 10
22 mai 2004 à 12:15:49

ok, c´était aol qui délirait hier, je suis passé par un proxy pour aller sur ton site :)
sinon voilà, je viens de trouver une bonne page qui explique comment faire avec allegro pr qu´un jeu tourne à la même vitesse sur toutes les machines. J´en fait profiter tout le monde : http://www.loomsoft.net/resources/alltut/alltut_lesson6.htm
:-d

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment