+ /* Loop over rows and columns looking for a win. */
+ for (i = 0; i < 3; i++)
+ {
+ /* Check the current column */
+ if (board->cells[i] != TTT_CELL_EMPTY &&
+ board->cells[i] == board->cells[i + 3] &&
+ board->cells[i] == board->cells[i + 6])
+ {
+ return board->cells[i];
+ }
+
+ /* Check the current row */
+ if (board->cells[i * 3] != TTT_CELL_EMPTY &&
+ board->cells[i * 3] == board->cells[(i * 3) + 1] &&
+ board->cells[i * 3] == board->cells[(i * 3) + 2])
+ {
+ return board->cells[i * 3];
+ }
+ }