Projets de programmation

le 421

Dans le cadre de ce projet de programmation vous réaliserez un programme qui devra offrir un plateau de jeu virtuel au jeu 421.

On s'intéressera ensuite à la recherche d'une solution de résolution optimale par programmation dynamique.

Description du projet

L'objectif est d'écrire un programme qui, dans un premier temps, offre à un ensemble de joueurs un plateau de jeu virtuel pour le 421.

Ce plateau de jeu devra maintenir la liste des joueurs pour la partie en cours, gérer l'ordre de jeu, le lancé de dés et le compte des jetons (charge et décharge) en fonction des règles choisies. À la fin de chaque partie, le plateau de jeu virtuel devra ajouter, dans un fichier texte, le nom du vainqueur ainsi que son score et ne conserver que les 10 meilleurs.

La dernière étape de ce projet est de programmer une méthode de résolution automatique qui permette de déterminer une stratégie optimale.

Travail à effectuer

La bonne réalisation de ce projet repose sur l'utilisation de structures de données pour gérer la liste des joueurs, l'ordre de jeu et les dés (choix de ceux que l'on relance ou l'on ne relance pas). Vous devez donc commencer par réfléchir à ces structures avant de programmer.

Ensuite vous programmerez les fonctionnalités basiques avec un affichage sur le terminal. Votre moteur de jeu devra être très indépendant de vos procédures d'affichage pour que vous puissiez ensuite réaliser un affichage plus adapté à l'aide d'une bibliothèque dédiée. N'oubliez pas la sauvegarde des vainqueurs de chaque partie dans le fichier consacré.

Idéalement et quelle que soit l'interface utilisée, le jeu présentera un menu dans lequel il sera possible de commencer une nouvelle partie ou d'afficher la liste des 10 meilleurs joueurs. En commençant une nouvelle partie, le menu devra proposer d'inscrire de nouveaux joueurs pour la partie et de lancer cette dernière.

Enfin, vous pourrez vous attaquer à la recherche d'une méthode de résolution automatique.

L'écriture du programme répondant à ce projet peut devenir rapidement insurmontable si l'on ne découpe pas le code en plusieurs procédures ayant chacune une tâche bien précise. Il faudra donc s'astreindre à écrire et tester ces procédures au fur et à mesure. Ceci a l'avantage de faire avancer votre travail plus rapidement et de ne pas avoir à revenir sur du code qui n'a pas été testé et validé.