//executes move if it is valid. Returns false and does not update Alex_Ayerdi otherwise //Makes computer make its move and returns the computer's move in row, and col bool Alex_Ayerdi::play_square(int &row, int &col){ int blackplayer = 1; int whiteplayer = -1; if (row == 0 && col == 0) { setPlayer(blackplayer); } else { if (player == blackplayer) play_square(row, col, whiteplayer); if (player == whiteplayer) play_square(row, col, blackplayer); } //generate your own move if(full_board()) { row = -1; col = -1; return false; } else { cout << toString() << "..." << endl; vector<int> cell; this->reset_tries(); if (!has_valid_move(player)) { cout << "Alex_Ayerdi must pass." << endl; row = -1; col = -1; return false; } else { int alphaStart = -INFINITY; int betaStart = INFINITY; //generate move make_minimax_alphabeta_cpu_move(this, player, cell, alphaStart, betaStart); //play move if (!play_square(cell[0], cell[1], player)) { row = -1; col = -1; return false; } //pass to opposing player row = cell[0]; col = cell[1]; } cout << toString(); } return true; }
int main(int argc, char *argv[]){ char board[6][7]; int i, j; char player; for(i=0; i<6; i++){ for(j=0; j<7; j++){ board[i][j]=' '; } } print_board(board); while(1){ if(i%2 == 0){ player=player2; }else{ player=player1; } full_board(board); play(board, player); print_board(board); win(board, player); i++; } return 1; }