Forum de la communauté SFML

Aide => Général => Discussion démarrée par: Chaore le Novembre 20, 2012, 02:10:07 pm

Titre: Utiliser Window.pollevent abusivement
Posté par: Chaore le Novembre 20, 2012, 02:10:07 pm
Bonjour,

             Je me demandais si l'utilisation abusive du pollevent pour gérer par exemple des transition, des temps de chargement,était recommandé ou non ou si sa pouvait amener à un problème ou bien si il est préférable de mettre qu'un seul pollevent dans tout son code est essayer de s'arranger avec son code.

Je vous remercie, si je n'est pas été assez clair, n'hésitez pas !
Titre: Re : Utiliser Window.pollevent abusivement
Posté par: Laurent le Novembre 20, 2012, 03:53:38 pm
C'est pas clair du tout. Mais bon, avior plein de pollEvent est généralement une erreur : les évènements qui sont traités à un endroit seront loupés dans tous les autres. Il faut donc une unique boucle d'évènements centralisée, qui dispatche éventuellement les évènements à qui est intéressé.
Titre: Re : Utiliser Window.pollevent abusivement
Posté par: Chaore le Novembre 20, 2012, 06:21:53 pm
Oui je comprend ce que tu veux dire, cependant ce n'est pas de la façon donc tu parles que je souhaite utiliser.

Je parle plutôt de ceci:

window.pollevent(event);  //le code du menu disons
gererevenementmenu(event);
DrawMenu();

while(VeutJouer)  // j'avais mis un if, je l'ai remplacé après on troisième post
{
window.pollevent(event)  // le code du jeu
gererevenementjeu(event);
DrawJeu();
}
 


J'espère que tu auras compris avec cette explication très...minimaliste ;).

De cette façon je crois que sa peut fonctionne non?

Merci !
Titre: Re : Utiliser Window.pollevent abusivement
Posté par: Laurent le Novembre 20, 2012, 06:43:08 pm
Oui là ça va.

Du coup quel est ton problème / ta question ?
Titre: Re : Utiliser Window.pollevent abusivement
Posté par: Chaore le Novembre 20, 2012, 10:42:41 pm
J'ai fait une erreur, remplace le if par un while.

Non c'est bon, c'est seulement pour savoir si c'était "clean" et courant de faire ceci pour gérer un menu/un jeu/des transitions et autres.

Merci beaucoup et désolé du dérangement occasionné ;)

Titre: Re : Utiliser Window.pollevent abusivement
Posté par: Samuel Proulx le Novembre 21, 2012, 04:10:18 am
Hum... je suis curieux de savoir c'est quoi ce fonctionnement étrange ? :o

Je ne comprends pas pourquoi faire plusieurs pollevent pour gérer la GUI et le render (jeu).... ???

Quelqu'un peut m'expliquer ce qu'il fait ?

Merci et bonne journée ! :)
Titre: Re : Utiliser Window.pollevent abusivement
Posté par: Laurent le Novembre 21, 2012, 08:21:01 am
Il a des "écrans" différents : le menu, le jeu, etc. Comme ces écrans n'ont rien en commun (logique et graphismes différents), ils n'ont rien en commun non plus dans le code. C'est comme si chaque écran était une mini-appli à part entière -- en caricaturant un peu.

Ceci-dit on peut quand même faire mieux. Tu te rends compte que dans l'exemple que tu as donné, les 3 lignes de code sont identiques, elles ne s'appliquent juste pas au même "écran". Du coup tu peux factoriser :

window.pollEvent(event)

ecran_courant.gerer(event);
ecran_courant.draw();

ecran_courant étant une instance de EcranMEnu ou EcranJeu, dérivant toutes deux de Ecran (par exemple). Ca te permet de factoriser la logique de haut-niveau, la boucle principale en gros.

C'est un pattern courant, pour lequel tu trouveras pas mal d'articles et d'implémentations. Y compris sur le wiki de SFML.
Titre: Re : Utiliser Window.pollevent abusivement
Posté par: Chaore le Novembre 21, 2012, 02:05:39 pm
Haaa oui d'accord !

C'est bien merci beaucoup ! 8)