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