/** * \brief Main entry of example application */ int main(void) { /* Variable to store the last winner */ uint8_t winner; system_init(); delay_init(); gfx_mono_init(); init_buttons(); init_display(); /* Start game */ while (true) { winner = 0; /* Wait for button interaction */ while (get_button() == BUTTON_NONE) { } /* Draw empty board */ setup_board(); /* Start playing */ for (int i = 0; i < 5; i++) { /* User's turn */ user_turn(); /* Check if the game is over */ winner = we_have_a_winner(); if (winner || i == 4) { break; } /* Add a delay for the opponent to "think" */ delay_ms(500); /* Opponent's turn */ opponent_turn(); /* Check if the game is over */ winner = we_have_a_winner(); if (winner) { break; } } /* Game over, print winner and get ready for restart */ if (winner == 1) { /* User won */ gfx_mono_draw_string("You won!", STRING_X, 0, &sysfont); wins++; } else if (winner == 2) { gfx_mono_draw_string("You lost!", STRING_X, 0, &sysfont); } else { gfx_mono_draw_string("No winner!", STRING_X, 0, &sysfont); } gfx_mono_draw_string("Press a button", STRING_X, SQUARE3_Y, &sysfont); games++; } }
int main(void) { char board[BOARD_SIZE][BOARD_SIZE]; init_board(board); printf(WELCOME_TO_DRAUGHTS); printf(ENTER_SETTINGS); char *command = input2str(stdin); int win_pos = 0; while (strcmp(command, "quit") != 0){ if (strcmp(command, "start") == 0){ if (is_valid_board(board)) break; else{ printf(WROND_BOARD_INITIALIZATION); free(command); command = input2str(stdin); continue; } } exc(command,board); free(command); command = input2str(stdin); } if (strcmp(command, "start") == 0){ // initially we printed the board at the start of the game, commented out in order to match the running examples. //if (user_color == WHITE) print_board(board); while (1){ if (user_color == WHITE){ int ret_val = user_turn(board, WHITE); if (ret_val == QUIT) break; if (ret_val == WIN_POS){ printf(BLACK_WIN); win_pos = 1; break; } if (computer_turn(board, BLACK) == WIN_POS){ printf(WHITE_WIN); win_pos = 1; break; } } else{ if (computer_turn(board, WHITE) == WIN_POS){ printf(BLACK_WIN); win_pos = 1; break; } int ret_val = user_turn(board, BLACK); if (ret_val == QUIT) break; if (ret_val == WIN_POS){ printf(WHITE_WIN); win_pos = 1; break; } } } } if (win_pos == 1){ free(command); command = input2str(stdin); } free(command); }