Bonsoir,
Je suis vraiment dans le caca, sa fait plusieurs heures que je cherche comment résoudre ce @þ#→½{#→ de problème a la noix de coca ... ( :-° )
J'vous explique. J'ai un serveur pour un jeu, les clients se connectent, puis quand il y a asser de joueurs le serveur lance une commande qui préviens tout le monde du commencement de la partie. Là le serveur rentre dans la phase de la partie en elle meme, du tour par tour.
Je lance donc un thread qui est une boucle infinie qui se stoppe quand il y a un vainqueur. Sinon il parcourt une boucle interne qui est censée donner "la main" tour a tour a chaqun des clients. Mais cette boucle interne doit etre régie par l'envoi et la réception des communication externes. J'aimerais que le délais dans cette boucle soit de 30 secondes MAXIMUM. C'est a dire que si le client réponds dans les 30 secondes, il fait quelque chose, mais si il ne réponds pas dans les temps imparti il fait autre chose.
Donc la boucle ne doit pas etre completement stoppée a ce moment.
Pour mieux expliquer ce que je veux je vais faire un pseudo-code de ma boucle ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 def Partie(): # lancée en thread while True: # tourne sans fin jusqu'a ce qu'il y ait un vainqueur if Vainqueur: break else: # boucle principale qui parcourt la liste des joueurs for joueur in listeClients: EnvoiRequete(joueur,"t'a la main") # previen que c'est a sont tour # Et c'est ici que je bloque, je ne sais pas trop comment faire pour lui dire d'attendre if reponse: # si il reçoit une réponse du client avant les 30 secondes # code else: # si il n'a pas reçu de réponse de la part du client qui a la main # code
Donc voilà grosso modo ce que je voudrais pouvoir faire.
Certains m'ont parlé d'un thread Timer, j'ai regarder la doc mais je n'arrive pas a l'utiliser :/
J'ai aussi essayer avec un time.sleep() mais je pense que sa ne marchera pas parce que il doit pouvoir rester a l'écoute du client pendant ces 30 secondes.
J'ai vraiment besoin d'aide ET TRES VITE !!! Celui qui pourra m'aider est le bienvenue ici ^^
PS : J'ai pas le temps pour les select![]()
Partager