Skip to content
Raphael Margueron edited this page Apr 17, 2019 · 1 revision

Développement

Afin de pouvoir simplifier l'animation pour le framework graphique, le patterne se déroule toujours de manière synchrone, pour ceci nous avons utiliser une notion de "step", qui sera expliqué dans le chapitre concernant les entitées.

Logique

Buffer circulaire

Javascript ne proposant pas de buffers circulaire, nous avons implémenté dans la class Buffer, notre propre implémentation du buffer circulaire. Étant donnée que Javascript n'a pas un typage fort, il nous est possible de stock n'importe quelles données dans ce buffer.

Buffer imaginaire

Nous avons créer une classe qui a la même interface qu'un buffer circulaire standard mais qui n'est jamais vide et jamais plein. Ceci permet d'affecté les entités qui sont sur les bords comme consumateur pour l'entité de gauche et producteur pour celle de droite.

En cas de prélévement de ce buffer, on retourne une couleur aléatoire.

Entitée

Nous avons appelé entité, les producteurs-consomateurs car nous avons généraliser le problème pour pouvoir faire des chaînes de producteurs-consomateurs, une entité peut alors être à la fois producteur et consomateur.

Nous avons eu pour idée de symboliser les producteurs-consomateur par des petits cercle sont blanc quand ils ne contienne pas de donnée qui sont d'une couleur des couleurs.

Chacune des entitées a deux buffers cible, l'un dans laquelle elle va consommer et un autre où elle va produire.

Chaque frame de l'animation toutes les entitées vont se déplacer de 1 pas. Si elle arrive au nombre de pas maximal elle va consommer ou produire en fonction de son été (aller ou retour). Le nombre des pas maximum est inversément proportionelle à la vitesse déterminé par le silider dans l'UI.

Historique

Pour informer l'utilisateur du déroulement du programme nous avons implémenté un historique de logs.

Il signale : le démarrage du programme, les problèmes de synchronization dans le mode asynchrone et l'arrivé des couleurs au dernier buffer imaginaire.

Généralisation

Avec la programation orienté objet, il a très facile de généraliser notre programme pour avoir plusieurs buffers.

Graphique

Déroulement de l'animation

Quand un entité porte un valeur elle est color de la couleur de sa valeur.

Les buffers sont colorier de la couleur des données qu'ils contiennent

En fonction du pas de l'entité elle est dessiné a une distance proportionelle entre sa position et le nombre de pas maximum.

Mode plein écran

TODO

Clone this wiki locally