|
|
|
|
|
by spywaregorilla
1167 days ago
|
|
I tried playing as goats on the demo hard ai. It was a bit more interesting than I expected, but after winning on hard one time I was able to immediately win again in about 15 seconds. Is this game easily solved for goats? Or is the ai perhaps just not very good? It does seem like it just chases opportunities for captures greedily. edit: Looks like I struggle to win as tigers too |
|
Edit: https://github.com/sumn2u/baghchal/blob/master/src/library/u...
This is the code for legal movement and now I understand why it feels buggy: it's trying to express the logic by converting between a mishmash of numeric node indexes, directions and distances. This exposes several classes of bugs that aren't about the logic, but how the state is encoded.
Two approaches that would work better are:
1. Design a node data structure with 8 directional exits. Connect the graph through that structure; express movement as a traversal through nodes along the same movement direction once or twice, rejected if it reaches a null connection or node is occupied. Express board state by serializing the node graph down to an array of "goat, tiger, empty" and comparing the array to find repeated positions.
2. Generate the graph offline and use it to emit lookup tables for all board indexes and their possible movements. This would work as an optimization if you needed it to run very fast(e.g. real time game with thousands of goats and tigers), and it would dramatically reduce the amount of re-encoding of state going on in the inner loop.