The Queen's Gambit

- Création d'un jeu d'échecs.
- Modélisation UML.
- Implémentation en Java/ Projet Éclipse.
- Java Swing pour le début de l'interface graphique.

Slides & Videos

Members

NameContribution
Michael TranChef de projet.
Se charge de:
- mettre en place un outil de partage de code et d’y former l’équipe (Git et Github)
- créer le cahier des charges
- Création image "chess modèle" donnant les différentes images de l'interface
- coder le squelette du projet via la création des classes (Création du projet sur Éclipse).
- trouver un outil pour créer l’UML (https://app.diagrams.net/).
- faire avancer le développement du projet avec Yohann (les classes principalement développée: une partie du board, les Cases, Piece, Bishop, King, le début de l'interface: Game, Player, Turn, ).
Yohann MichalletDéveloppeur.
Se charge principalement de développer les pièces, notamment les plus compliquées. Certaines pièces entièrement développée (Toute la base du Board, Knight, Rook, Pawn, Queen, par ex).
Elvis AMALANATHANRéférent documentation.
Se charge du rapport final et se charge de la partie modélisation UML.

State of the Art

Business Aspect

Historique/Evolution du jeu

Historique/Evolution : L’histoire du jeu d’échecs est longue de plus de 1500 ans. C’est à la fin du Xe siècle que ce jeu de guerre, d’origine indienne, est transmis à l’Occident par les Arabes. En moins d’un siècle, les échecs se répandent dans toute la société médiévale. Ils connaissent un grand succès tant auprès de l’aristocratie européenne dont elle est rapidement la distraction favorite, que dans les classes populaires où l’on jouait avec des dés et pour de l’argent.  Près de deux cents ans seront nécessaires pour transformer ce jeu de guerre en un jeu de cour en adéquation avec les valeurs de la société archaïque. Ce sont surtout les pièces qui ont évolué, prenant une forte connotation symbolique : l’échiquier représente la ville nouvelle du Moyen Âge où prennent place les différentes catégories sociales de la société médiévale.   Le jeu moderne se met en place à partir du XIXe siècle. Des compétitions confrontent les meilleurs joueurs du monde, rassemblés dans une Fédération internationale des échecs créée en 1924. Aujourd’hui, les jeux d’échecs se sont beaucoup démocratisés, ces joueurs peuvent également s’affronter en ligne sans même quitter son fauteuil. L’arrivé des plateformes de jeu sur smartphone Android et Apple n’a fait qu’augmenter ce chiffre. Plus récemment une série connu intitulé ‘The Queen’s Gambit’ a donné une énorme visibilité à ce jeu. Qui traite ce problème dans le monde ? Le premier programme d’échecs intitulé Turochamp, fut écrit par Alan Turing en 1952. Ne disposant pas d’un ordinateur assez puissant pour le faire tourner, il simule lui-même les calculs de la machine, mettant environ une demi-heure pour effectuer chaque coup.   En 1977, le premier jeu d’échecs électronique nommé Chess Challenger, est commercialisé. C’était un appareil électronique qui permettait de jouer seul au jeu d’échecs, autrement dit il permettait de « jouer contre l’ordinateur » Comment ce problème est posé ? Fut un temps au XIVème siècle, le jeu d’échec était considéré comme un divertissement que seul l’élite bourgeoise pratiquait. Peu à peu le jeu d’échec s’est développé et est devenu indémodable en ayant un porté mondial avec une communauté qui ne fait que grandir. De grande compétitions ont vu le jour, les plus grands joueurs s’affrontent dans une salle remplie de spectateurs venues pour l’occasion, aussi depuis peu ces joueurs se défient également en ligne, derrière l’écran d’un ordinateur. Les règles internationales actuelles :  

  1. La reine est actuellement la pièce la plus puissante de l’échiquier. Ses capacités de déplacement unique lui confèrent ce statut de pièce la plus puissance.

 

  1. Le fou, qui se déplaçait de deux cases en diagonale, traverse maintenant l’échiquier.

 

  1. Le pion augmente légèrement sa force en début de partie en pouvant avancer de deux pas à son premier coup. La promotion du pion arrivé à la huitième rangée est introduite. Il peut se transformer en n’importe quelle pièce déjà prise (souvent la reine, sauf si « pat »).
Technical Aspect

Technologie Échec

Technologie utilisée aujourd’hui : L’utilisation des supercalculateurs dans le cadre des échecs avait deux buts principaux : battre les meilleurs joueurs d’échecs humains, mais surtout créer une vitrine technologique pour les constructeurs de matériel informatiques. – Quelles sont les sources de données et de connaissance utilisées ? Des milliers de partie en compétition sont enregistré pour l’utilisation de l’IA, il y a énormément de donné stocker. Tout cela va permettre à l’IA de mieux s’adapter face à son adversaire et d’être plus coriace.

Project Description

Problem Definition
Dans le cadre d'un projet donné par notre professeur de BPOO et d'UML, nous souhaitons développer une application informatique reprenant un jeu d'échec. Cette application devra être développée dans un langage orienté objet au choix (ici Java), et la conception/modélisation de cette application dans un langage de modélisation (UML) imposé.
Challenges & Motivation
Nous sommes tous très intéressé par les échecs dans le groupe et considérons que ce projet est une excellente occasion de mettre en pratique les notions apprises en cours.
Real and Complete Usecases

1) Faire un cahier des charges :Mieux poser le problème initial :   Nous voulons créer un jeu d’échecs avec une scope limité : pas de prise en charge des cas particuliers, le pion se transformera toujours en reine quand il arrive en face car on ne gère pas le Pat, on ne va pas non plus gérer et échec et mat. Le jeu devra nous permettre de jouer tous les coups autorisés pour chaque pièce comme sur un jeu physique et interdire ceux non autorisés. Nous devrons pour cela définir le comportement de chaque pièce, les interactions entre elles et entre le plateau et elles. Enfin si nous avons le temps, nous créerons une interface graphique permettant de jouer avec ces pièces et ce plateau.   – Clarifier et écrire complètement et rigoureusement toutes les questions auxquelles il convient de répondre. Allons-nous mettre en place une IA ? Non pas d’IA. Le nombre de joueurs ? 2 joueurs humains.     –  Quelles technologies allons-nous utiliser pour ce projet ? Pour ce projet nous allons essentiellement développer en Java via le logiciel Eclipse.   – Comment allons-nous diviser le travail ?   Elvis : Référent documentation. Se charge du rapport qui vous lisez actuellement hormis certaine partie dont Michael s’est occupé et se charge de la partie modélisation UML.   Yohann : Développeur. Se charge de coder certaines pièces entièrement (Knight, Rook, Pawn par ex) et d’avancer le code du projet en général.   Michael : Chef de projet. Se charge de mettre en place un outil de partage de code et d’y former l’équipe (Git et Github). Se charge du créer le cahier des charges. Se charge de coder le squelette du projet via la création des classes (Création du projet sur Éclipse). Se charge de trouver un outil pour créer l’UML (https://app.diagrams.net/). Se charge de faire avancer le code du projet avec Yohann (a codé une partie du board, les Cases, Bishop par ex).     – Comment allons-nous gérer le travail en distanciel ? (Problème de partage) Afin de gérer au mieux le travail en distanciel et d’être productif, Michael a tout d’abord créé un projet sur GitHub afin de pouvoir rassembler et mettre en commun nos avancées sur les différentes tâches, ensuite plusieurs réunions ont été programmé via Discord pour qu’il nous forme sur Git et Github et ensuite pour avancer le projet ensemble.   – Quel sera le scope du projet ? Définir ce que nous allons implémenter ou non. (Si nous avions eu plus de temps qu’aurions-nous amélioré ?) Dans le cadre du projet nous allons implémenter un jeu d’échec avec ses différentes pièces, capable d’effectuer les mouvements de déplacement correctement. Nous allons créer un jeu d’échecs avec une scope limité : pas de prise en charge des cas particuliers, le pion se transformera toujours en reine quand il arrive en face car on ne gère pas le Pat, on ne va pas non plus gérer et échec et mat. Si nous avions eu plus de temps, nous aurions gérer tous ces cas particuliers, nous aurions une interface élaborée et fonctionnelle, nous aurions retravaillé la complexité du jeu et pourquoi pas rajouter une IA, nous aurions pu commenter tout le code pour avoir un java doc et enfin nous aurions pu ajouter les try and catch nécessaire.   – Comment allons-nous partager le projet avec un utilisateur lambda (distribution) ? Existe-t-il des projets similaires qui pourrait nous aider ? Oui il existe plusieurs projets similaires à notre projet avec quelques caractéristique différentes, cela nous a permis d’avoir des idées pour peaufiner notre jeu, même si nous n’avons pas du tout fait comme la plupart des projets existant. Pas de modèle MVC ici.   – Le projet devra-t-il nécessiter un téléchargement ou devra-t-il être hébergé et disponible en ligne ?   Il sera disponible sur Github.   2) SourcesDécrire les sources de données à partir desquelles l’étude sera faite.   Au terme du projet, nous avons été principalement aidé par M.Ellouze pour quelques bug, mais nous n’avons pas beaucoup utilisé les projets existant en ligne. Notre projet est réfléchi de manière différente (sûrement moins poussé). JeuDechec2

Technical Description

Hardware

Materials
ImageNamePart NumberPriceCountLink
UML Diagramme de Classe111🛒
chess modele for the board111🛒
Schematic

Software

Arduino Code

https://github.com/maykeul27/The_Queens_Gambit

External Services