The test
(result != X_WON || result != O_WON || result != DRAW)
is always true, since result can’t be equal to all 3 values.
result
should be initialised to UNFINISHED
and the test changed to:
(taken != 9 && result == UNFINISHED)
0
solved game does not allow you to win