diff --git a/src/main.cpp b/src/main.cpp index b516eac..ded6623 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -20,30 +20,30 @@ struct game_state { char board[TILE_COUNT]; }; -int check_win_condition(game_state * gs, char player) { +int check_win_condition(const game_state& gs, char player) { int i; for( i = 0 ; i < 3 ; i++){ //rows - if(gs->board[(i*3)]==player && gs->board[(i*3)+1]==player && gs->board[(i*3)+2]==player) + if(gs.board[(i*3)]==player && gs.board[(i*3)+1]==player && gs.board[(i*3)+2]==player) return 1; //column - if(gs->board[i]==player && gs->board[i+3]==player && gs->board[i+6]==player) + if(gs.board[i]==player && gs.board[i+3]==player && gs.board[i+6]==player) return 1; } - if(gs->board[0] == player && gs->board[4] == player && gs->board[8] == player) + if(gs.board[0] == player && gs.board[4] == player && gs.board[8] == player) return 1; - if(gs->board[2] == player && gs->board[4] == player && gs->board[6] == player) + if(gs.board[2] == player && gs.board[4] == player && gs.board[6] == player) return 1; return 0; } -void display_game_state(game_state * gs){ - printf("turn %i:\n",gs->turn); +void display_game_state(const game_state& gs){ + printf("turn %i:\n", gs.turn); for(int i = 0; i < 3; i++){ for(int j = 0; j < 3 ; j++){ - if(gs->board[(i*3)+j]) - printf("%c", gs->board[(i*3)+j]); + if(gs.board[(i*3)+j]) + printf("%c", gs.board[(i*3)+j]); else printf("_"); } @@ -51,40 +51,40 @@ void display_game_state(game_state * gs){ } } -void player_turn(game_state * gs, char player, int input) +void player_turn(game_state& gs, char player, int input) { if(input > TILE_COUNT && input < 0) fprintf(stderr,"ERR: player input not in range."); - if(!gs->board[input]) - gs->board[input] = player; - if(check_win_condition(gs,player)){ + if(!gs.board[input]) + gs.board[input] = player; + if(check_win_condition(gs, player)){ printf("player %c wins!\n", player); - gs->turn = -1; + gs.turn = -1; } } -void game_turn(game_state * gs,int player_input){ - gs->turn++; +void game_turn(game_state& gs,int player_input){ + gs.turn++; player_turn(gs, 'O', player_input); display_game_state(gs); - if(gs->turn == -1) + if(gs.turn == -1) return; player_turn(gs, 'X', rand()%TILE_COUNT); display_game_state(gs); } -int exists_empty_tile(game_state * gs){ +int exists_empty_tile(const game_state& gs){ int i; for( i = 0; i < TILE_COUNT ; i++) - if(!gs->board[i]) + if(!gs.board[i]) return 1; return 0; } int main(){ srand(time(NULL)); - game_state gs = {0,0}; - while(exists_empty_tile(&gs) && gs.turn != -1){ - game_turn(&gs, get_player_input()); + game_state gs = {}; + while(exists_empty_tile(gs) && gs.turn != -1){ + game_turn(gs, get_player_input()); } }