Objectif
Le problème logiciel
Conserver une logique de jeu testable, sans la mêler au rendu SDL2 ni au transport réseau. Le programme doit pouvoir être contrôlé par un joueur, exécuté automatiquement ou comparé en mode LAN.
Architecture
Un cœur C++ séparé des interfaces
- Moteur Game et Pieces : grille, collisions, rotations et score
- AutoPlayer : évaluation heuristique et recherche sur plusieurs placements
- UI SDL2 : affichage, événements et commandes clavier
- LAN : protocole, snapshots, supervision de connexion
Choix techniques
Comportements testables et explicables
Modèle indépendant du rendu
La grille 10×20 et les pièces sont définies dans le cœur C++ : la présentation n’a pas autorité sur les règles.
Tirages reproductibles
Un générateur MT19937 et un 7-bag permettent de rejouer les mêmes séquences de pièces pour une même graine.
Recherche heuristique
Le pilote analyse hauteur, trous, transitions, puits et lignes complétées. La version native inspecte jusqu’à trois pièces.
Transport séparé
Le mode versus utilise des commandes et des snapshots réseau. Les tests ciblent notamment la fragmentation TCP et la résilience.
Démonstration
Exécuter le C++ dans le navigateur
Une version de démonstration compilée en WASM permet de jouer au clavier, mettre la partie en pause et lancer le pilote automatique. Les rotations, la gravité et le choix des placements sont calculés en C++. Le réseau LAN, les sockets et SDL2 ne sont pas exécutés sur GitHub Pages.
Exécution dans le navigateur, sans backend et sans installation.
Qualification
Compilation, tests et sources
- Compilation native validée (GUI désactivée, cœur C++ et tests réseau).
- Tests automatisés game_protocol_network_tests et protocol_and_tcp_resilience : réussis.
- Répertoire source : src/core, src/ai, src/net, src/ui ; dossier docs/ pour les contrats LAN.
- Module autonome WASM et tests de déploiement dans demos/engine.
Les dépôts sources complets sont fournis dans les archives de projet. Le code C++ des adaptations WebAssembly est inclus et reproductible depuis le portfolio, dossier demos/engine.
Périmètre
Ce que montre — et ne montre pas — le portage
La démonstration web emploie une recherche IA à deux niveaux, adaptée à l’exécution immédiate dans un onglet, contre trois dans la version native. Elle ne remplace pas les validations sur deux machines physiques ni les tests SDL2.