diff --git a/Board.cpp b/Board.cpp
new file mode 100755
index 0000000..78b82b3
--- /dev/null
+++ b/Board.cpp
@@ -0,0 +1,500 @@
+class Board
+{
+ char boardArray [8][8];
+ char turn = 'O';
+
+ public:
+
+ Board()
+ {
+ for (int i = 0; i < 2; ++i)
+ {
+ for (int j = 0; j < 8; ++j)
+ {
+ boardArray[i][j] = 'X';
+ }
+ }
+
+
+ for (int i = 2; i < 6; ++i)
+ {
+ for (int j = 0; j < 8; ++j)
+ {
+ boardArray[i][j] = '_';
+ }
+ }
+
+
+ for (int i = 6; i <= 7; ++i)
+ {
+ for (int j = 0; j < 8; ++j)
+ {
+ boardArray[i][j] = 'O';
+ }
+ }
+
+
+
+ }
+
+ moves parse(string input)
+ {
+
+ input = myToUpper(input);
+
+ 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: "< 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: "<
+#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<