diff --git a/.gitignore b/.gitignore index bf75d00..c05dc6d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ Debug/* debug Debug/ + +site/* +out/* \ No newline at end of file diff --git a/docs/archi.md b/docs/archi.md new file mode 100644 index 0000000..2d23efa --- /dev/null +++ b/docs/archi.md @@ -0,0 +1,36 @@ +# Architecture du programme + +Le programe comporte plusieurs composants. Il y a : + +- des [threads](thread.md) + + - des queues, pour comuniquer entre les threads, + + - des varriables partagées (type black board), + + - un mutex, pour gérer l'acces à l'écran + +- des [classes](class.md) + +- des pérriférique: + + - L'[écran](lcd.md) + + - Le [générateur de nombre aléatoire](rng.md) + + - Les [leds](led.md) + + - Le [joystick](joystick.md) + +## Diagramme des composants : + +Les composants intéragicent de la manière suivante : +![Schéma des composants](Architecture_projet.svg) + +## Principales variables : + +Les principales variables sont : + +- ```joueur``` qui représente l'entier joueur et contient toutes les informations nécéssaires, +- ```Table_ennemis``` qui contient tous les monstres ainsi que leurs informations. + diff --git a/docs/class.md b/docs/class.md new file mode 100644 index 0000000..45bc590 --- /dev/null +++ b/docs/class.md @@ -0,0 +1,23 @@ +# Classe + +Les classes utilisées sont les suivantes : + +![Diagramme de classes](class.svg) + +## Classe de representation + +Pour representer les élements dans le jeu, on utilise les classes : + +- ```Joueur``` qui n'est instancier qu'une seule fois, et qui represente le joueur, + +- ```Monster``` qui represente les monstres, + +- ```Missile``` qui represente les projectiles. + +Des instances de la classe ```Missile``` sont memebres des deux autres classes car elles representent les projeciles de basse. + +De plus, les threads ```Joueur_1``` et ```Block_Enemie``` envoie des objet ```Missile``` dans la ```queue_N``` vers le thread ```Projectile``` pour lui signaler les nouveaux missiles à simuler. + +## Classe de messagerie + +Les classes utiles pour les messages sont ```struct Collision``` qui peremt de transmetre toutes les informations relatives à un choc avec un monstre en même temps, et la class ```enum End_Type``` qui décrit le type de fin de vague que l'on rencontre (défaite des monstre ou du joueur). \ No newline at end of file diff --git a/docs/extra.css b/docs/extra.css new file mode 100644 index 0000000..2f50f4d --- /dev/null +++ b/docs/extra.css @@ -0,0 +1,5 @@ +:root { + --md-primary-fg-color: #00778B; + --md-primary-fg-color--light: #ECB7B7; + --md-primary-fg-color--dark: #90030C; + } \ No newline at end of file diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..429a772 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,15 @@ +# Space Invader + +Projet du second semetre de : + +* [Léopold Clément](mail:leopold.clement@ens-paris-saclay.fr) + +* [Thomas Omarini](mail:thomas.omarini@ens-paris-saclay.fr) + +Si vous avez des difficultés avec le jeu, un tutoriel est disponible [ici](tuto.md). + +Sinon, tous les détails techniques sont expliquer [ici](archi.md). + +!!! info "Record de fin" + Si vous arrivé jusqu'à la vague 15, prévenez nous. + diff --git a/docs/joystick.md b/docs/joystick.md new file mode 100644 index 0000000..ca4c733 --- /dev/null +++ b/docs/joystick.md @@ -0,0 +1,3 @@ +# Joystick + +On réaliste un seuillage autour de la valeur centrale. Le joystick n'est pas vraiment annalogique, il n'y a que 8 directions possibles. \ No newline at end of file diff --git a/docs/led.md b/docs/led.md new file mode 100644 index 0000000..2456e3b --- /dev/null +++ b/docs/led.md @@ -0,0 +1,10 @@ +# LED et GPIO + +## Ecriture sur les LEDs + +Pour facilité l'utilisation des LEDs, on utilise une liste d'objet ```struct led```, ainsi ```Leds[n] = {{LEDXX_GPIO_Port, LEDXX_Pin}}```. + +On peut ainsi utilisé la ligne ```HAL_GPIO_WritePin(Leds[idx].port, Leds[idx].pin, !(charge-1