top of page

Le corps du programme :    thread principal    main()

 

 

Les bibliothèques :

SDL bien sur (1.2) et pour le multi-threading : pthread (n’oubliez pas le « Linker setting ») avec Windows.

Et un include d’une bibliothèque de fonctions perso.

 

Les principales variables :

 

Les variables communes au jeu et utilisées par de nombreuses fonctions seront déclarées en globales : gain de temps à l’exécution (temps machine de recopie d’arguments), facilité d’échange indirect d’informations entre les fonctions et gain de temps lors de la conception. Travaillant seul et sur de petits projets, je ne vois pas pourquoi je m’en priverais.

Bien sur, pour les fonctions l’aspect paramétrique est conservé et à chaque fois que cela a un intérêt et on utilisera évidement des arguments.

 

La gestion des boules de billard repose sur une structure « Boule » avec 3 instanciations pour le billard français.

 

Enfin il y a des variables particulières qui sont communes au 2 threads pour y accéder on passera par des MUTEX. Les portions de code entre le verrouillage et le déverrouillage d’un MUTEX sont minimisées autant que possible (pour ne pas faire attendre le thread concurrent).

 

En ligne 31 Time représente le temps:

cette variable est incrémentée à chaque boucle

 

En ligne 35 mouv va nous indiquer si au moins une boule est en mouvement

 

En ligne 45 la déclaration du thread 2 dédié à l'affichage

 

Et le MUTEX en ligne 47

Structure pour les 3 boules

 

les calculs de position et de vitesse se font avec des double

 

on distingue les composantes de vitesse instantanée et celles initiales obtenues au moment du choc

 

chaque boule a son indicateur de mouvement mouv

 

tdep enregistre l'instant de départ de chaque choc

 

Le corps du programme, les initialisations, la boucle principale et la fin du programme

 

Pour une bonne vision de l'architecture, chaque bloc est bien identifié, le code est découpé en de nombreuses fonctions très explicites cela permet de s'y retrouver facilement avec une excellente évolutivité et maintenabilité.

 

En ligne 203 : on lance le thread 2 dédié à l'affichage.

 

La fonction boucle() constitue toutes les tâches du thread principal :

  - elle tourne à 1000 fps lorsque les boules sont en mouvement

  - elle attend tout simplement les évènements dans le cas contraire

 

Les lignes 221 et 223 servent respectivement à verouiller puis déverrouiller le MUTEX lorsque l'on accéde aux variables partagées (par les 2 threads).

 

 

Précédent                                                                         Sommaire                                                                               Suivant  >

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

bottom of page