Skip to content

ln-dev7/chess-game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

73 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Jeu d'ร‰checs / Chess Game

Franรงais | English


Version Franรงaise

Un jeu d'รฉchecs complet et interactif dรฉveloppรฉ avec React, Next.js et shadcn/ui. Le jeu propose un mode joueur contre joueur et un mode contre l'intelligence artificielle.

๐Ÿ“‹ Fonctionnalitรฉs

Rรจgles du jeu complรจtes

  • โœ… Tous les mouvements de piรจces (pion, cavalier, fou, tour, dame, roi)
  • โœ… Rรจgles spรฉciales :
    • Roque (petit et grand)
    • Prise en passant
    • Promotion du pion
  • โœ… Dรฉtection d'รฉchec, รฉchec et mat, et pat
  • โœ… Rรจgles de nulle :
    • Rรฉpรฉtition de position (3 fois)
    • Rรจgle des 50 coups
    • Matรฉriel insuffisant
    • Accord mutuel

Modes de jeu

  • ๐ŸŽฎ Mode Joueur vs Joueur : Deux joueurs sur le mรชme appareil
  • ๐Ÿค– Mode contre l'IA : 6 niveaux de difficultรฉ (400 ร  2500 Elo)
    • LN Dรฉbutant (400 Elo)
    • LN Amateur (800 Elo)
    • LN Intermรฉdiaire (1200 Elo)
    • LN Avancรฉ (1600 Elo)
    • LN Expert (2000 Elo)
    • LN Maรฎtre (2500 Elo)

Variantes de jeu

  • โ™Ÿ๏ธ ร‰checs Standard : Partie classique avec position de dรฉpart traditionnelle
  • ๐ŸŽฒ Chess960 (Fischer Random) : Position de dรฉpart alรฉatoire parmi 960 possibilitรฉs
    • Gรฉnรฉration automatique selon les rรจgles FIDE
    • Roi placรฉ entre les deux tours
    • Fous sur cases de couleurs opposรฉes
    • Roque adaptรฉ avec destinations finales identiques aux รฉchecs classiques
    • Documentation complรจte : CHESS960.md

Interface utilisateur

  • ๐ŸŽจ Design minimaliste inspirรฉ de chess.com
  • ๐ŸŽจ 16 thรจmes de couleurs personnalisables
  • ๐ŸŽญ 3 styles de piรจces (Classique, Moderne, Colorรฉ)
  • ๐Ÿ“ฑ Responsive (adaptรฉ mobile, tablette, desktop)
  • ๐ŸŽฏ Indicateurs visuels pour les mouvements possibles
  • ๐Ÿ”ด Mise en รฉvidence de l'รฉchec
  • ๐Ÿ“Š Affichage des informations de la partie
  • ๐Ÿ“œ Historique des coups en notation algรฉbrique FIDE
  • ๐Ÿ’พ Export PGN (format standard FIDE) avec copie dans le presse-papiers
  • ๐ŸŽฎ Contrรดles de jeu (nouvelle partie, abandon, proposition nulle)
  • โฑ๏ธ Pendule d'รฉchecs avec plusieurs cadences
  • ๐Ÿ”Š Effets sonores (dรฉplacement, capture, รฉchec, victoire)
  • โœจ Animations fluides des dรฉplacements de piรจces
  • ๐ŸŒ Interface bilingue (franรงais / anglais)
  • ๐ŸŽฌ Animation de victoire lors d'un รฉchec et mat

Personnalisation

  • ๐ŸŽจ 16 thรจmes de couleurs prรฉ-dรฉfinis
  • ๐ŸŽญ 3 styles de piรจces au choix
  • โฑ๏ธ 6 cadences de temps diffรฉrentes
  • ๐Ÿ”Š Contrรดle du volume sonore
  • ๐Ÿ’พ Sauvegarde automatique des prรฉfรฉrences

๐Ÿ› ๏ธ Technologies utilisรฉes

  • Next.js 15 - Framework React
  • TypeScript - Typage statique
  • Tailwind CSS - Styling
  • shadcn/ui - Composants UI
  • Lucide React - Icรดnes
  • Zustand - Gestion d'รฉtat
  • next-intl - Internationalisation
  • Motion - Animations

๐Ÿ“ฅ Installation

  1. Cloner le projet
cd chess-game/
  1. Installer les dรฉpendances
npm install
  1. Lancer le serveur de dรฉveloppement
npm run dev
  1. Ouvrir http://localhost:3000 dans votre navigateur

๐ŸŽฎ Comment jouer

  1. Choisissez votre mode de jeu (PvP ou contre l'IA)
  2. Si vous jouez contre l'IA, sรฉlectionnez le niveau de difficultรฉ
  3. Les Blancs commencent toujours en premier
  4. Cliquez sur une piรจce pour la sรฉlectionner
  5. Les mouvements valides sont indiquรฉs par des cercles
  6. Cliquez sur une case valide pour dรฉplacer la piรจce
  7. Le jeu dรฉtecte automatiquement les รฉchecs, รฉchecs et mat, et les pats
  8. Personnalisez l'รฉchiquier avec 16 thรจmes de couleurs disponibles
  9. Choisissez parmi 3 styles de piรจces diffรฉrents
  10. Exportez votre partie au format PGN pour la sauvegarder ou la partager

๐Ÿ“‚ Structure du projet

chess-game/
โ”œโ”€โ”€ app/                      # Pages Next.js
โ”œโ”€โ”€ components/               # Composants React
โ”‚   โ”œโ”€โ”€ AIDifficultySelector.tsx # Sรฉlecteur de difficultรฉ IA
โ”‚   โ”œโ”€โ”€ AnimatedPiece.tsx    # Animation des piรจces
โ”‚   โ”œโ”€โ”€ BoardContainer.tsx   # Conteneur du plateau
โ”‚   โ”œโ”€โ”€ CapturedPieces.tsx   # Piรจces capturรฉes
โ”‚   โ”œโ”€โ”€ CheckmateAnimation.tsx # Animation d'รฉchec et mat
โ”‚   โ”œโ”€โ”€ ChessBoard.tsx       # Plateau d'รฉchecs
โ”‚   โ”œโ”€โ”€ ChessClock.tsx       # Pendule d'รฉchecs
โ”‚   โ”œโ”€โ”€ ChessGame.tsx        # Composant principal
โ”‚   โ”œโ”€โ”€ ChessPiece.tsx       # Piรจce d'รฉchecs
โ”‚   โ”œโ”€โ”€ ChessSquare.tsx      # Case individuelle
โ”‚   โ”œโ”€โ”€ ExportPGNDialog.tsx  # Dialogue d'export PGN
โ”‚   โ”œโ”€โ”€ FullscreenButton.tsx # Bouton plein รฉcran
โ”‚   โ”œโ”€โ”€ GameControls.tsx     # Contrรดles du jeu
โ”‚   โ”œโ”€โ”€ GameInfo.tsx         # Informations de la partie
โ”‚   โ”œโ”€โ”€ GameModeSelector.tsx # Sรฉlecteur de mode
โ”‚   โ”œโ”€โ”€ LanguageSelector.tsx # Sรฉlecteur de langue
โ”‚   โ”œโ”€โ”€ MoveHistory.tsx      # Historique des coups
โ”‚   โ”œโ”€โ”€ PieceStyleSelector.tsx # Sรฉlecteur de style
โ”‚   โ”œโ”€โ”€ PreferencesDialog.tsx # Dialogue des prรฉfรฉrences
โ”‚   โ”œโ”€โ”€ PromotionDialog.tsx  # Dialogue de promotion
โ”‚   โ”œโ”€โ”€ SoundControl.tsx     # Contrรดle du son
โ”‚   โ”œโ”€โ”€ ThemeSelector.tsx    # Sรฉlecteur de thรจme
โ”‚   โ”œโ”€โ”€ TimeControlSelector.tsx # Sรฉlecteur de cadence
โ”‚   โ””โ”€โ”€ ui/                  # Composants UI shadcn
โ”œโ”€โ”€ lib/                     # Logique du jeu
โ”‚   โ”œโ”€โ”€ chess-ai.ts          # Intelligence artificielle
โ”‚   โ”œโ”€โ”€ chess-engine.ts      # Moteur de jeu
โ”‚   โ”œโ”€โ”€ chess-sounds.ts      # Effets sonores
โ”‚   โ”œโ”€โ”€ chess-themes.ts      # Thรจmes de couleurs
โ”‚   โ”œโ”€โ”€ chess-utils.ts       # Fonctions utilitaires
โ”‚   โ”œโ”€โ”€ constants.ts         # Constantes du jeu
โ”‚   โ”œโ”€โ”€ export-utils.ts      # Utilitaires d'export
โ”‚   โ”œโ”€โ”€ pgn-utils.ts         # Utilitaires PGN
โ”‚   โ”œโ”€โ”€ piece-styles.ts      # Styles de piรจces
โ”‚   โ”œโ”€โ”€ preferences.ts       # Gestion des prรฉfรฉrences
โ”‚   โ”œโ”€โ”€ time-controls.ts     # Contrรดles de temps
โ”‚   โ””โ”€โ”€ utils.ts             # Utilitaires gรฉnรฉraux
โ”œโ”€โ”€ store/                   # Gestion d'รฉtat Zustand
โ”œโ”€โ”€ types/                   # Types TypeScript
โ”‚   โ””โ”€โ”€ chess.ts            # Types du jeu d'รฉchecs
โ”œโ”€โ”€ messages/               # Traductions
โ”‚   โ”œโ”€โ”€ en.json            # Anglais
โ”‚   โ””โ”€โ”€ fr.json            # Franรงais
โ”œโ”€โ”€ public/                 # Fichiers statiques
โ”‚   โ””โ”€โ”€ pieces/            # Images des piรจces SVG
โ”œโ”€โ”€ README.md              # Documentation principale
โ”œโ”€โ”€ QUICK-START.md         # Guide de dรฉmarrage rapide
โ”œโ”€โ”€ RULES.md              # Rรจgles complรจtes
โ”œโ”€โ”€ PGN-NOTATION.md       # Format PGN et notation
โ””โ”€โ”€ THEMES.md             # Thรจmes de couleurs

๐ŸŽฏ Rรจgles implรฉmentรฉes

Toutes les rรจgles officielles de la FIDE (Fรฉdรฉration Internationale des ร‰checs) sont implรฉmentรฉes :

  • Mouvements de toutes les piรจces selon les rรจgles officielles
  • Roque (avec vรฉrification des conditions)
  • Prise en passant
  • Promotion du pion (choix entre dame, tour, fou, cavalier)
  • ร‰chec et รฉchec et mat
  • Pat (stalemate)
  • Nulle par rรฉpรฉtition de position
  • Nulle par la rรจgle des 50 coups
  • Nulle par matรฉriel insuffisant
  • Abandon et proposition de nulle

๐Ÿ’ป Dรฉveloppement

Commandes disponibles

npm run dev      # Lancer le serveur de dรฉveloppement
npm run build    # Construire l'application pour la production
npm run start    # Lancer l'application en production
npm run lint     # Vรฉrifier le code

๐Ÿ“š Documentation complรจte

Pour plus d'informations, consultez :

๐Ÿ“„ Licence

Ce projet est open source et disponible sous la licence MIT.

๐Ÿ‘จโ€๐Ÿ’ป Auteur

Dรฉveloppรฉ avec โค๏ธ en utilisant React et Next.js


English Version

A complete and interactive chess game developed with React, Next.js and shadcn/ui. The game offers a player vs player mode and a mode against artificial intelligence.

๐Ÿ“‹ Features

Complete Game Rules

  • โœ… All piece movements (pawn, knight, bishop, rook, queen, king)
  • โœ… Special rules:
    • Castling (kingside and queenside)
    • En passant
    • Pawn promotion
  • โœ… Check, checkmate, and stalemate detection
  • โœ… Draw rules:
    • Threefold repetition
    • 50-move rule
    • Insufficient material
    • Mutual agreement

Game Modes

  • ๐ŸŽฎ Player vs Player Mode: Two players on the same device
  • ๐Ÿค– AI Mode: 6 difficulty levels (400 to 2500 Elo)
    • LN Beginner (400 Elo)
    • LN Amateur (800 Elo)
    • LN Intermediate (1200 Elo)
    • LN Advanced (1600 Elo)
    • LN Expert (2000 Elo)
    • LN Master (2500 Elo)

Game Variants

  • โ™Ÿ๏ธ Standard Chess: Classic game with traditional starting position
  • ๐ŸŽฒ Chess960 (Fischer Random): Random starting position among 960 possibilities
    • Automatic generation according to FIDE rules
    • King placed between the two rooks
    • Bishops on opposite-colored squares
    • Adapted castling with final destinations identical to classical chess
    • Complete documentation: CHESS960.md

User Interface

  • ๐ŸŽจ Minimalist design inspired by chess.com
  • ๐ŸŽจ 16 customizable color themes
  • ๐ŸŽญ 3 piece styles (Classic, Modern, Colorful)
  • ๐Ÿ“ฑ Responsive (mobile, tablet, desktop)
  • ๐ŸŽฏ Visual indicators for possible moves
  • ๐Ÿ”ด Check highlighting
  • ๐Ÿ“Š Game information display
  • ๐Ÿ“œ Move history in FIDE algebraic notation
  • ๐Ÿ’พ PGN export (FIDE standard format) with clipboard copy
  • ๐ŸŽฎ Game controls (new game, resign, draw offer)
  • โฑ๏ธ Chess clock with multiple time controls
  • ๐Ÿ”Š Sound effects (move, capture, check, victory)
  • โœจ Smooth animations for piece movements
  • ๐ŸŒ Bilingual interface (French / English)
  • ๐ŸŽฌ Victory animation on checkmate

Customization

  • ๐ŸŽจ 16 pre-defined color themes
  • ๐ŸŽญ 3 piece styles to choose from
  • โฑ๏ธ 6 different time controls
  • ๐Ÿ”Š Volume control
  • ๐Ÿ’พ Automatic preference saving

๐Ÿ› ๏ธ Technologies Used

  • Next.js 15 - React Framework
  • TypeScript - Static typing
  • Tailwind CSS - Styling
  • shadcn/ui - UI components
  • Lucide React - Icons
  • Zustand - State management
  • next-intl - Internationalization
  • Motion - Animations

๐Ÿ“ฅ Installation

  1. Clone the project
cd chess-game/
  1. Install dependencies
npm install
  1. Start the development server
npm run dev
  1. Open http://localhost:3000 in your browser

๐ŸŽฎ How to Play

  1. Choose your game mode (PvP or vs AI)
  2. If playing against AI, select the difficulty level
  3. White always starts first
  4. Click on a piece to select it
  5. Valid moves are indicated by circles
  6. Click on a valid square to move the piece
  7. The game automatically detects checks, checkmates, and stalemates
  8. Customize the board with 16 available color themes
  9. Choose from 3 different piece styles
  10. Export your game in PGN format to save or share it

๐Ÿ“‚ Project Structure

chess-game/
โ”œโ”€โ”€ app/                      # Next.js pages
โ”œโ”€โ”€ components/               # React components
โ”‚   โ”œโ”€โ”€ AIDifficultySelector.tsx # AI difficulty selector
โ”‚   โ”œโ”€โ”€ AnimatedPiece.tsx    # Piece animations
โ”‚   โ”œโ”€โ”€ BoardContainer.tsx   # Board container
โ”‚   โ”œโ”€โ”€ CapturedPieces.tsx   # Captured pieces
โ”‚   โ”œโ”€โ”€ CheckmateAnimation.tsx # Checkmate animation
โ”‚   โ”œโ”€โ”€ ChessBoard.tsx       # Chess board
โ”‚   โ”œโ”€โ”€ ChessClock.tsx       # Chess clock
โ”‚   โ”œโ”€โ”€ ChessGame.tsx        # Main component
โ”‚   โ”œโ”€โ”€ ChessPiece.tsx       # Chess piece
โ”‚   โ”œโ”€โ”€ ChessSquare.tsx      # Individual square
โ”‚   โ”œโ”€โ”€ ExportPGNDialog.tsx  # PGN export dialog
โ”‚   โ”œโ”€โ”€ FullscreenButton.tsx # Fullscreen button
โ”‚   โ”œโ”€โ”€ GameControls.tsx     # Game controls
โ”‚   โ”œโ”€โ”€ GameInfo.tsx         # Game information
โ”‚   โ”œโ”€โ”€ GameModeSelector.tsx # Mode selector
โ”‚   โ”œโ”€โ”€ LanguageSelector.tsx # Language selector
โ”‚   โ”œโ”€โ”€ MoveHistory.tsx      # Move history
โ”‚   โ”œโ”€โ”€ PieceStyleSelector.tsx # Style selector
โ”‚   โ”œโ”€โ”€ PreferencesDialog.tsx # Preferences dialog
โ”‚   โ”œโ”€โ”€ PromotionDialog.tsx  # Promotion dialog
โ”‚   โ”œโ”€โ”€ SoundControl.tsx     # Sound control
โ”‚   โ”œโ”€โ”€ ThemeSelector.tsx    # Theme selector
โ”‚   โ”œโ”€โ”€ TimeControlSelector.tsx # Time control selector
โ”‚   โ””โ”€โ”€ ui/                  # shadcn UI components
โ”œโ”€โ”€ lib/                     # Game logic
โ”‚   โ”œโ”€โ”€ chess-ai.ts          # Artificial intelligence
โ”‚   โ”œโ”€โ”€ chess-engine.ts      # Game engine
โ”‚   โ”œโ”€โ”€ chess-sounds.ts      # Sound effects
โ”‚   โ”œโ”€โ”€ chess-themes.ts      # Color themes
โ”‚   โ”œโ”€โ”€ chess-utils.ts       # Utility functions
โ”‚   โ”œโ”€โ”€ constants.ts         # Game constants
โ”‚   โ”œโ”€โ”€ export-utils.ts      # Export utilities
โ”‚   โ”œโ”€โ”€ pgn-utils.ts         # PGN utilities
โ”‚   โ”œโ”€โ”€ piece-styles.ts      # Piece styles
โ”‚   โ”œโ”€โ”€ preferences.ts       # Preferences management
โ”‚   โ”œโ”€โ”€ time-controls.ts     # Time controls
โ”‚   โ””โ”€โ”€ utils.ts             # General utilities
โ”œโ”€โ”€ store/                   # Zustand state management
โ”œโ”€โ”€ types/                   # TypeScript types
โ”‚   โ””โ”€โ”€ chess.ts            # Chess game types
โ”œโ”€โ”€ messages/               # Translations
โ”‚   โ”œโ”€โ”€ en.json            # English
โ”‚   โ””โ”€โ”€ fr.json            # French
โ”œโ”€โ”€ public/                 # Static files
โ”‚   โ””โ”€โ”€ pieces/            # SVG piece images
โ”œโ”€โ”€ README.md              # Main documentation
โ”œโ”€โ”€ QUICK-START.md         # Quick start guide
โ”œโ”€โ”€ RULES.md              # Complete rules
โ”œโ”€โ”€ PGN-NOTATION.md       # PGN format and notation
โ””โ”€โ”€ THEMES.md             # Color themes

๐ŸŽฏ Implemented Rules

All official FIDE (International Chess Federation) rules are implemented:

  • All piece movements according to official rules
  • Castling (with condition checking)
  • En passant capture
  • Pawn promotion (choice between queen, rook, bishop, knight)
  • Check and checkmate
  • Stalemate
  • Draw by threefold repetition
  • Draw by 50-move rule
  • Draw by insufficient material
  • Resignation and draw offer

๐Ÿ’ป Development

Available Commands

npm run dev      # Start development server
npm run build    # Build for production
npm run start    # Start production server
npm run lint     # Lint code

๐Ÿ“š Complete Documentation

For more information, see:

๐Ÿ“„ License

This project is open source and available under the MIT license.

๐Ÿ‘จโ€๐Ÿ’ป Author

Developed with โค๏ธ using React and Next.js

About

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors