Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3337 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Pb de synchro avec Qt

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pb de synchro avec Qt

n°1254574
i'n'i
Posté le 28-11-2005 à 11:26:12  profilanswer
 

Salut, c'est encore moi avec mon jeu en Qt.
J'ai un problème de 'synchronisation' :
Lorsque le joueur clique sur une case (c'est un othello/reversi) pour jouer, ça lance un signal->slot qui joue et qui ensuite lance mon intelligence artificielle.
Le problème c'est que ça va trop vite : on a pas le temps de voir ce que l'humain joue, que le plateau est recouvert par le coup du CPU.
J'ai essayé de mettre des sleep() dans mon slot entre le coup de l'humain et du cpu, ça attend bien, mais ça affiche toujours les 2 coups simultanément, ce qui fait que l'on ne vois pas le coup du joueur.
J'ai essayé de faire jouer l'IA en cliquant sur un bouton, et ça marche, mais ça ne me convient pas.
 
La question est peut-être un peu vague, mais si quelqu'un a déjà connu ce problème, je suis preneur.
 
D'avance merci!

mood
Publicité
Posté le 28-11-2005 à 11:26:12  profilanswer
 

n°1254589
bigears
Posté le 28-11-2005 à 11:48:16  profilanswer
 

je pense qu'il faudrait un genre de timer qui executerai le meme code que lorsque tu clic sur le bouton.
 
genre la même chose qu'en java avec les Timer et ActionListener.

n°1254599
Ummon
Posté le 28-11-2005 à 12:14:58  profilanswer
 

Et si tu tapais simplement 'Timer' dans ton Qt Assistant ?

n°1254616
i'n'i
Posté le 28-11-2005 à 12:47:40  profilanswer
 

ok j'ai vu qu'il y avait une classe QTimer en effet, dans mon cas il faut que lorsque que je clique sur ma widget, je lance un slot qui fait une chose, puis (3 secondes après par exemple) une autre.
 
C'est possible avec QTimer? comment s'y prendre en 2 mots? ou fait-il que je passe par 2 signaux/slot?
 
Merci ;)

n°1254672
IrmatDen
Posté le 28-11-2005 à 14:39:06  profilanswer
 

En 2 mots, QTimer::singleShot()
 
En plus de 2 mots, voici ton shéma actuel:
joueur humain joue > déclenche un signal
slot branché au signal > l'IA joue
 
La modif est d'insérer un slot supplémentaire:
joueur humain joue > déclenche un signal finHumain
slot branché au signal finHumain > lance un timer singleshot branché au slot IAJoue
Slot IAJoue > lance la phase de l'IA.
 
Tu n'as qu'à régler le délai du timer et t'es rendu.

n°1254873
i'n'i
Posté le 28-11-2005 à 19:11:15  profilanswer
 

IrmatDen a écrit :

En 2 mots, QTimer::singleShot()
 
En plus de 2 mots, voici ton shéma actuel:
joueur humain joue > déclenche un signal
slot branché au signal > l'IA joue
 
La modif est d'insérer un slot supplémentaire:
joueur humain joue > déclenche un signal finHumain
slot branché au signal finHumain > lance un timer singleshot branché au slot IAJoue
Slot IAJoue > lance la phase de l'IA.
 
Tu n'as qu'à régler le délai du timer et t'es rendu.


 
Yes! ça marche nickel!  
je fais :
  QTimer *timer = new QTimer(this);
  connect(timer, SIGNAL(timeout()), this, SLOT(monSlot()));
  timer->start(2000);
et mon slot ce lance au bout de 2 secondes.
 
merci beaucoup à toi IrmatDen et à ceux qui m'ont répondu ;)

n°1255036
IrmatDen
Posté le 28-11-2005 à 23:55:00  profilanswer
 

Y'a pas de quoi ;)
 
Mais pourquoi passes-tu par un timer, plutôt que par le single shot?
Voilà l'équivalent de tes 3 lignes:

Code :
  1. QTimer::singleShot(2000, this, SLOT(monSlot()));


Pas de création superflue de timer, pas de connect. En interne c'est sans doute très ressemblant à ce que tu as fait, mais là est tout l'intérêt d'une lib n'est-ce pas? :)

n°1256245
i'n'i
Posté le 30-11-2005 à 18:38:57  profilanswer
 

En effet passer par un QTimer::singleShot(2000, this, SLOT(monSlot())) fonctionne également et il n'y a pas de création superflue de timer, pas de connect.
 
Merci à toi.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Pb de synchro avec Qt

 

Sujets relatifs
Est il possible de savoir quant un fichier mdb est en phase de synchro [Javax.sound] Pb avec le Mixer et la synchro
[C++] Socket & Synchro write/read[Java] 3 threads synchro
[Fixed!][HTML] (Form) 'action' avec variables en GET ? (Pb)synchro modele/code
[JAVASCRIPT] Synchro entre Javascript et une boite de dialogueAppForge Palm: j'arrive pas a utiliser les conduites de synchro.
[OpenGL] Coment activer la synchro verticale? 
Plus de sujets relatifs à : Pb de synchro avec Qt


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)