top of page

La boucle principale du thread principal

 

 

Voici la fonction boucle() qui est le cœur du thread principal, vous voyez qu’elle est très simple :

  • Phase 2 : Si mouvement on appelle la fonction Calcul() qui va calculer les positions des boules en fonction de la vitesse de choc initial

  • Phase 1 : Sinon on attend et on réagit aux évènements WaitEvent()

 

Nous verrons que l’Affichage possède aussi deux phases : en Phase 2 on n’affiche que le billard (image de fond) et les boules, en Phase 1 on affiche tout l’environnement de jeu (la queue de billard, le panel de contrôle, les tableaux de points …).

J

La ligne 283 sert à repositionner certains paramètres (notamment la position de la queue de billard) après un coup (init est mis à 1 lors d’un tir et reseté dans la fonction setInit() ). 

 

Le bloc de transmission des positions des boules (vers le thread Affichage) est commun aux deux phases, les variables partagées sont protégées par un MUTEX (entre les lignes 287 et 293).

 

Les lignes « SDL_EventState … » n’étaient pas prévues lors de la conception : elles servent à inhiber les évènements en Phase 1 et à les remettre en Phase 2. Sinon tous les évènements produits lors du mouvement débarquent lorsque l’on repasse en Phase 2.

 

       C’est là que je me suis aperçu que même SDL_WaitEvent() dépile les évènements du passé !

Précédent                                                                         Sommaire                                                                              Suivant  >

© 2015 par PicoSoft. Créé avec Wix.com

bottom of page