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

J´aide les personne en C/C++

JeanYvesYves
JeanYvesYves
Niveau 10
14 février 2005 à 14:32:24

On fait TOUS cela :)
C´est de l´ultra vécu : des heures et des heures perdues a se demander pkoi il se passe un truc alors qu´on attend le reste :
et puis d´un coup, on voit, un + a la place d´un - ou un x a la place d´un y, looool ! !
Stupide erreur de copier/coller :)

jejej
jejej
Niveau 9
14 février 2005 à 14:50:13

Bon , la j´ai un problème avec la gestion du temps . .. je veux afficher une petite animation ( sprite ) , pour que mon eau soit plus réaliste . ..

J´ai regarde un tutorial sur le net ( prografix ) et je fais ceci :

http://rafb.net/paste/results/IzlHYd47.html

J´ai aussi une image Eau de 900*200 pixels , composee de 4 images de 225*200 pixels representant des cercles grandissant . ..
Elle , j´ai verifiee , elle est correctement chargee et affichee , donc l´erreur que j´ai ne vient ni de SDL_LoadBMP , ni de ma fonction SDL_BlitSurface . ..

Mais , lorsque je lance mon " jeu" , ces images ne sont pas affichées , tout se déroule comme si Eau n´existait pas . ..

Alors est-ce que cela vient de la gestion du temps ?

jejej
jejej
Niveau 9
14 février 2005 à 14:53:32

Euh . .. bon , en fait , en modifiant juste un peu la fonction , ( = au lieu de < ) , les images sont belle et bien affichées , mais . .. pas animées automatiquement :

c´est a dire qu´au debut , j´ai bien la premiere image de mon sprite, c´est a dire un tout petit cercle , mais pour " avancer " dans le sprite , je suis oblige d´appuyer sur une touche . ..

JeanYvesYves
JeanYvesYves
Niveau 10
14 février 2005 à 14:54:22

bizarre, ton algo semble bon :)

Vérifie si tu passes bien dans le if.
( tu mets un point d´arret en debug sur ton afficheimage)
Sinon, c´est que ça vient d´ailleurs :)

JeanYvesYves
JeanYvesYves
Niveau 10
14 février 2005 à 14:56:41

si il faut appuyer sur une touche, c´est que ta fonction pour afficher doit etre en dessous de la gestion des touches ?
Il faut que ce soit indépendant, limite que ta boucle principale soit :

while(1) / / ou condition que tu veux
{
get_touches();
upgrade_animations();
verifie_collisions();
dessine_tout();
}

tu vois, 4 fonctions bien distinctes :)

jejej
jejej
Niveau 9
14 février 2005 à 15:01:01

le probleme , c´est que ces n´importe quelle touche . .. meme la souris !
alors que je ne les gere pas :p)

je poste mon programme , si quelqun accepte de m´aider , c´est super sympa ( il aura son nom dans le générique de jeu ^^ )

le main :
http://rafb.net/paste/results/UFe9iA85.html

le . cpp " affichage":
http://rafb.net/paste/results/ox1Rak89.html

voila :)
je sens que c´est encore une erreur débile , mais je ne sais pas bien " gerer le temps " , c´est mon premier jeu ^^

JeanYvesYves
JeanYvesYves
Niveau 10
14 février 2005 à 15:05:47

j´ai trouvé, c´est bien ce que je te disais : ton affichage est en dessous de l´appui des touches, voir n´importe quel evenement :

Tout ce qu´il y a dans ta boucle while :
while ( SDL_PollEvent(&2) )

n´est executé que si un evenement arrive.

Pkoi as tu tout mis DANS ce while ?

ferme ce while AVANT le :
/ / Tests des touches . ..

au lieu de le fermer apres le SDL_flip : vérifie tes accolades :)

jejej
jejej
Niveau 9
14 février 2005 à 15:18:55

Eheh , vous avez gagné votre nom dans les crédits du jeu , JYY ^^ :merci: beaucoup :)

mais j´ai encore une question :p) :

dans la zone de gestion du temps ( a partir de CurrentTime = SDL_GetTicks etc ) dans mon main.cpp ,
Il y a un probleme :

L´animation de l´eau s´effectue à toute vitesse , elle s´effectue , donc j´entre bien dans la boucle , mais a toute vitesse , donc y a un probleme avec CurrentTime et NextTime . ..

je sais ( on va dire pense ^^ ) que le probleme vient de ce que Current et Next sont egaux a SDL_GetTicks() , que je confond < et < , que j´ajoute 1 a current time mais je sais plus pourquoi etc , mais je suis completement perdu :p)

JeanYvesYves
JeanYvesYves
Niveau 10
14 février 2005 à 15:22:57

Jamais d´égalité sur les temps : si ton ordi ralenti, il pourra etre 1 millieme + tard, et l´égalité ne sera pas faite :
remplace :

CurrentTime = SDL_GetTicks() +1;
if ( CurrentTime = NextUpdateTime )
{
AffichageEau(Frame);
Frame++;
if ( Frame > 4 )
{
Frame = 0;
}
NextUpdateTime +=1000;
}

par :

CurrentTime = SDL_GetTicks();
if ( CurrentTime > NextUpdateTime )
{
AffichageEau(Frame);
Frame++;
if ( Frame > 4 )
{
Frame = 0;
}
NextUpdateTime =CurrentTime+1000;
}

et n´oublie pas, au début, de mettre
NextUpdateTime = SDL_GetTicks();

jejej
jejej
Niveau 9
14 février 2005 à 15:31:25

Au debut de quoi ?
J´ai remplacé par ton code , mais le problème c´est que les animations ne sont pas affichées

je pense que le probleme vient du fait que CurrentTime ET NextTime sont égaux ( à SDL_GetTicks() ) , donc CurrentTime ne peut pas etre plus grand que NextTime . ..

JeanYvesYves
JeanYvesYves
Niveau 10
14 février 2005 à 15:34:08

je corrige :

CurrentTime = SDL_GetTicks();
if ( CurrentTime > NextUpdateTime )
{
Frame++;
if ( Frame > 4 )
{
Frame = 0;
}
NextUpdateTime =CurrentTime+1000;
}
AffichageEau(Frame);

dégage le " affiche" hors du if : en effet, si tu le mets dans le if, alors ça n´affiche que si tu changes de sequence, alors qu´il faut l´afficher en permanence :)

jejej
jejej
Niveau 9
14 février 2005 à 15:36:54

Eeeeeh ca marche :)
merci beaucoup : par contre , quand tu dis :
" et n´oublie pas, au début, de mettre
NextUpdateTime = SDL_GetTicks(); "

tu veux , dire , de l´enlever ? parceque , ca amrche si je l´enleve :p

merci :)

JeanYvesYves
JeanYvesYves
Niveau 10
14 février 2005 à 15:40:33

non, au contraire, laisse le, au début, c´est avant ton
while ( i == 0)

Tu vois que ça marche :)
en fait, les autres fois, c´est pas que ça n´affichait pas, c´est que ça affichait UNIQUEMENT quand ça changeait d´animation, autrement dit, ça devait afficher une animation 1 image sur 50 . ... donc tu n´y voyais pas :)

jejej
jejej
Niveau 9
14 février 2005 à 16:39:54

je t´assure que ca ne marche pas si j´ecris :
Uint32 NextUpdateTime = SDL_GetTicks();

au début de mon programme , en revanche , c´est parfait si on met :

Uint32 NextUpdateTime ;

JeanYvesYves
JeanYvesYves
Niveau 10
14 février 2005 à 16:48:59

bon bon, ben tant que ça marche :)

Damian
Damian
Niveau 10
14 février 2005 à 17:25:28

Salut à tous !

JeanYvesYves, j´ai visité ton site et je le trouve super. J´ai une question à te poser à propos du C++ mais qui n´a pas de rapport avec les Jeux Vidéos. C´est pour cela que j´ai essayer d´ajouter ton adresse msn à mes contacts mais tu n´est jamais connecté.

Voila je te remercie d´avance !

JeanYvesYves
JeanYvesYves
Niveau 10
14 février 2005 à 17:27:00

impossible de me connecter now : je suis au boulot : je passe juste de temps en temps sur le forum pour jeter un oeil ( faire des micro-pauses)
Si tu veux poser uen question : mail down :)

Damian
Damian
Niveau 10
14 février 2005 à 17:27:38

ok merci,

je t´envoie un mail

jejej
jejej
Niveau 9
14 février 2005 à 17:33:07

Je me posais une question :
est ce qu´il est plus rapide d´afficher un bmp ou de dessiner les pixels ?

je fais un casse brique , est ce que je dois plutot afficher chaque image bmp de brique , ou dessiner chaque brique pixels par pixels ?

Il ne doit pas y avoir une enorme différence , mais tant qu´a faire . ..

LGV
LGV
Niveau 28
14 février 2005 à 17:48:40

il y a une ENORME difference ! ! il faut monopoliser le moins possible les ressources graphique, donc quand t´es en 2D et que tu modifies ton affichage, tu cherches a blitter un maximum de gros trucs d´un seul coup. blitter un gros truc est beaucoup plus rapide que blitter plein de petits. C´est la regle premiere de l´affichage, que ce soit 2D ou 3D : batcher le plus possible

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