diff --git a/Board.cpp b/Board.cpp index a7c7f8e..05adb8c 100755 --- a/Board.cpp +++ b/Board.cpp @@ -261,7 +261,7 @@ void Board::move(moves m){ int row = 8 - (m.row); int column = m.column; - cout << "INSIDE MOVE: " << row << " " << column << " " << m.moveType << "\n\n"; + //cout << "INSIDE MOVE: " << row << " " << column << " " << m.moveType << "\n\n"; if (row > 8 || row < 0 || column > 8 || column < 0) { cout<<"ERROR: index out of bound."< listOfMoves = b->viewPossibleMoves(); Board* temp = new Board(*b); @@ -101,12 +101,11 @@ void Engine::AI(){ } */ b->displayBoard(); - cout << "----------------------END AI FUNCTION----------------------\n"; + //cout << "----------------------END AI FUNCTION----------------------\n"; } moves Engine::minMax(Board* temp, moves m, int c, int r){ //testing purposes only, c = finite depth - //cout << "c: " << c << "\n\n"; //cout << "current turn: " << temp->getTurn() << "\n"; vector listOfMoves = temp->viewPossibleMoves(); @@ -117,7 +116,7 @@ moves Engine::minMax(Board* temp, moves m, int c, int r){ } */ if (temp->isGameOver() == true){ - cout << "END OF PATH REACHED\n"; + //cout << "END OF PATH REACHED\n"; return m; } @@ -125,8 +124,9 @@ moves Engine::minMax(Board* temp, moves m, int c, int r){ if(temp->getPiece(8 - m.row, m.column)->getType() == temp->getTurn() && temp->isThisMovePossible(8 - m.row, m.column, m.moveType)){ //cout << "piece has been moved in minMax\n"; temp->move(m); + temp->evaluate('X', 'O'); temp->changeTurns(); - temp->displayBoard(); + //temp->displayBoard(); } else { //cout << m.row << " " << m.column << "\n\n"; diff --git a/Server.cpp b/Server.cpp index 7f49679..c5653ce 100644 --- a/Server.cpp +++ b/Server.cpp @@ -119,12 +119,13 @@ int main(int argc, char *argv[]) gameOver = e.getBoard()->isGameOver(); if(gameOver == true) { string endGame = "Game_Over"; - write(newsockfd, endGame.c_str(), endGame.length()); //Display the board to the client (line by line) + + //write(newsockfd, endGame.c_str(), endGame.length()); //Display the board to the client (line by line) break; } else { string continueGame = "Continue_Game"; - write(newsockfd, continueGame.c_str(), continueGame.length()); //Display the board to the client (line by line) + //write(newsockfd, continueGame.c_str(), continueGame.length()); //Display the board to the client (line by line) e.getBoard()->changeTurns(); } } diff --git a/Serverbackup.txt b/Serverbackup.txt new file mode 100755 index 0000000..de9af91 --- /dev/null +++ b/Serverbackup.txt @@ -0,0 +1,114 @@ + + + cout << "Launching server..." << endl; + int sockfd, newsockfd, portno; + socklen_t clilen; + struct sockaddr_in serv_addr, cli_addr; + int n; + + if (port < 2) { + cout << "ERROR, no port provided\n"; + exit(1); + } + + sockfd = socket(AF_INET, SOCK_STREAM, 0); + + if (sockfd < 0) + cout << "ERROR opening socket"; + + bzero((char *) &serv_addr, sizeof(serv_addr)); + portno = port; + serv_addr.sin_family = AF_INET; + serv_addr.sin_addr.s_addr = INADDR_ANY; + serv_addr.sin_port = htons(portno); + + if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) + cout << "ERROR on binding"; + + listen(sockfd,5); + clilen = sizeof(cli_addr); + newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen); + + if (newsockfd < 0) + cout << "ERROR on accept"; + + string move; + bool gameOver = false; + vector record; + b->snapshot(record, *b); + char buffer[256]; + char info[256]; + int choice = -1; + int choice_difficulty = -1; + string final_move; + + //Ask client about game type + string introduction = "WELCOME\n1. Play against AI?\n2. Watch AI vs. AI?\nEnter choice: \n"; + write(newsockfd, introduction.c_str(), introduction.length()); + n = read(newsockfd,info,255); //Reads choice as a string + istringstream convert(info); //Converts the read string to an integer + convert >> choice; //Sets value equal to the converted value + //Later in the project, we need to check for AI and Human modes + cout << "OK" << endl; + bzero(info,256); //Resets info back to normal + + /*//Becca- once your AI code is working, use this code: + + string difficulty_select = "Choose Difficulty\n1. Easy\n2. Medium\n4. Hard\nEnter choice: \n"; + write(newsockfd, difficulty_select.c_str(), difficulty_select.length()); + n = read(newsockfd,info,255); + istringstream convert(info); + convert >> choice_difficulty; + cout << "OK" << endl; + bzero(info,256); + + */ + + while (gameOver != true) + { + gameOver = b->isGameOver(); + + while(b->getTurn() == 'O' && !b->isValid()) + { + b->displayBoard(); + string boardState = b->boardToString(); + final_move = b->boardToString(); + write(newsockfd, boardState.c_str(), boardState.length());//Display the board to the client (line by line) + cout<<"\nStanding by for client... \n"; + n = read(newsockfd,buffer,255);//Read the client's input + move = buffer; + bzero(buffer,256); + b->interpret(move, *b); + if(b->isValid()) { + b->changeTurns(); + b->setValidFalse(); + } + } + + if(b->isValid()) cout << b->getTurn(); + + while(b->getTurn() == 'X' ) + { + easyAI(); + /*Becca- once you finish your AI, uncomment this out and remove the line directly above this + if(choice_difficulty == 1) + easyAI(); + else if(choice_difficulty == 2) + mediumAI(); + else + hardAI(); + */ + } + + gameOver = b->isGameOver(); + b->setValidFalse(); + b->snapshot(record, *b); + } + final_move = b->boardToString(); + string game_over = "\n\nGAME OVER!!!\n"; + write(newsockfd, final_move.c_str(), final_move.length()); //Display the board to the client (line by line) + write(newsockfd, game_over.c_str(), game_over.length()); //Tell the client the game is over + cout << game_over; + usleep(1); + close(newsockfd); + close(sockfd); \ No newline at end of file