Stackchess

 

Contexte

     Dans le cadre de ma première année de formation d’ingénieur à l’École Nationale Supérieure d’Informatique pour l’Industrie et l’Entreprise (ENSIIE), j’ai suivi des cours dédiés à la programmation impérative. Nous devions réaliser un projet comptant pour 1/3 de la note finale du module (note obtenue : 20/20).

Règles du jeu

     Stackchess est version modifiée du jeu d'échecs dans laquelle il est possible d'empiler les pièces d'une même couleur sur les cases. À chaque tour, un joueur peut déplacer un nombre quelconque de pièces situées sur le haut de la pile d'une même case. Néanmoins, le déplacement doit être légal pour chacune de pièces déplacées. Par ailleurs, il ne suffit pas de se déplacer sur une case contenant une pièce adverse pour la prendre ; il faut déplacer un nombre de pièces strictement supérieur à celui des pièces adverses dans la case atteinte. Le but du jeu n'est plus de prendre le roi de l'adversaire, mais de prendre toutes ses pièces. En particulier, il ne sera pas obligatoire pour un joueur de sortir d'une situation d'échec (cas où le roi du joueur peut être pris le tour suivant).

Fonctionnement

     On joue sur un plateau de taille 6×6. On utilisera Les pièces utilisées sont indentiques au jeu d'échecs classique et seront identifiées de la manière suivante :

  • Roi (notation R) peut se déplacer d'une case verticalement, horizontalement ou en diagonale.
  • Dame (notation D) peut se déplacer d'un nombre quelconque de cases verticalement, horizontalement ou en diagonale.
  • Fou (notation F) peut se déplacer d'un nombre quelconque de cases en diagonale.
  • Tour (notation T) peut se déplacer d'un nombre quelconque de cases verticalement ou horizontalement.
  • Pion (notation P)
    • si la case visée ne contient pas de pièce adverse : peut se déplacer d'une case en direction de l'adversaire, de deux si le pion n'a pas encore bougé de la partie.
    • si la case visée contient au moins une pièce adverse : peut se déplacer d'une case en diagonale en direction de l'adversaire.

On ne peut pas sauter par-dessus une pièce (mais on peut se placer dessus si elle est de la même couleur).

  • Initialement, le plateau est le suivant, où le nom d'une pièce est suivi de sa couleur :

Capture

  • Chaque joueur joue à tour de rôle, en commençant par les blancs.                                                                                                             
  • À son tour, un joueur choisit une case et déplace un nombre qu'il choisit de pièces en haut de la pile sur cette case. Le déplacement n'est possible que si le coup est légal pour toutes les pièces déplacées. Les pièces conservent leur ordre. En particulier, si la case cible est occupée par des pièces du joueur, les pièces s'ajoutent dans le même ordre au-dessus des pièces déjà présentes. Si la case cible est occupée par des pièces de l'adversaire, le déplacement n'est possible que si on déplace strictement plus de pièces qu'il n'y a des pièces de l'adversaire sur la case cible. Dans ce cas, les pièces de l'adversaire sont prises et retirées du jeu.
  • La partie se termine quand un des joueurs a pris toutes les pièces de son adversaire, ou si un des joueurs abandonne. Il peut également y avoir un cas d'égalité quand chacun des joueurs ne possède que des pièces distinctes qui n'ont pas de déplacement légal en commun, par exemple un fou et une tour. (En effet, dans ce cas, il est impossible de prendre les pièces de l'adversaire puisqu'il n'est plus possible de déplacer deux pièces en même temps.)

 

Interface

L'affichage se compose de deux parties : à gauche, le plateau de jeu vu de dessus (on ne voit donc que les pièces au sommet des piles) ; à droite, les coordonnées et le contenu de la pile de pièces sur une case sélectionnée.

En dessous du tableau se trouve une ligne indiquant de quel joueur c'est le tour, et un invite de choix d'action. À son tour, un joueur entre les coordonnées d'une case (par exemple c5). L'affichage se met à jour en mettant à droite le contenu de la case qui vient d'être sélectionnée. Le joueur peut alors entrer une lettre pour effectuer les actions suivantes :

  • avec "c" on change la case sélectionnée. Il faut alors entrer de nouvelles coordonnées, l'affichage est remis à jour et le joueur recommence à entrer une lettre.
  • avec "d" on déplace des pièces depuis la case sélectionnée. On vérifie qu'il y a au moins une pièce sur cette case et qu'elle appartient bien au joueur dont c'est le tour. Si c'est le cas, le joueur entre un nombre de pièces à déplacer ; ce nombre doit être compris entre 1 et le nombre de pièces sur la case. Le joueur entre ensuite la coordonnée cible. Si le déplacement est légal, il est effectué, et les pièces adverses sont prises le cas échéant. Si le déplacement n'est pas possible, un message d'erreur informatif est affiché et le joueur recommence à entrer une lettre.
  • avec "a" le joueur abandonne la partie.

L'affichage est rafraîchi après chaque déplacement, et on change de joueur.

Capture 1

Technologies et outils :

  • Emacs
  • Langage C

Équipe et ressources :

Ce jeu a été réalisé intégralement en solo. Il a été testé par des utilisateurs et leurs remarques ont été prises en compte dans le développement.

Temps de développement :

2 mois

Sources :

https://github.com/Lucasherfort/Stackchess