Space_Invaders/docs/thread.md
Leopold Clement 72bff4a8a6 Doc base
2021-07-17 20:07:01 +02:00

2.2 KiB

Les threads

Description des threads :

GameMaster

Ce thread permet de gérer la fin des niveaux, càd que faire lorsque il n'y a plus de mostres ou plus de vie pour le joueur. Le thread est bloqué tant qu'il ne ressoit pas de message par queue_F.

Ce thread est le plus important, car sans ses acions, le jeu ne peut pas avancer, il a donc la plus grande priorité

Joueur_1

Ce tread gère les déplacements et l'affichage du joueur ainsi que ses tirs.

Ce thread est important à la fluidité du jeu, il à donc la deuxième plus grande priorité

Block_Enemie

Ce thread gère le block d'ennemis, leurs vies, et leurs tirs. Pour chaque pas de temps, chaque monstre à une probabilité de tirer de \frac{\text{numéro de la vague}}{15}. Ainsi, à chaque vague le jeu deviens plus dur.

Ce thread a une priorité normale.

Projectile

Ce thread gère les missiles. Il recois les demandes les nouveaux missiles par la queue_N, et si il n'y a pas trop de missiles déjà en jeu (moins de 200), il le rajoute et commence à le simuler. C'est ce thread qui gère toutes les collisions. En cas de collisions détecter, il tue le missile incriminé et envoie un messega via la queue_J quand le choc est avec le joueur, et la queue_E lorsque le choc implique un monstre.

Ce thread a une priorité normale.

HUD

Ce thread gère l'affichage de la bar d'info en haut de l'écran, il ne fait que lire des varriables partagé.

Ce thread a une priorité basse.

chargeur

Ce thread sert a incrémenter régulierement le compteur representant la charge du tir secondaire.

Ce thread a une priorité basse.

Communication entre les threads :

Queue_F

On envoie un objet enum End_Type, cela permet de débloqué le thread GameMaster.

Queue_N

On envoie un objet struct Missile, cela permet de demander la création d'un nouveau missile.

Queue_J

On envoie un int8_t qui represente les dégats a appliquer au joueur (on peut imaginer des dégats négatif pour des soins).

Queue_E

On envoie un objet struct collision qui comporte le numéro du monstre et les dégats à lui appliqué.