Skip to content

Latest commit

 

History

History
73 lines (67 loc) · 2.68 KB

README.org

File metadata and controls

73 lines (67 loc) · 2.68 KB

To-do

Correct the pawn movement in algebraic notation

Implement castling check

Implement algebraic notation check as regexp

Implement moveToAN to save game moves

Implement offering/accepting a draw, and resigning

Implement pawn promotion (how does user select promoted piece?)

Finish implementing algebraic notation parser

Castling

Pawn promotion

Check/checkmate (,#,+)

En passant (“e.p.”)

Refactor chess board representation into new class

A chess board needs the following state:

  • board grid to animate the pieces, determine moves, etc
  • whether black king’s rook has moved (for castling)
  • whether black queen’s rook had moved
  • whether white king’s rook had moved
  • whether white queen’s rook had moved
  • whether black king has moved
  • whether white king has moved
  • whether or not last move was a pawn jump, and which pawn if so

Implement index.css as inline tailwind

Design UI for rotating board

Let’s just leave it to two views: black’s and white’s

Implement dark/light mode

Implement clock

Implement side pieces

Implement color palette for chess set

Implement drag-and-drop for chess pieces

Comment and simplify validation library

Use consistent coordinate representation

Goals

Other frontends other than React.js

This is difficult because peer.js doesn’t work with node.js. But if I have time I’ll still look into it.

Accessible (moves can be made in algebraic notation)

In progress!

Chess clock

Choose color

Next Steps

  • Design plan for error handling. If peers get disconnected, how is board state recovered?
  • Does the site enforce rules? Can you put your own kind in check, e.g.?
  • Does the chess board act more like a real chess board, or more like a computerized board? Can you pick pieces up off of the board and move them to the side, e.g.?
  • Dark/light mode
  • Parse castling
  • Parse promotion
  • Parse check/checkmate (/#/+)
  • Parse “e.p.”

We could do a “simple mode” and a “digital mode”

where simple mode you can treat the set like a physical set, and digital mode where the set behaves like, e.g. chess.com. Does this make sense?

My first thought is that I want the various components to be composable: chess clock, side pieces, chess board. You might want a clock in both physical and digital modes, but you’d only want side pieces in physical mode. Plus, the behavior of the clocks would be different.

Stuff I’ve learned