68 Commits
Author SHA1 Message Date
pavel 6c2fd6566e Make minmax slighly less ugly
Can't vouch for correctness yet tho
2025-03-20 21:17:02 +01:00
pavel 9f7fbc8ef9 Implement minmax that is ugly as fuck 2025-03-06 21:45:15 +01:00
pavel f4ac92ff89 Implement basic move evaluation
It ain't much but it's honest work
2025-03-05 21:40:20 +01:00
pavel d797dc545e Add forgotten Knight parsing 2025-02-22 15:54:28 +01:00
pavel e798480b72 For pawn caputre rays do same as knight rays 2025-02-22 15:47:13 +01:00
pavel eda2ec6c93 Implement Knight 2025-02-22 15:39:49 +01:00
pavel 7cc7fa3e70 Refactor Position delta
Now it's a bit easier to work with
2025-02-22 15:38:43 +01:00
pavel 15202df4f4 Move some methods around 2025-02-20 21:24:59 +01:00
pavel 797c54e83b Purge ALL_VALUES from rank/file enums 2025-02-20 21:07:55 +01:00
pavel 01ccb65b64 Swap file and rank in Position
Because the chess positions read as "file-rank"
2025-02-20 21:00:53 +01:00
pavel 5108b4a6e2 Add uv config to adapter 2025-02-19 21:41:56 +01:00
pavel 98645f01d0 Make grid axes dumb enums 2025-02-18 21:27:12 +01:00
pavel c7f82769e3 Add reset button 2022-01-05 22:10:04 +01:00
pavel 0e8eb7b767 Simplify the get_legal_moves method
It's cheap (and gets rid of boilerplate) to check for the field
occupancy inside the get_moves and get_captures funcitons.
2021-12-27 20:29:39 +01:00
pavel 5916a054ad Add basic autoplay features to frontend
Rudimentary play for white against engine is now possible.
2021-12-27 20:16:38 +01:00
pavel c92a9e42d7 Add array reply parsing to the adapter 2021-12-27 20:15:21 +01:00
pavel 0f7de146b7 Implement dummy chess solver
It chooses a random available move ¯\_(ツ)_/¯
2021-12-22 22:03:17 +01:00
pavel 95c0ccfbd2 Move some functionality into the new Engine mod
This will help with separating the "thinking" logic from the move rules
and stuff.
2021-12-21 21:07:19 +01:00
pavel 802b069269 Add command for manual state setting at engine 2021-12-20 21:46:21 +01:00
pavel ef5719f2f5 Reorganize board code in engine
Just a bit
2021-12-20 21:17:14 +01:00
pavel d80cc79f57 Use destructuring for arg splitting in engine ui
This make the arg handling code less awkward.
2021-12-20 21:13:34 +01:00
pavel a7d3bb3752 Use cargo run in the adapter
Makes it easier to start the app eliminating the danger of forgetting to
build.
2021-12-17 21:26:06 +01:00
pavel 6ee41a112c Introduce movement Rays
These reflect the fact that a piece can't jump over another piece
(unless it's a knight).

Issue #5
2021-12-17 21:25:51 +01:00
pavel 6bbcadddfd Fix flickering on board redraw
Turns out == operator can't be used to compare two JS objects. Implement
a custom method for determining piece equality.
2021-12-14 21:57:26 +01:00
pavel a1207f2404 Implement moving on engine
Thus make all state management the engine's responsibility, and remove
the state maintaining code from frontend!
2021-12-14 21:56:27 +01:00
pavel c49bedf0ad Split state parsing on adapter into separate func 2021-12-14 21:55:23 +01:00
pavel 4ae73410bd Implement make_move function on engine 2021-12-14 21:12:59 +01:00
pavel 27dce5f7a3 Implement move squares highlighting
Issue #3
2021-12-13 20:46:53 +01:00
pavel 9bb6a60ded Implement adapter to the get_moves function
Issue #3
2021-12-13 20:22:52 +01:00
pavel 8d93acf950 Implement selected piece highlighting
Issue #3
2021-12-13 20:14:53 +01:00
pavel f9212a8291 Refactor move handling in frontend
Make the move handlers better encapsulated and abstract away the click.

Issue #3
2021-12-13 20:11:37 +01:00
pavel 941a5c072a Refactor square drawing
Make square drawing modular and a member function of Canvas.

Issue #3
2021-12-13 19:38:54 +01:00
pavel d36a948936 Use separate function to talk to engine in adapter 2021-12-13 18:21:24 +01:00
pavel b9f39fa0b4 Implement get_moves command on rs
Issue #1
2021-12-13 18:03:42 +01:00
pavel aa899740c6 Implement basic cmdline UI framework
Issue #1
2021-12-12 12:50:02 +01:00
pavel 6d433a6d01 Create a separate Ui struct 2021-12-12 11:49:06 +01:00
pavel 1f5e58d981 Implement get_legal_moves function 2021-12-11 19:00:09 +01:00
pavel 7788aea805 Address eslint 2021-12-11 18:08:02 +01:00
pavel 9e8b633447 Fix clippy suggesting to do something weird 2021-12-11 18:03:49 +01:00
pavel f8c7323b47 Implement std::fmt::Display for board 2021-12-11 17:59:22 +01:00
pavel 7143427dd2 Fix misc clippy suggestions 2021-12-11 17:28:06 +01:00
pavel 7dabb49cd4 Do another refactoring of frontend 2021-12-11 17:15:50 +01:00
pavel b5c252bd4d Implement basic frontend-engine interaction
Use a Flask-based Python server as an adapter to the engine's
stdin-stdout inferface.
2021-12-11 14:58:16 +01:00
pavel 57931b29de Add serialization to String 2021-12-05 18:14:16 +01:00
pavel 4f3469b3e3 Change Board state to HashMap 2021-12-05 15:43:40 +01:00
pavel 81626aefec Remove position from Piece struct 2021-12-05 12:08:45 +01:00
pavel 02e7d7e984 Split board-related stuff into board.rs 2021-12-05 11:54:15 +01:00
pavel 458f87fd61 Rename row/column to rank/file
This is how they're "officially" called
2021-12-04 18:54:09 +01:00
pavel e45fd3981a Implement board setup 2021-11-23 22:47:56 +01:00
pavel 72a691de90 Implement initial Pawn setup 2021-11-22 22:42:21 +01:00