salut tout le monde .
voila je fais un petit jeu "tetris" en c++ et j'utilise la sdl.
j'aimerais savoir si je peux utiliser SDL_PollEvent et SDL_WaitEvent dans la meme boucle de jeu.
je veux utiliser SDL_PollEvent seulement pour faire decendre la piece chaque
x temps .
et SDL_WaitEvent pour les autres evenements : les boutons .
j'utilise pour le moment SDL_PollEvent mais cela me cause deux probleme:
*par exemple des que j'enfonce le bouton "droite" la piece se decale a droite a une tres grande vitesse puisque le PollEvent lui envoie ce signal plusieur fois .
* les images qui composent la pieces scintillent ce qui est tres desagreable .
Salut,
Je ne sais pas si tu peux utiliser les 2 en même temps mais pourquoi ne pas utiliser un thread pour ton PollEvent et utiliser la boucle principale pour ton waitEvent ?
Pourquoi ne pas modifier la hauteur de la pièce courante à chaque tour de boucle si X nombre de temps est passé?.
T'a qu'à faire une fonction dans ta classe qui modifie la hauteur de -1. Puis tu met ça dans ton while!
int tempsPrecedent = 0, tempsActuel = 0;
tempsActuel = SDL_GetTicks();
if (tempsActuel - tempsPrecedent > 30) // Si 30 ms se sont écoulées
{
piece.descend(); // La pièce descent
tempsPrecedent = tempsActuel;
}
moi je vote le bannissement total de SDL_WaitEvent pour un jeu video
Un jeu vidéo, c'est une boucle principale qui tourne, et qui ne s'arrete jamais : ça tourne !! Ainsi, ça te permet de gérer des animations derriere, ou n'importe quoi d'autre.
De ce fait, une fonction qui attend un evenement est en conflit meme avec ça.
--> SDL_Pollevent powa.
Je conseille meme vivement d'isoler completement la gestion d'events dans une seule fonction, indépendamment des structures ou mouvements des pieces.
je ne sais pas si tu peux utiliser les 2 en même temps mais pourquoi ne pas utiliser un thread pour ton PollEvent et utiliser la boucle principale pour ton waitEvent ?
comment ca un thread ? comment je peux faire cela ?
Citation : dazkou
Tant qu'à faire tourne toi vers SFML ^^. Librairie C++ et selon certain est bien meilleur que SDL coté performance.
on m'a beaucoup parlé de la SFML ..je crois que je vais l'essayer plus tard.
mais pour le moment je prefere continuer ce que j'ai commencé .
Il faut simplement utiliser PollEventet un timer. Il faut mesurer le temps qui s'est écoulé entre 2 passages dans la boucle et si ça correspond au temps que tu veux entre 2 pièces tu déplaces les pièces, sinon, tu ne fais rien.
Il faut simplement utiliser PollEventet un timer. Il faut mesurer le temps qui s'est écoulé entre 2 passages dans la boucle et si ça correspond au temps que tu veux entre 2 pièces tu déplaces les pièces, sinon, tu ne fais rien.
oui c'est ce que j'ai fait ca marche mais il me reste le probleme de scitillement des images.
pour le scintillement d'image, tu a declaré le doublebuffer(je me rappelle plus du nom exact...)dans setVideo (la nom plus, je rouille ???).
si tu ne sais pas ce que c'est , regarde le tutoriel de M@theo
sur le C 3eme partie.
probleme sdl
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html