/Chess

Chess Game

Primary LanguageTypeScript

Chess App

Basic Chess App

Features

  • Complete Chess Logic/Rules
  • Drag and drop with react-dnd
  • Stockfish AI opponent and game analysis
  • Basic game controls (undo/forwards/backwards)

Tech

  • Typescript
  • Drag and drop with react-dnd
  • redux state management
  • redux-observable + WebWorker for async best move calculations
  • howler for game sounds
  • styled-components css in jss styling
  • @material-ui material design components
  • formik forms
  • Hosted on Google App Engine
  • TravisCI deployment

Tasks

  • Add sprites

  • fix performance issues

    • Context selector solution (this seems to be the sole issue)
  • Add touch/tap/click control along with drag
  • check highlight

  • move sound

  • take sound

  • Deploy to chess.lioneltay.com

  • Automate deployment with TravisCI

  • mobile drag support

  • custom drag preview

  • undo functionality

  • refactor

    • remove use of game object from state, convert to pure functions which utilize Chess object internally
  • rewind/replay/start/end functionality

    • Keyboard shortcuts left right up down
  • Drawing Circles
    • red and green
  • use svg for text labels so they scale with viewport

  • Drawing Arrows

    • red and green
  • flip board

  • play as black

  • show best moves functionality

  • undo during ais turn (coniditonally go back 1 or 2 turns)

  • refactor all state manipulation logic into selectors

  • Moves should always be applied to latest board

  • disable movement of ai pieces

  • Save history of moves to highlight previous moves

  • create an rxjs stream

  • redux observable for best move calculations

  • show animated score bar

  • improve performance (many rerenders)

    • Expand selectors
    • memoize board selector
    • React.memo
  • Ai without show best move
  • double ai mode
  • Start new game button
    • install material ui
    • create modal
    • Show options
    • Toggle Choose ai
    • choose side
  • Add promotion

    • ai promotion
  • draw detection

  • stalemate detection

  • checkmate detection

  • game over detection

  • show end game status

  • winner, draw, stalemate

  • [bug] evaluation bar goes up and down on every move

  • improve performance
  • Test the drag and drop functionality