Projet IMA3 P1, 2015/2016, TD2
Sommaire
Projet IMA3-SC 2015/2016 : MORPION
Cahier des charges
Notre projet "système communicant" aura pour but de créer une interface connectée du "morpion". L'objectif est de permettre à un joueur interagissant sur un site internet de jouer contre une autre personne qui, elle, jouera à l'aide d'un affichage fait à partir de leds.
Nous cherchons donc à exploiter la capacité asynchrone d'un websocket afin de permettre une partie en temps réel.
Matériel
- Une nanoboard
- Une raspberry pi
- Une matrice de leds 9x9 ou plus
- Un clavier numérique ou 9 boutons-poussoirs
- Des ordinateurs avec les logiciels de développement nécessaires
Optionnel
- Un buzzer afin d'avertir le joueur d'un choix incohérent
- Trois afficheurs sept segments afin d'ajouter un tableau des scores
Séance 1
Partie électronique
Le but de cette première séance était de se familiariser avec le logiciel de conception Altium Designer et de réfléchir à la façon d'aborder la conception électronique du morpion.
Cette conception se fera en plusieurs étapes :
- gérer le positionnement d'un curseur en fonction de l'état courant de la partie
- gérer l'affichage de la matrice en fonction des cases remplies / sélectionnées
- permettre la réception et l'envoie de données à l'aide de la liaison série
- traiter la remise à zéro du plateau en cas de fin de partie
Positionnement du curseur et état de la partie
Dans un premier lieu, il était nécessaire de traiter les actions entrantes. En effet, si ce n'est pas au tour du joueur "physique", l'utilisation des boutons doit être bloquée.
Ceci consiste simplement à effectuer un ET logique entre un bit symbolisant le joueur courant (si 1 alors joueur physique, si 0 alors joueur en ligne) et l'action demandée.
Une fois les choix accessibles, il faut désormais les traiter. Le traitement s'effectuera à l'aide de bascules, chaque case comportera deux bascules : une bascule de sélection (la case est-elle sélectionnée ?) et une bascule permettant de savoir si la case a déjà été jouée.
Si la case a déjà été jouée, il ne faut empêcher l'utilisateur de la jouer.
Nous considérerons que le joueur en ligne n'effectuera pas de choix erroné et nous testerons seulement les choix du joueur "physique".
Les ronds verts permettent la distinction des 9 cases.
Le rond jaune correspond à la zone des sorties d'état. Plus précisément, il s'agit de deux bus regroupant les cases remplies et le lieu de la case sélectionnée.
Le rond noir correspond au choix de l'adversaire.
Le rond orange correspond à la sortie "selection_done" qui effectue un état haut lorsqu'un choix valide a été fait par l'utilisateur.
Le rond rouge met en évidence la zone permettant de traiter les décalage du bit de sélection. Ce décalage consiste à garder seulement UNE bascule à l'état haut en effectuant le passage logique d'une bascule à une autre en fonction du choix tout en appliquant un reset sur l'ancienne sélection. Le schéma de ce déplacement se trouve ci-dessous et est appliqué aux 9 cases.