07 · Projet personnel · IA de jeu / C++

Tetris AutoCPP
Moteur de jeu, heuristiques et mode LAN

Un jeu SDL2 C++17 qui sépare les règles, le calcul des placements IA, le rendu et les échanges TCP entre deux postes. Il permet d’étudier la simulation déterministe et la cohérence des états distribués.

C++17SDL2Tetris / 7-bagRecherche IATCP / LAN

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

  1. Moteur Game et Pieces : grille, collisions, rotations et score
  2. AutoPlayer : évaluation heuristique et recherche sur plusieurs placements
  3. UI SDL2 : affichage, événements et commandes clavier
  4. LAN : protocole, snapshots, supervision de connexion

Choix techniques

Comportements testables et explicables

01 / CONCEPTION

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.

02 / CONCEPTION

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.

03 / CONCEPTION

Recherche heuristique

Le pilote analyse hauteur, trous, transitions, puits et lignes complétées. La version native inspecte jusqu’à trois pièces.

04 / CONCEPTION

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.

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.

Autre réalisationNeural Boundary Lab