- just found this brilliant blog post
- http://blog.gamesolver.org/
- looks quite thorough so I'll take a look at what I can implement here
- i'll also need to move my todos from main.kt to here
-
get all Java files converted to Kotlin
-
then, implement simple functionality against a human player (ConnectFourGameMode.TWO_PLAYER)
-
and after that, against a random robot
-
we're not done yet - implement Minimax!
-
clean up printing of board
-
add unit testing for minimax
-
and after all that, make a test helper: board.readFromAscii(...)
-
fix player 1 & 2 win condition bug
-
and finally, alpha beta pruning
-
improve scoring function for minimax
-
fix numbering for the integer drop column lol
-
Column Ordering (put good moves first in the alpha/beta search!)
-
profile the program - I probably need to cache the bitboard
- fix bit manipulation code
- nope, we don't have a bit board
-
Store board state as Long and not grid array
- fix canDropInColumn to use a bitboard
-
include & enforce a style guide
-
read the blog above & start implementing
- one anti-pattern i introduced is having multiple score mechanisms for grading...
misc
- TODO change drop piece to not accept "colors" remove the concept of colors and just drop Player Pieces "colors" can be determined at render time with a mapping PlayerToColor