return 0;
}
-int game_check_goal(struct board *board)
+uint_fast32_t game_check_goal(struct board *board)
{
- int i, ret = 1;
+ uint_least32_t *game = board->game;
+ uint_least16_t *goal = board->goal;
+ uint_least32_t mask = 0;
+ int i;
for (i = 0; i < 3; i++)
- ret &= ((board->game[i] & GOAL_MASK) >> 6) == board->goal[i];
- return ret;
+ mask |= goal[i] ^ (game[i] >> GOAL_SHIFT);
+ return (mask << GOAL_SHIFT) & GOAL_MASK;
}
void game_begin(struct board *board)