Chess

by ArnoHu
  scripts
  sprites
See inside
Instructions

Welcome to Scratch Chess - Game of Kings! If you like the game, please click ★ and ♥. Feedback is welcome in the comments.

Forum discussion: https://scratch.mit.edu/discuss/topic/248984/

Level "Difficult" requires fast hardware. Phosphorus (quicker): https://phosphorus.github.io/app.html?id=148769358

For bug reports please attach exported board data (the one before the black move took place). Simply click "Export", then look for the next-to-last board list entry and copy it to the clipboard (or export all entries to a file and copy the one entry from there). Alternatively you can also export he move list (click "Moves").

I focused on game experience and AI. Considering the speed limitations of Scratch it shouldn't be too bad (it calculates up to five moves in advance, depending on selected level).

Known issues:
- User should be able to play with black too
- Pawns are only promoted to queens right now
- Mobility evaluation should be weighted per piece type and game stage
- Missing feature: PGN import / export (currently only customer format)
- Missing feature: FEN import / export (currently only customer format)

Fixed issues:
- Bug: Move ordering not always applied, hence game is slow (thanks to blueking24 for reporting this)
- Bug: Cannot "Undo" after end of game
- Feature: Implement ply5 for level "Difficult" (was ply4 before)
- Bug: Undo leads to high CPU utilization
- Bug: Only wins accidentally (if at all) at level "Easy"
- Bug: Pawn jumps to wrong field in dutch opening
- Feature: Opening book is rudimentary (fixed by Grijfland)
- Bug: Evaluation functionality needs cleanup (currently cluttered code, with implicit dependencies)
- Bug: Disappearing piece due to wrong en-passant application during checkmate check (thanks to Itharius for reporting this)
- Bug: Wrong algebraic notation on H column (thanks to Itharius for reporting this)
- Bug: King passive in endgame due to latest performance tuning
- Feature: Performance tuning by evaluating position less frequently
- Bug: Allows castling through checked fields
- Feature: En-passant support
- Feature: Incremental move ordering (speedup)
- Feature: Isolated pawn evaluation
- Feature: Algebraic move list
- Feature: Undo move
- Feature: Import/export board data
- Bug: Queen moves too early
- Bug: Cannot move h2h4
- Feature: Opening book initial implementation
- Feature: Provide several difficulty levels
- Bug: Does not detect draws on repetitive positions
- Bug: Black move might lead to black king being checked
- Bug: Missing double pawn evaluation
- Bug: Thinks one side's check can be compensated by other side's check
- Bug: Does not consider check on castling
- Bug: Does not consider draw in move evaluation
- Bug: Applies pawn promotion too late
- Bug: Target piece not restored after invalid white move when checked

Chess, Ajedrez, Schach, Échecs, 棋, 체스, チェス.

Notes and Credits

Easy: Ply3, think time 5-10 seconds
Medium: Ply4, think time 15-25 seconds
Difficult: Ply5 + Ply6 counter-capture lookahead, think time 30-60 seconds (to my knowledge the strongest chess engine on Scratch)

Opening Book: @Grijfland

Sprites: https://commons.wikimedia.org/wiki/File:Chess_Pieces_Sprite.svg

Intro screen picture: https://pixabay.com

Quicksort implementation: https://scratch.mit.edu/projects/41440388/

Chess programming resources: https://chessprogramming.wikispaces.com

Orginally developed for a CoderDojo chess programming tutorial: http://coderdojo-linz.github.io/trainingsanleitungen/scratch/scratch-chess.html

Shared: 8 Mar 2017 Modified: 19 Sep 2017
Favorite this project 156
Love this project 172
Total views 3108
View the remix tree  41
  
More projects by ArnoHu