diff --git a/src/model.c b/src/model.c index 9511665..c8112f8 100644 --- a/src/model.c +++ b/src/model.c @@ -133,31 +133,20 @@ e_location get_next_outer_position(s_utictactoe *p_uttt) { return FREE; } -e_status is_move_valid(s_utictactoe *p_uttt, s_move *p_move){ +e_status is_move_valid(s_utictactoe *p_uttt, s_move *p_move) { + if ( p_uttt->outer_tictactoe->winner != NOBODY ) { + return NO; + } + if ( get_next_player_to_play(p_uttt) != p_move->player ) { return NO; } - if ( p_uttt->inception_level == 1 ) { - if ( p_uttt->outer_tictactoe->winner == NOBODY - && p_uttt->outer_tictactoe->content[p_move->outer_position] == NOBODY) { - return YES; - } - else { - return NO; - } - } - else { - if (p_uttt->outer_tictactoe->winner == NOBODY - && p_uttt->inner_tictactoes[p_move->outer_position]->content[p_move->inner_position] == NOBODY - && p_uttt->inner_tictactoes[p_move->outer_position]->winner == NOBODY ) - { - return YES; - } - else - { - return NO; - } + + if ( get_next_outer_position(p_uttt) != FREE + && get_next_outer_position(p_uttt) != p_move->outer_position) { + return NO; } + return YES; }