2 Règles retenues dans ce projet

Documents pareils
Compte-rendu de projet de Système de gestion de base de données

Règles du Jeu d Echecs de la FIDE

Télécom Nancy Année

Premiers pas sur e-lyco

Interface PC Vivago Ultra. Pro. Guide d'utilisation

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

Une protection antivirus pour des applications destinées aux dispositifs médicaux

Guide de l'utilisateur de Telemarketing. Version 6.0 SP1

Utilisation de l'outil «Open Office TEXTE»

SOMMAIRE. Travailler avec les requêtes... 3

Consigne : je remplis le tableau en tenant compte des informations de la ligne supérieure et de la colonne de gauche (droite pour les gauchers)

Championnat de France de Grilles Logiques Finale 7 juin Livret d'instructions

LES DÉTERMINANTS DE MATRICES

TP3 : Creation de tables 1 seance

LibreOffice Calc : introduction aux tableaux croisés dynamiques

Logiciels concernés. Situation. Ciel et le pont comptable. Note conçue et rédigée par Jalons sprl tous droits réservés - 27/06/2007.

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var Tel : bij@agasc.fr Word: Les tableaux.

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Promotion de la Bio-informatique

Algorithmes de recherche

MODE OPERATOIRE OPENOFFICE BASE

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Créer une base de données

Guide pour la réalisation d'un document avec Open Office Writer 2.2

Propagation sur réseau statique et dynamique

Escalade durant l'e.p.s. à l'école primaire

MODE D'EMPLOI DE LA CALCULATRICE POUR LES COURTS SÉJOURS DANS L'ESPACE SCHENGEN

Salle de technologie

Chapitre 4 Pierre, papier, ciseaux

Notre projet est de réaliser un document

Découverte et prise en main de SWEET HOME 3D

inviu routes Installation et création d'un ENAiKOON ID

Messages d'erreurs. Redémarrez votre PC en cliquant sur Démarrer, en sélectionnant ensuite Arrêter puis en cochant Redémarrer

Couples de variables aléatoires discrètes

Avec le pare-feu Windows Vista, vous protégez votre ordinateur contre les attaques provenant d'internet.

1. Étape: Activer le contrôle du compte utilisateur

I- Définitions des signaux.

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (

1. Utilisation du logiciel Keepass

À propos de Kobo Desktop Télécharger et installer Kobo Desktop... 6

Igor Štohl - Les meilleures parties de Garry Kasparov / Volume 1 PARTIE 13

Chapitre IV : La Tenue Des Livres Le journal Le grand Livre

Manuel de l'utilisateur d'intego VirusBarrier Express et VirusBarrier Plus

Guide d'utilisation du Serveur USB

Guide de démarrage rapide Centre de copies et d'impression Bureau en Gros en ligne

(VM(t i ),Q(t i+j ),VM(t i+j ))

Reaper : utilisations avancées

Chapitre 2 Devine mon nombre!

Navigation dans Windows

A.Mon ordinateur a-t-il une carte réseau?

KeePass - Mise en œuvre et utilisation

CODE CIVIL FRANÇAIS (ANTERIEUR A 1960)

A V I S N Séance du mercredi 1er avril

CHAPITRE VIII : Les circuits avec résistances ohmiques

A- Observez la vidéo A présentant le fonctionnement de deux objets techniques que nous

2 Grad Info Soir Langage C++ Juin Projet BANQUE

Mises à jour des logiciels Manuel de l'utilisateur

Support de formation Notebook

Didacticiel de mise à jour Web

1. Création d'un état Création d'un état Instantané Colonnes Création d'un état Instantané Tableau... 4

TRUCS & ASTUCES SYSTEME. 1-Raccourcis Programme sur le Bureau (7)

Création d'un questionnaire (sondage)

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

Comment bien démarrer avec. NetAirClub GUIDE ADMINISTRATEUR V1.5. Table des matières

LIVRET DE L'ARBITRE DE CLUB. Réalisation Eric FRIN Formateur Labellisé FFBB

ORACLE TUNING PACK 11G

TP a Notions de base sur le découpage en sous-réseaux

Une fois votre tableau excel complet, cliquer sur fichier enregistrer sous type de fichier (menu déroulant) csv (séparateur : point virgule).

Sauvegarde et restauration d'un système d'exploitation Clonezilla

MEDIAplus elearning. version 6.6

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Gestion de projet. GanttProject Didacticiel V novembre Gérard Gervois Frédéric Giamarchi

Travail collaboratif avec OpenOffice Texte (Writer)

Virtualisation de Windows dans Ubuntu Linux

TeamViewer 7 Manuel Manager

Traitement de texte : Quelques rappels de quelques notions de base

2010 Ing. Punzenberger COPA-DATA GmbH. Tous droits réservés.

Espaces probabilisés

TP2 - Conguration réseau et commandes utiles. 1 Généralités. 2 Conguration de la machine. 2.1 Commande hostname

MATHÉMATIQUES APPLIQUÉES S4 Exercices

Immersion - Vision 3D dans la RV.

Le publipostage avec Open Office

Commission Polydog Règlement de compétition SportPlaisir Catalogue des disciplines catégorie adresse niveau B

Trousse de sécurité d'alarme - NVR

Comment congurer WinEdt pour L A TEX?

SYSTÈME DE SURVEILLANCE DE LA TEMPÉRATURE

5 semaines pour apprendre à bien jouer un morceau de piano

Hubert & Bruno Lundi 12 octobre 2009 SAINT-QUENTIN (02)

Sophos Mobile Encryption pour Android Aide. Version du produit : 1.0

Guide de l'utilisateur : Surveillance MédiaSource Analytique

Avec la collaboration des Instituts du C.S.N L AVANT-CONTRAT

Stellar Phoenix Outlook PST Repair - Technical 5.0 Guide d'installation

Publipostage avec Calc

HP Data Protector Express Software - Tutoriel 3. Réalisation de votre première sauvegarde et restauration de disque

Transcription:

Conservatoire National des Arts et Métiers Département Informatique Année 2012-2013 1 Introduction Projet de l'ue NFP 136 : un mini-jeu d'échecs L'objectif de ce projet est de réaliser un mini-jeu d'échecs en mode texte. On rappelle que ce jeu se déroule sur un échiquier de 8 cases par 8 cases, alternant cases blanches et cases noires. Deux joueurs humains (on ne s'intéressera pas ici à la réalisation d'une éventuelle intelligence articielle), chacun d'entre eux doté de 8 pièces et 8 pions, s'arontent sur cet échiquier. Chacun dispose d'un roi, et l'objectif pour son adversaire est de le mettre en échec et mat. La section suivante détaille plus précisément les règles qui seront considérées dans ce projet, car certaines règles seront ignorées. On utilisera un achage en mode texte uniquement, et l'interface avec l'utilisateur se fera au clavier. 2 Règles retenues dans ce projet Dans un jeu d'échecs standard, le joueur blanc et le joueur noir disposent chacun d'un roi, d'une dame, de deux fous, de deux cavaliers, de deux tours (ce sont les 8 pièces), ainsi que de 8 pions. Chacune des pièces et pions d'un joueur a la même couleur que lui. Le joueur blanc commence la partie en jouant un coup, c'est-à-dire en eectuant un unique déplacement d'une de ses pièces ou d'un de ses pions. Puis le joueur noir joue un coup à son tour, et la partie se déroule ainsi en alternant les coups blancs et noirs, jusqu'à ce qu'elle se termine. Un pion ou une pièce ne peut jamais se déplacer sur une case occupée par un pion ou une pièce de la même couleur. Lorsqu'un pion ou une pièce se déplace sur une case occupée par une pièce ou un pion de l'autre couleur, on dit qu'elle prend cette pièce, qui est retirée de l'échiquier jusqu'à la n de la partie (la prise, lorsqu'elle est possible, n'est jamais obligatoire, sauf en cas d'échec). Les règles de déplacement des cinq types de pièces sont les suivantes : Le roi peut se déplacer d'une case dans n'importe quelle direction (diagonale, horizontale ou verticale), La dame peut se déplacer d'un nombre de cases quelconque dans toutes les directions (diagonale, horizontale ou verticale), La tour peut se déplacer d'un nombre de cases quelconque en ligne droite (horizontalement ou verticalement),

Le fou peut se déplacer d'un nombre de cases quelconque en diagonale, Le cavalier peut se déplacer de trois cases en tout : deux cases horizontalement et une case verticalement, ou bien une case horizontalement et deux cases verticalement. Une pièce ne peut jamais se déplacer à travers une case déjà occupée, sauf le cavalier, qui a la particularité de sauter par-dessus les autres pièces et pions. Les règles de déplacement des pions dépendent du contexte : Un pion ne peut prendre qu'en avançant en diagonale d'une case (il ne peut jamais prendre en reculant), Lorsqu'un pion ne s'est pas encore déplacé depuis le début de la partie, il peut avancer d'une ou deux cases verticalement (il ne peut pas reculer), si aucune pièce ou aucun pion (quelle que soit sa couleur) ne se trouve sur son passage, Lorsqu'un pion s'est déjà déplacé dans la partie, il peut avancer d'une case verticalement (il ne peut pas reculer), Lorsqu'un pion a traversé l'échiquier, il se transforme en pièce (fou, cavalier, tour ou dame). Un roi est dit en échec lorsqu'une pièce ou un pion adverse le menace, c'est-à-dire est en mesure de le prendre à son prochain tour si le joueur du roi menacé ne fait rien pour l'éviter. Dans un tel cas, le joueur du roi doit tout faire, à son tour de jeu, pour que son roi ne soit plus en échec (soit en prenant la pièce qui le menace, soit en déplaçant son roi, soit en mettant une de ses pièces entre son roi et la pièce qui le menace). De même, un joueur ne peut jamais jouer un coup s'il conduit à mettre son propre roi en échec. Si le roi d'un joueur est en échec et qu'il ne peut rien faire pour mettre n à cette situation, on dit que ce joueur est échec et mat : il perd donc la partie, et son adversaire est déclaré vainqueur. Si un joueur ne peut, à son tour de jeu, eectuer aucun déplacement sans mettre son propre roi en échec, mais que ce dernier n'est pas déjà en échec, alors on dit qu'il y a pat, et la partie est déclarée nulle. Nous ne considérerons, dans le cadre de ce projet, que ces deux ns possibles pour une partie : pat ou échec et mat. Voici les règles qui ne seront pas considérées dans ce projet : Le roque (coup impliquant un roi et une tour) ne sera pas possible, Un pion ne pourra jamais eectuer de prise en passant (une règle de prise spéciale, qui peut normalement s'appliquer quand un pion adverse avance de deux cases), 2

La règle des 50 coups, qui stipule que la partie peut être déclarée nulle par un des joueurs si cinquante déplacements consécutifs (noirs et blancs confondus) ont été eectués sans qu'aucune pièce ne soit prise et sans qu'aucun pion n'ait bougé, ne sera pas appliquée, La règle de la répétition de situation, qui stipule que la partie peut être déclarée nulle si une même disposition de pièces se reproduit trois fois lors d'une partie, ne sera pas appliquée non plus. 3 Initialisation de la partie et achage On attribuera à chaque ligne un numéro de 1 à 8 (1 pour la ligne du bas, 8 pour celle du haut), et à chaque colonne une lettre de a à h (a pour la colonne la plus à gauche, h pour la colonne la plus à droite). Initialement, les 8 pièces blanches seront placées sur la ligne 1, dans cet ordre : tour (qui sera donc en a1), cavalier, fou, dame, roi, fou, cavalier, tour (qui sera donc en h1). Puis, les 8 pions blancs seront placés sur la ligne 2. Ensuite, les 8 pions noirs seront placés sur la ligne 7. Enn, 8 pièces noires seront placées sur la ligne 8, dans cet ordre : tour (qui sera donc en a8), cavalier, fou, dame, roi, fou, cavalier, tour (qui sera donc en h8). L'achage se fera en mode texte, avec les règles suivantes : Chaque pièce/pion sera représenté(e) par un caractère, qui est l'initiale du nom de la pièce. Cette initiale sera en majuscule si la pièce est blanche, en minuscule sinon. Par exemple, 'd' représente la dame noire et 'P' un pion blanc, À titre indicatif, une case de l'échiquier sera représentée par 4 lignes de caractères : la première est un espace suivi de trois '_', la seconde est ' ' suivi de trois espaces et à nouveau de ' ', la troisième est ' ' suivi d'un espace, puis d'un caractère (un espace si la case est vide, le caractère représentant la pièce ou le pion se trouvant sur cette case sinon), lui-même suivi d'un espace et de ' ', et enn la quatrième est ' ' suivi de trois '_' et à nouveau de ' ', Il faut acher, au-dessus de l'échiquier, les lettres des colonnes, et, à sa gauche, les numéros des lignes. 4 Analyse du jeu Cette section donne, à titre indicatif, les diérentes étapes à suivre dans la conception du projet nal. 3

Figure 1: Exemple d'achage d'un échiquier. 1. Spécier une classe Piece (regroupant en réalité pièces et pions). On pourra en particulier utiliser des types énumérés (à dénir) pour le type et la couleur des pièces. 2. Spécier une classe Echiquier contenant toutes les informations nécessaires pour représenter une conguration donnée de l'échiquier. Par souci de simplicité, et pour ne pas avoir à gérer d'informations inutiles, on considérera que l'échiquier est uniquement constitué d'objets de la classe Piece (une case vide correspondra donc à une variable null). 3. Écrire une méthode pour initialiser une pièce ou un pion, puis une méthode pour initialiser l'échiquier. 4. Écrire une méthode achant l'échiquier (dans sa conguration courante). Supposons à présent que l'on ait écrit une méthode pour vérier qu'un déplacement donné est valide (on détaillera une telle méthode dans la section suivante). En utilisant une telle méthode : 1. Écrire une méthode qui teste si le roi d'une couleur donnée est en échec ou pas. Un roi est en échec s'il existe une pièce adverse pour laquelle se déplacer sur la case de ce roi constitue un coup valide. (Pour ce 4

faire, on pourra auparavant écrire une méthode chargée de déterminer les coordonnées de ce roi sur l'échiquier, en parcourant ce dernier.) 2. Écrire une méthode qui teste si un coup donné met en échec un roi d'une couleur donnée ou non. Pour cela, on pourra d'abord écrire deux autres méthodes : la première permet de jouer un coup donné, la seconde permet de l'annuler. Il sut ensuite de jouer le coup, de tester si le roi est en échec dans la conguration obtenue, puis de l'annuler. 3. Écrire une méthode qui teste si la partie est nie ou non, c'est-à-dire s'il y a pat ou échec et mat. Dans les deux cas, il faut vérier si, pour un joueur donné, il existe au moins un coup valide qui ne mette pas son roi en échec. (On pourra examiner toutes les pièces du joueur, et pour chacune parcourir tout l'échiquier à la recherche d'un coup valide.) 4. Écrire une méthode qui eectue un tour de jeu : achage de l'échiquier, informations au joueur (en particulier, il faut indiquer qui est le joueur courant et si son roi est en échec), saisie de la pièce à déplacer à l'aide de ses coordonnées sur l'échiquier (il faut vérier que ces coordonnées correspondent bien à une case de l'échiquier, et que cette case contient bien une pièce de la couleur du joueur), saisie de la case de destination de cette pièce (il faut vérier que ce coup est valide, et ne met pas en échec son propre roi), déplacement de la pièce sur l'échiquier. 5. Enn, écrire le main, qui gèrera l'initialisation de l'échiquier, l'alternance des tours de jeu, et la n de partie (pat ou mat). 5 Vérier la validité d'un coup Dans ce projet, nous aurons besoin d'une méthode vériant si un coup donné est valide. On détaille ici la façon dont une telle méthode peut être réalisée. Après s'être assuré que le déplacement ne s'eectue pas vers une pièce ou un pion de même couleur, vérier la validité d'un coup se fait en plusieurs temps, et il faut distinguer le cas général, qui englobe tous les coups impliquant un roi, une dame, un fou ou une tour, et deux cas particuliers, correspondant aux coups impliquant un cavalier ou un pion. Si on déplace un cavalier. C'est le cas le plus simple : il faut juste vérier que la distance entre la case d'arrivée et la case de départ est de deux cases horizontalement et une case verticalement, ou bien deux cases verticalement et une case horizontalement. Si on déplace un pion. Il faut prendre en compte les trois cas : si la case de destination est occupée par une pièce ou un pion d'une autre couleur, alors il faut vérier que l'on avance d'une case en diagonale ; sinon il faut vérier que l'on avance d'une ou deux cases si le pion ne s'est pas déjà déplacé (c'est-à-dire s'il est toujours sur sa ligne de départ) et d'une seule 5

case dans le cas contraire. Si on avance de deux cases, il faut également vérier que la case juste devant le pion est bien libre. Si on déplace un roi, une reine, une tour ou un fou. Il faut d'abord vérier que le déplacement est de l'un des 3 types suivants : horizontal, vertical, ou diagonal. Ensuite, il faut vérier que la pièce considérée est autorisée à se déplacer d'autant de cases horizontalement, verticalement ou en diagonale (selon le cas). Par exemple, le roi est autorisé à se déplacer d'une case horizontalement, mais un fou ne le serait pas (par contre, il serait autorisé à se déplacer de deux cases en diagonale). Enn, il faut vérier que toutes les cases situées sur la ligne horizontale, verticale ou diagonale (selon le cas) reliant la case de départ à la case de destination sont inoccupées. 6 Organisation et évaluation du projet Ce projet est à faire individuellement. Des séances de TP dédiées au projet sont prévues, et la soutenance aura lieu lors de la dernière d'entre elles. A titre indicatif, les principaux critères d'évaluation seront : Qualité de présentation Classes (pertinence, choix alternatifs, utilisation dans le code, etc.) Qualité du code (découpage, lisibilité, etc.) Maîtrise du code Originalité (gestion des problèmes rencontrés, achage d'informations intermédiaires, etc.) La transformation en pièce d'un pion ayant traversé l'échiquier sera notée sur 2 points (1 pour la transformation du pion en dame, + 1 pour la transformation en une pièce autre que la dame). Ainsi, un projet n'implémentant pas cette fonctionnalité sera noté sur 18 points. Lors de la soutenance, vous devez : apporter votre code/programme sur une clé USB. rendre un rapport de projet (bref et précis) comprenant : 1. Introduction 2. Détail, organisation, et justication des classes implémentées (variables et méthodes) 3. Description détaillée (en pseudo-code) de la méthode vériant la validité d'un coup 4. Dicultés rencontrées et conclusion 5. Annexe : listing du code 6