summaryrefslogtreecommitdiff
path: root/include/tak.c
diff options
context:
space:
mode:
authortslil <tslil@posteo.de>2021-01-07 16:49:20 -0500
committertslil <tslil@posteo.de>2026-08-28 19:37:41 +0100
commit27c0576e25226dc75636c372aff3c0818af03201 (patch)
tree8670f0a66c4acaf3fa2375d68a9a9f99b3c46f60 /include/tak.c
parent7ee86fd0ee5c6894fe8aa15b89f626220deafc63 (diff)
Check for road wins before flat wins
Diffstat (limited to 'include/tak.c')
-rw-r--r--include/tak.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/include/tak.c b/include/tak.c
index 5551e5b..1d29694 100644
--- a/include/tak.c
+++ b/include/tak.c
@@ -308,6 +308,20 @@ check_road_colour(const enum COLOUR colour) {
enum WIN_TYPE
check_win(void) {
+ // Road?
+ enum WIN_TYPE rb, rw;
+ rb = check_road_colour(C_BLACK);
+ rw = check_road_colour(C_WHITE);
+
+ if (rb == WIN_ROAD_BLACK) {
+ if (rw == WIN_ROAD_WHITE) {
+ return WIN_DRAGON;
+ } else {
+ return WIN_ROAD_BLACK;
+ }
+ } else {
+ return rw;
+ }
int8_t total = 0, board_full = 1;
for (uint8_t k = 0; k < NUM_SQUARES; k++) {
@@ -325,21 +339,6 @@ check_win(void) {
else if (total < 0) return WIN_FLAT_WHITE;
else return WIN_DRAW;
}
-
- // Road?
- enum WIN_TYPE rb, rw;
- rb = check_road_colour(C_BLACK);
- rw = check_road_colour(C_WHITE);
-
- if (rb == WIN_ROAD_BLACK) {
- if (rw == WIN_ROAD_WHITE) {
- return WIN_DRAGON;
- } else {
- return WIN_ROAD_BLACK;
- }
- } else {
- return rw;
- }
}
// ===================================================================
// PTN place parser