This simple web app allows you to play a game of "blind" chess (where there is no board or pieces and moves are typed in) against the popular open source chess engine Stockfish.
This project was born out of a request from my little brother, who also plays chess. He had been wanting to practice playing blind chess after witnessing some GMs do it on Youtube but was not satisfied with any of the existing web applications because they did not train true blind chess. Most of them hid the pieces but kept the board, and one of them hid the board but listed all the valid moves that were available in the chess position. So being the nice big brother that I am I built what he wanted.
This web app only took me a couple of nights to complete. It is built without any web frameworks, just vanilla Javascript, HTML, and CSS. It utilizes a couple of JS libraries for the chess gameplay: chess.js for move validation and maintaining the chess game state, and stockfish.js to tie in the Stockfish chess engine.
I am a nerd who doesn't follow the NFL that much. My friends, however, follow the NFL religiously. This presents a challenge for me when it comes to our for-money fantasy football league. They know who to draft and I do not. That's why I wrote this draft bot to try and level out the playing field... plus I thought it'd be a cool challenge.
The gist of my approach is that it uses the Monte Carlo Tree Search algorithm modified for N players which uses the players' z-scores as a heuristic for selection during the simulation phase. The goal of the engine is to maximize the total amount of fantasy points for your team. It is written in C. The user can control the state of the engine by typing basic commands (as seen in the screenshot), but this is planned to be replaced by a front-end application sending the commands to the engine.
I actually used this draftbot in my 2022 fantasy league. As of the time of writing this, the 2022 season has not yet concluded so we will see how my team ends up finishing. This project is far from over. I have immediate plans to add a GUI frontend to it and also make it more configurable to support a variety of drafting applications such as fantasy baseball, basketball, and any other problem that involves N teams drafting a roster from a fixed selection pool.