Projets de programmation

Othello

Description du jeu

Pour permettre de vous faire une idée précise du jeu, je vous invite à vous référer au site de la Fédération Française d'Othello et plus particulièrement à la section sur les règles du jeu.

Réalisation

Dans un premier temps, nous allons essayer de proposer quelque chose de très simple : jouer à deux personnes en utilisant l'ordinateur comme support à la place d'un vrai plateau de jeu.

Cette première phase est la plus importante. C'est ici que vous allez définir les structures de données que vous allez employer tout au long du projet. N'hésitez donc pas à y passer du temps, même si au début vous ne codez rien. Cela est normal, le premier travail se fait principalement sur papier.

Fonctionnalités minimales de votre programme

Proposer un support de jeu qui permette à deux humains de s'affronter dans une partie d'Othello.

Les cases de l'Othellier sont repérées par des coordonnées et c'est grâce à ces dernières que chaque joueur pourra positionner une pièce. L'axe X sera divisé en 8 cases, de 1 à 8 et l'axe Y en 8 cases, de A à H.

Le programme vérifiera la validité du coup et fera les modifications nécessaires sur les autres pièces (retournement des pièces contestées).

Le programme devra détecter la fin de la partie et désigner le vainqueur (blanc ou noir).

Le programme enregistrera une liste des 10 meilleurs joueurs avec leur score et leur nom et l'affichera à la fin de chaque partie.

L'Othellier sera représenté dans la fenêtre de terminal par une grille "dessinée" avec de simples caractères alphanumériques.

Questions que l'on doit se poser

Ceci étant un projet de structure de données et algorithmique, vous devrez vous demander quelle seront les structures de données les plus adaptées pour la représentation du problème.

L'Othellier est naturellement une grille, soit un tableau à deux dimensions. Mais peut-on enrichir ce modèle pour gérer les problèmes relatifs aux positions sur les bords, pour calculer les positions valides du prochain coup, pour retourner facilement les pièces, ... ?

La partie algorithmique ayant été très peu abordée en cours, vous pouvez commencer par utiliser des méthodes naïves. Cependant, rien ne vous empêche de proposer des solutions plus performantes. Vous devrez alors argumenter vos choix.

Calendrier

Pour vous éviter les déconvenues, je vous propose de respecter ce petit calendrier.

  1. Avant de vous lancer dans quelque programmation que ce soit, avancez votre réflexion sur les structures de données, les différentes procédures et les méthodes de traitement. Vous ne programmerez qu'une fois vos choix validés.
  2. Écrivez votre code de façon modulaire en le séparant en petites fonctions et en testant chaque fonction une fois qu'elle est écrite. Une fonctions écrite, testée et validée n'est plus un soucis, il suffit de l'utiliser, les bugs seront sans doute ailleurs.
  3. Terminez cette première partie avant de vous lancer, soit dans une programmation de jeu contre l'ordinateur, soit dans une interface graphique, soit les deux...