C SDL gestion de evenement et desyncronisation d' un fonction par rapport a eux

madink Messages postés 3 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 28 mars 2006 - 28 mars 2006 à 23:51
cs_marcotte Messages postés 22 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 18 janvier 2011 - 11 janv. 2009 à 11:48
bonjour,

je m' excuse si l' explication de mon probleme n' est pas tres claire mais il atteint les limites de ma faible compréhension de la programation (je debute ca viendra ).

alors je fait un pacman en SDL , je gere donc les evenement au clavier pour diriger le pacman , jusque la pas de probleme .Sauf que je doit aussi gerer des fantomes , qui doivent se deplacer independament des mouvements du pacman , hors la fonction qui me permet de recuperer les evenements clavier "bloque" l' execution du
programme en attendant un evenement .Ce qui au final fait que les fantome ne peuvent pas se deplacer si il n' y pas devenement clavier , donc si pacman est immobile alors les fantome le sont aussi.

voici mon code pour mieu comprendre :

while (SDL_WaitEvent(&event))
{
switch (event.type)
{
case SDL_KEYDOWN:
switch (event.key.keysym.sym)
{

apres je gere les diferente possibiliter , et cette boucle est ma boucle principal .En faite j' essaye de faire une espece de multi-threading ...

Je pense que le moyen de s' en sortir serait de bricoler une horloge , ou de se servir de l' horloge du bios , pour toute les x milliseconde mon switch soit cour-circuiter pour executer une autre fonction .Je ne voit pas vraiment comment faire cela malheureusement ...

Si quelqun a une piste je suis preneur , et heureux :)

merci

2 réponses

ben92600 Messages postés 56 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 11 juillet 2006
29 mars 2006 à 00:45
je serais toi je prendrais le probleme differament j'executerais les fantome en premiere et verifirait tout 0.01s si l'une touche est enfoncer.
0
cs_marcotte Messages postés 22 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 18 janvier 2011
11 janv. 2009 à 11:48
Tout est là :
(SDL_WaitEvent

C'est pas la bonne fonction pour gérer les évennements pour ton cas, car il y a marqué "WAIT" (attendre^^) donc ça attend une touche pour continuer et en attendant ça te bloque.
Faut voir l'autre fonction d'evennement de SDL mais me souviens plus du nom.

Je réponds même si le post est passé car ça peut peut-etre servir un autre^^

marcotte
Amateur passionné de programmation jeux vidéos 2D et texte (0D ? lol)
0
Rejoignez-nous