MakerSpace Amiens · Microcontrôleurs
Lancement : le jeu, le réseau, l'organisation
Alban Petit

Tout ce qui vient des TD sert : la carte, la game loop, la machine à états, l’écran, le joystick.

Un Snake, deux joueurs, deux jeux
flowchart LR
J1["Joueur 1 : joystick"] --> C["Console XIAO : règles et écran"]
C <-->|"Wi-Fi + WebSocket"| N["Joueur 2 : navigateur"]
Le joueur 1 joue au Snake sur la console. Le joueur 2 rejoint la partie depuis son téléphone, sur une page servie par la console elle-même.
Les deux ne jouent pas au même jeu : c’est un multijoueur asymétrique.

delay()
Des pistes, pas une liste : reprenez-en une, combinez-les, ou inventez la vôtre.
Une seule règle : ses actions doivent changer vraiment la partie.


1
Chaque joueur peut-il gagner ? Un rôle trop puissant tue le jeu de l’autre.
2
Les deux ont-ils toujours quelque chose à faire ? Un joueur qui attend décroche.
Deux « oui », et votre idée tient. Gardez la trace de vos essais : ils justifient votre choix.

Prête depuis le TD4
delay()justPressed() et le joystick calibréLe Snake repart de tout cela. Seuls la mécanique de jeu et le réseau sont neufs.
Le Pong sur la console Souder et tester la carte

Faire entrer un navigateur dans la partie
flowchart LR
T["Téléphone : 192.168.4.2"] <-->|Wi-Fi| C["Console : 192.168.4.1"]
En point d’accès, la console crée son réseau : pas besoin du Wi-Fi de l’école, ni d’Internet. Le téléphone s’y connecte et ouvre http://192.168.4.1/.
Donnez à votre réseau un nom unique dans la salle.

Envoie la page du joueur 2, une fois, à l’ouverture.
Le navigateur demande, la console répond, la connexion se ferme.
Échange les messages du jeu, pendant toute la partie.
La ligne reste ouverte : chacun parle quand il veut.
Wi-Fi, HTTP et WebSocket ESP32, Wi-Fi et WebSocket

La page une fois, puis les messages en continu.

| Sens | Message | Signification |
|---|---|---|
| Console → navigateur | STATE:PLAYING |
La phase de jeu change |
| Console → navigateur | SCORE:12 |
Nouveau score |
| Navigateur → console | FOOD:12,7 |
Demande : une pomme en (12, 7) |

sequenceDiagram
participant N as Navigateur
participant C as Console
N->>C: GET / (HTTP)
C-->>N: la page
N->>C: ouverture du WebSocket
C->>N: STATE:PLAYING
N->>C: une demande du joueur 2
Note over C: la console valide, puis applique
C->>N: le nouvel état
Les messages sont à vous : seul l’enchaînement est imposé.

stateDiagram-v2
[*] --> Attente
Attente --> Partie : navigateur connecté
Partie --> Pause : navigateur perdu
Pause --> Partie : navigateur revenu
Partie --> Fin : serpent mort
Fin --> Attente : START
Un téléphone qui se met en veille est un événement de la machine à états, pas une surprise.

Huit séances, cinq jalons
| Séance | Objectif |
|---|---|
| P1 | Lancement, repo, Snake et joueur 2 sur papier |
| P2 | Le Snake en solo : grille, déplacement |
| P3 | Le Snake en solo : croissance, collisions |
| P4 | Le réseau et le protocole |
| P5 | Le joueur 2 : sa page, son rôle |
| P6 | Le joueur 2 intégré au jeu |
| P7 | La robustesse et les tests |
| P8 | Finalisation et démonstration |

Pour le Snake, aucun tutoriel ne vous guide ligne à ligne. C’est le cœur du projet : chercher, essayer, comparer, choisir.
Du code trouvé ailleurs (en ligne, assistant IA) ? Permis, s’il est compris et cité dans votre journal de bord.

| Dans le repo | Contenu |
|---|---|
| La carte | Reprise des TD3 et TD4 : schéma, routage, tests |
| Le firmware | Code en modules, machine à états, protocole |
| Les tests | Chaque exigence vérifiée, avec son résultat |
| Le journal de bord | Une entrée par séance, avec vos sources |
| La présentation | Une courte vidéo ou un poster |
Et une démonstration en direct : une partie complète, déconnexion du navigateur comprise.
Énoncé du projet Méthodologie de projet

30 %
les TD, carte comprise, déjà validés en séance
70 %
le projet : jeu, joueur 2, code, repo et démo
Une note commune au binôme : chacun doit savoir expliquer tout le projet, y compris ce qu’il n’a pas codé.


Objectif de la prochaine séance : un serpent qui avance sur la console.
Créer son repo depuis le template Énoncé du projet
