From 864b354e7f7f4036fa3983604ee6d4f10f84c56c Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 27 Oct 2015 12:55:23 -0500 Subject: [PATCH 1/3] updating --- Board.cpp | 31 ++++++++++++++++++++++++++----- Board.h | 5 +++-- Engine.cpp | 27 +++++++++++++++------------ Engine.h | 2 +- a.out | Bin 0 -> 81527 bytes test.cpp | 3 +-- 6 files changed, 46 insertions(+), 22 deletions(-) create mode 100755 a.out diff --git a/Board.cpp b/Board.cpp index 8051c3c..a64bc7a 100755 --- a/Board.cpp +++ b/Board.cpp @@ -5,21 +5,42 @@ using namespace std; Board::Board() { + Piece* temp; for (int i = 0; i < 2; ++i) { for (int j = 0; j < 8; ++j) { - xpieces.push_back(new Piece(i, j, 'X')); - pieces.push_back(new Piece(i, j, 'X')); + temp = new Piece(i, j, 'X'); + xpieces.push_back(temp); + pieces.push_back(temp); } } for (int i = 6; i < 8; ++i) { for (int j = 0; j < 8; ++j) { - opieces.push_back(new Piece(i, j, 'O')); - pieces.push_back(new Piece(i, j, 'O')); + temp = new Piece(i, j, 'O'); + opieces.push_back(temp); + pieces.push_back(temp); } } } +Board::Board(const Board& b) { + vector xp = b.getXPieces(); + vector op = b.getOPieces(); + Piece* temp; + + for (int i = 0; i < xp.size(); ++i) { + temp = new Piece(xp[i]->getX(), xp[i]->getY(), 'X'); + xpieces.push_back(temp); + pieces.push_back(temp); + } + + for (int i = 0; i < op.size(); ++i) { + temp = new Piece(op[i]->getX(), op[i]->getY(), 'O'); + opieces.push_back(temp); + pieces.push_back(temp); + } +} + //make this efficient! bool Board::isPiece(int r, int c){ for (int i = 0; i < pieces.size(); ++i){ @@ -92,7 +113,7 @@ void Board::changeTurns(){ if (turn == 'O') turn = 'X'; else turn = 'O'; } - + void Board::displayBoard(){ cout << "; A B C D E F G H"<> boardArray; vector xpieces; vector opieces; vector pieces; - //char boardArray [8][8]; char turn = 'O'; public: Board(); + Board(const Board& b); bool isPiece(int r, int c); Piece* getPiece(int r, int c); + vector getXPieces() const { return xpieces; } + vector getOPieces() const { return opieces; } moves parse(string input); char getTurn() { return turn; } bool isGameOver(); diff --git a/Engine.cpp b/Engine.cpp index 4a83431..23a3161 100755 --- a/Engine.cpp +++ b/Engine.cpp @@ -43,7 +43,7 @@ void Engine::startGame(){ while(b->getTurn() == 'X' ) { - easyAI(); + AI(); } gameOver = b->isGameOver(); @@ -67,12 +67,12 @@ void Engine::easyAI() void Engine::AI(){ cout << "----------------------BEGIN AI FUNCTION----------------------\n"; vector listOfMoves = b->viewPossibleMoves(); - Board temp = *b; + Board* temp = new Board(*b); //probably not needed, check later - if (temp.getTurn() != 'X'){ + if (temp->getTurn() != 'X'){ cout << "a changing of turns is needed. \n"; - temp.changeTurns(); + temp->changeTurns(); } //only doing 1 branch right now because testing @@ -80,7 +80,8 @@ void Engine::AI(){ minMax(temp, listOfMoves[i]); }*/ - //b->moveWOPrint(minMax(temp, listOfMoves[0], 0)); + b->move(minMax(temp, listOfMoves[0], 0)); + b->changeTurns(); //verification of correct turn if (b->getTurn() != 'O'){ @@ -91,30 +92,32 @@ void Engine::AI(){ cout << "----------------------END AI FUNCTION----------------------\n"; } -moves Engine::minMax(Board temp, moves m, int c){ +moves Engine::minMax(Board* temp, moves m, int c){ //testing purposes only - if (c > 5){ + if (c > 5){ return m; } - if (temp.isGameOver() == true){ + if (temp->isGameOver() == true){ cout << "END OF PATH REACHED\n"; return m; } else { - if(temp.isThisMovePossible(8 - m.row, temp.charToIntColumn(m.column), m.moveType)){ + if(temp->isThisMovePossible(8 - m.row, temp->charToIntColumn(m.column), m.moveType)){ cout << "piece has been moved in minMax\n"; - //temp.moveWOPrint(m); + temp->move(m); + temp->changeTurns(); } cout << "c: " << c << "\n\n"; - cout << "current turn: " << temp.getTurn() << "\n"; - vector listOfMoves = temp.viewPossibleMoves(); + cout << "current turn: " << temp->getTurn() << "\n"; + vector listOfMoves = temp->viewPossibleMoves(); for (int i = 0; i < listOfMoves.size(); ++i){ //return minMax(temp, listOfMoves[i]); } + temp->displayBoard(); //limited recursion return minMax(temp, listOfMoves[0], ++c); diff --git a/Engine.h b/Engine.h index 463d05c..97efbf8 100755 --- a/Engine.h +++ b/Engine.h @@ -12,5 +12,5 @@ public: void startGame(); void easyAI(); void AI(); - moves minMax(Board temp, moves m, int c); + moves minMax(Board* temp, moves m, int c); }; \ No newline at end of file diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..7410dc4a19688015a2d0f8038482b10d8c65d97c GIT binary patch literal 81527 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 Bm5=}c literal 0 HcmV?d00001 diff --git a/test.cpp b/test.cpp index 2851e14..993ed73 100755 --- a/test.cpp +++ b/test.cpp @@ -6,8 +6,7 @@ using namespace std; int main() { //board testing - Board b; - cout << b.boardToString(); + //Board b; //engine testing Engine e; From b9b1ba07642ece632e5884dfb64b6114dcdb2de8 Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 27 Oct 2015 13:00:38 -0500 Subject: [PATCH 2/3] remove a.out --- a.out | Bin 81527 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 a.out diff --git a/a.out b/a.out deleted file mode 100755 index 7410dc4a19688015a2d0f8038482b10d8c65d97c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81527 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 Bm5=}c From f10c4e7c18469c95d9fa0b8721030edd1ee098e9 Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 27 Oct 2015 14:48:03 -0500 Subject: [PATCH 3/3] this will work with functioning mechanics --- Board.cpp | 30 ++++++++++++++++++------------ Engine.cpp | 3 ++- test.cpp | 4 ++-- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/Board.cpp b/Board.cpp index a64bc7a..d01b709 100755 --- a/Board.cpp +++ b/Board.cpp @@ -201,13 +201,13 @@ char Board::intToCharColumn(int input){ } void Board::move(string inputMove){ - moves jugada = parse(inputMove); - move(jugada); + moves m = parse(inputMove); + move(m); } -void Board::move(moves jugada){ - int row = 8 - (jugada.row); - int column = charToIntColumn(jugada.column); +void Board::move(moves m){ + int row = 8 - (m.row); + int column = charToIntColumn(m.column); if (row > 8 || row < 0 || column > 8 || column < 0) { cout<<"ERROR: index out of bound."<moveFwd(); } - else if (jugada.moveType == "LEFT") { + else if (m.moveType == "LEFT") { //add error checking piece->moveLeft(); } - else if (jugada.moveType == "RIGHT") { + else if (m.moveType == "RIGHT") { //add error checking piece->moveRight(); } @@ -262,21 +268,21 @@ bool Board::isThisMovePossible(int r, int c, string moveType){ reflector *= -1; if (moveType == "FWD"){ - if (isPiece(r+reflector, c)) + if (!isPiece(r + reflector, c)) return true; else return false; } else if (moveType == "RIGHT"){ - if (isPiece(r+reflector, c+1) && (r+reflector >= 0) && (r+reflector <= 7) && (c+1 <= 7)) + if (!isPiece(r+reflector, c+1) && (r+reflector >= 0) && (r+reflector <= 7) && (c+1 <= 7)) return true; else return false; } else if (moveType == "LEFT"){ - if (isPiece(r+reflector, c+1) && (r+reflector >= 0) && (r+reflector <= 7) && (c+1 >= 0)) + if (!isPiece(r+reflector, c+1) && (r+reflector >= 0) && (r+reflector <= 7) && (c+1 >= 0)) return true; else return false; @@ -314,7 +320,7 @@ vector Board::viewPossibleMoves(){ } } - else { + else if (turn == 'X') { for (int i = 0; i < opieces.size(); ++i){ r = opieces[i]->getX(); c = opieces[i]->getY(); diff --git a/Engine.cpp b/Engine.cpp index 23a3161..45c2229 100755 --- a/Engine.cpp +++ b/Engine.cpp @@ -60,6 +60,7 @@ void Engine::easyAI() int randomChoice = rand() % (listOfMoves.size()-1) - 0; int temp = randomChoice; + cout << "easy AI move: " << listOfMoves[randomChoice].row << listOfMoves[randomChoice].column << listOfMoves[randomChoice].moveType << "\n"; b->move(listOfMoves[randomChoice]); b->changeTurns(); } @@ -93,7 +94,7 @@ void Engine::AI(){ } moves Engine::minMax(Board* temp, moves m, int c){ - //testing purposes only + //testing purposes only, c = finite depth if (c > 5){ return m; } diff --git a/test.cpp b/test.cpp index 993ed73..88d7f86 100755 --- a/test.cpp +++ b/test.cpp @@ -6,8 +6,8 @@ using namespace std; int main() { //board testing - //Board b; - + Board b; + //engine testing Engine e; e.startGame();