From 78c5605d4c586227019d0d7b31da946f02058e5d Mon Sep 17 00:00:00 2001 From: William Bracho Blok Date: Mon, 19 Oct 2015 15:51:48 -0500 Subject: [PATCH 1/5] undo command works --- main.cpp | 166 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 154 insertions(+), 12 deletions(-) diff --git a/main.cpp b/main.cpp index e365e5b..4566296 100644 --- a/main.cpp +++ b/main.cpp @@ -4,6 +4,7 @@ #include + using namespace std; // class piece @@ -31,7 +32,6 @@ using namespace std; // } // }; - string myToUpper(string input) { string output; @@ -72,8 +72,14 @@ struct moves column = columna; moveType = m; } + + void display() + { + cout<= 0) && (r+reflector <= 7) && (c+1 <= 7) ) return true; + if (boardArray[r+reflector][c+1] != pieceToMove && (r+reflector >= 0) && (r+reflector <= 7) && (c+1 <= 7) ) + { + return true; + } else return false; } else if (moveType == "LEFT") { - if (boardArray[r+reflector][c-1] != pieceToMove && (r+reflector >= 0) && (r+reflector <= 7) && (c+1 >= 0) ) return true; + if (boardArray[r+reflector][c-1] != pieceToMove && (r+reflector >= 0) && (r+reflector <= 7) && (c+1 >= 0) ) + { + return true; + } else return false; } @@ -525,6 +551,7 @@ class Board { if (boardArray[r][c] == turn) { + if (isThisMovePossible(r,c,"FWD")) { moves temp(8-r,intToCharColumn(c+1),"FWD"); @@ -547,6 +574,11 @@ class Board } } + // cout<<"\nnumber of possible choices: "< record; + +void undo(Board& tablero) +{ + if (record.size() < 2) + { + cout<<"nothing to undo"< input) @@ -585,13 +666,43 @@ void displayPossibleMoves(vector input) } } +void snapshot(vector& inputVec, Board inputBoard) +{ + if (inputVec.size() == 10) + { + inputVec.erase(inputVec.begin()); + } + + else if (inputVec.size() > 10) + { + cout<<"QUEUE OVERFLOW!"<>choice; + + if (choice == 1) cout<<"playing with AI..."<>move; - b.move(move); + interpret(move,b); } vector possibleMoves = b.viewPossibleMoves(); //displayPossibleMoves(possibleMoves); for debugging purposes - AI + if (choice == 1) + { + b.easyAI(); + } + + else + { + while(b.getTurn() == 'X' ) + { + b.displayBoard(); + cout<<"\nEnter command: "; + cin>>move; + interpret(move,b); + } + } - b.easyAI(); - + //b.snapshot(); gameOver = b.isGameOver(); + + snapshot(record,b); } + //for debugging purposes + cout<<"Record:"< Date: Mon, 19 Oct 2015 16:37:58 -0500 Subject: [PATCH 2/5] final restructure --- GameEngine.cpp | 560 ------------------------------------------------- GameEngine.h | 34 --- 2 files changed, 594 deletions(-) delete mode 100755 GameEngine.cpp delete mode 100755 GameEngine.h diff --git a/GameEngine.cpp b/GameEngine.cpp deleted file mode 100755 index a5c7506..0000000 --- a/GameEngine.cpp +++ /dev/null @@ -1,560 +0,0 @@ -#include -#include -#include -#include -#include "GameEngine.h" - -using namespace std; - -string myToUpper(string input) -{ - string output; - - for (int i = 0 ; i < input.size(); ++i) - { - int numeric; - - if ((input[i] - 0 >= 97) && (input[i] - 0 <= 122)) - { - numeric = input[i] - 32; - output.push_back((char)numeric);// = 'Q';//(char) numeric; - } - else output.push_back(input[i]); - } - - for (int i = 0; i < output.size(); ++i) - { - cout< 8 || row < 0 || kolumn > 8 || kolumn < 0) - { - cout<<"ERROR: index out of bound!"< 8 || row < 0 || kolumn > 8 || kolumn < 0) - { - cout<<"ERROR: index out of bound!"<= 0) && (r+reflector <= 7) && (c+1 <= 7) ) return true; - else return false; - } - - else if (moveType == "LEFT") - { - if (boardArray[r+reflector][c-1] != pieceToMove && (r+reflector >= 0) && (r+reflector <= 7) && (c+1 >= 0) ) return true; - else return false; - } - - else return false; - } - } - - - - - vector viewPossibleMoves() - { - vector output; - - for (int r = 0; r < 8; ++r) - { - for (int c = 0; c < 8; ++c) - { - if (boardArray[r][c] == turn) - { - if (isThisMovePossible(r,c,"FWD")) - { - moves temp(8-r,intToCharColumn(c+1),"FWD"); - output.push_back(temp); - } - - if (isThisMovePossible(r,c,"LEFT")) - { - moves temp(8-r,intToCharColumn(c+1),"LEFT"); - output.push_back(temp); - } - - if (isThisMovePossible(r,c,"RIGHT")) - { - moves temp(8-r,intToCharColumn(c+1),"RIGHT"); - output.push_back(temp); - } - - } - } - } - - return output; - } - - - void easyAI() - { - - //1) see all possible movements - - vector listOfMoves = viewPossibleMoves(); - - //2) pick a movement - - srand(time(NULL)); - int randomChoice = rand() % (listOfMoves.size()-1) - 0; // choose a move betwen listOfMoves[0] to last element - - //3) execute movement - - int temp = randomChoice; - - move(listOfMoves[randomChoice]); - - //cout<<"\n\nMove executed by AI: "< input) -{ - cout<<"\n\nList of possible Moves:"< -#include "Board.h" - -using namespace std; - -string myToUpper(string input); - -struct moves -{ - int row; - char column; - string moveType; - - moves(int linea, int columna, string m) - { - row = linea; - column = columna; - moveType = m; - } -}; - - - - -void displayPossibleMoves(vector input) -{ - cout<<"\n\nList of possible Moves:"< Date: Mon, 19 Oct 2015 16:45:38 -0500 Subject: [PATCH 3/5] merge and restructure --- Board.cpp | 1 + Board.h | 2 ++ a.out | Bin 41954 -> 57395 bytes main.cpp | 13 +++++++------ test.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++++------ 5 files changed, 56 insertions(+), 12 deletions(-) diff --git a/Board.cpp b/Board.cpp index 0cd08d1..e765e82 100755 --- a/Board.cpp +++ b/Board.cpp @@ -504,6 +504,7 @@ void Board::undo(Board& tablero) void Board::interpret(string input, Board& tablero) //determines what kind of command its input is { + vector record; input = myToUpper(input); if (input == "UNDO") diff --git a/Board.h b/Board.h index 921455b..d98c0f3 100755 --- a/Board.h +++ b/Board.h @@ -23,6 +23,8 @@ class Board { public: Board(); + char elementAt(int r, int k) { return boardArray[r][k]; } + void modifyAt(int r, int k, char input) { boardArray[r][k] = input; } moves parse(string input); char getTurn() { return turn; } bool isGameOver(); diff --git a/a.out b/a.out index 02b097697816e35bab25ad3ac1fec8e4049c3814..2e926353058f6a17cd79da4d0792e161f058a5e6 100755 GIT binary patch literal 57395 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 z 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 delta 14759 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 diff --git a/main.cpp b/main.cpp index 37212b1..d4e940a 100644 --- a/main.cpp +++ b/main.cpp @@ -8,7 +8,6 @@ using namespace std; int main() { - cout<<"\n----------------------------"<>choice; + cin >> choice; if (choice == 1) cout<<"playing with AI..."< record; + + b.snapshot(record,b); while (gameOver != true) { @@ -40,7 +41,7 @@ int main() b.displayBoard(); cout<<"\nEnter command: "; cin>>move; - interpret(move,b); + b.interpret(move,b); } @@ -59,14 +60,14 @@ int main() b.displayBoard(); cout<<"\nEnter command: "; cin>>move; - interpret(move,b); + b.interpret(move,b); } } //b.snapshot(); gameOver = b.isGameOver(); - snapshot(record,b); + b.snapshot(record,b); } //for debugging purposes diff --git a/test.cpp b/test.cpp index 4d6518a..d4e940a 100755 --- a/test.cpp +++ b/test.cpp @@ -8,8 +8,19 @@ using namespace std; int main() { + cout<<"\n----------------------------"<> choice; + + if (choice == 1) cout<<"playing with AI..."< record; + + b.snapshot(record,b); + while (gameOver != true) { gameOver = b.isGameOver(); - while(b.getTurn() == 'O') + while(b.getTurn() == 'O' ) { b.displayBoard(); - cout<<"\nEnter move: "; + cout<<"\nEnter command: "; cin>>move; - b.move(move); + b.interpret(move,b); } vector possibleMoves = b.viewPossibleMoves(); //displayPossibleMoves(possibleMoves); for debugging purposes - AI + if (choice == 1) + { + b.easyAI(); + } + + else + { + while(b.getTurn() == 'X' ) + { + b.displayBoard(); + cout<<"\nEnter command: "; + cin>>move; + b.interpret(move,b); + } + } - b.easyAI(); - + //b.snapshot(); gameOver = b.isGameOver(); + + b.snapshot(record,b); } + //for debugging purposes + cout<<"Record:"< Date: Mon, 19 Oct 2015 16:47:14 -0500 Subject: [PATCH 4/5] merge and restructure --- main.cpp | 82 -------------------------------------------------------- 1 file changed, 82 deletions(-) delete mode 100644 main.cpp diff --git a/main.cpp b/main.cpp deleted file mode 100644 index d4e940a..0000000 --- a/main.cpp +++ /dev/null @@ -1,82 +0,0 @@ -#include -#include -#include -#include -#include "Board.h" - -using namespace std; - -int main() -{ - cout<<"\n----------------------------"<> choice; - - if (choice == 1) cout<<"playing with AI..."< record; - - b.snapshot(record,b); - - while (gameOver != true) - { - gameOver = b.isGameOver(); - - while(b.getTurn() == 'O' ) - { - b.displayBoard(); - cout<<"\nEnter command: "; - cin>>move; - b.interpret(move,b); - } - - - vector possibleMoves = b.viewPossibleMoves(); - //displayPossibleMoves(possibleMoves); for debugging purposes - AI - - if (choice == 1) - { - b.easyAI(); - } - - else - { - while(b.getTurn() == 'X' ) - { - b.displayBoard(); - cout<<"\nEnter command: "; - cin>>move; - b.interpret(move,b); - } - } - - //b.snapshot(); - gameOver = b.isGameOver(); - - b.snapshot(record,b); - } - - //for debugging purposes - cout<<"Record:"< Date: Mon, 19 Oct 2015 17:02:56 -0500 Subject: [PATCH 5/5] fixed board output --- Board.cpp | 18 +++++++----------- a.out | Bin 57395 -> 57395 bytes test.cpp | 18 ++++++------------ 3 files changed, 13 insertions(+), 23 deletions(-) diff --git a/Board.cpp b/Board.cpp index e765e82..479dfd1 100755 --- a/Board.cpp +++ b/Board.cpp @@ -89,16 +89,16 @@ void Board::changeTurns() void Board::displayBoard() { cout<<"\n\n"; - cout<<" A B C D E F G H"< Board::viewPossibleMoves() { vector output; @@ -541,7 +536,8 @@ void Board::snapshot(vector& inputVec, Board inputBoard) inputVec.push_back(inputBoard); } - + +//move this to its own file void Board::easyAI() { diff --git a/a.out b/a.out index 2e926353058f6a17cd79da4d0792e161f058a5e6..20d22fc48711798618affec8fb2f0efec2968857 100755 GIT binary patch delta 10431 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 Mf6OqCJ>3}me-C}@h5!Hn diff --git a/test.cpp b/test.cpp index d4e940a..368e689 100755 --- a/test.cpp +++ b/test.cpp @@ -8,28 +8,22 @@ using namespace std; int main() { - cout<<"\n----------------------------"<> choice; - - if (choice == 1) cout<<"playing with AI..."< record; - b.snapshot(record,b); while (gameOver != true)