c++ – chess game Class


Here is the chess class for my very own chess game. Everything is in this class. Generating moves, getting a move from the computer, printing the board etc etc.

these are the values for each piece in the board, also used in the int board(8)(8);

pawn = 1

bishop = 2

knight = 3

rook = 5

queen = 6

king = 10

The same values apply for black pieces too, except this time they are negative. For example;
A white pawn holds a value of 1

A black pawn holds a value of -1

#include<iostream>
#include<vector>
#include<string>

typedef std::vector<std::string> buff;
typedef std::string str;

// Pawn - 1, Knight - 3, Bishop - 2, rook - 5,queen - 6,king - 10

str push(int row,int col,int desrow,int descol){
    using std::to_string;

    str mystr = to_string(row) + to_string(col) + to_string(desrow) + to_string(descol);
    return mystr;
}


class Chess{

    public:
        short int board(8)(8) = // This array represents the chess board
            {
              {-2,0,0,0,0,0,-10,0},
              {0,0,0,0,0,0,0,0},
              {0,0,0,0,-1,0,0,0},
              {0,0,0,0,0,0,0,0},
              {0,0,6,0,0,0,0,0},
              {0,10,0,0,0,0,0,0},
              {0,0,0,0,0,0,0,0},
              {0,0,0,0,0,0,0,0},
            };
        buff pseudomoves;
        buff legal_moves;
    private:
        void undomove(int original,str Move){
            board(Move(0)-48)(Move(1)-48) = board(Move(2)-48)(Move(3)-48);
            board(Move(2)-48)(Move(3)-48) = original;
        }

        public:
        int perform(str Move){
            int original;
            original = board(Move(2)-48)(Move(3)-48);
            board(Move(2)-48)(Move(3)-48) = board(Move(0)-48)(Move(1)-48);
            board(Move(0)-48)(Move(1)-48) = 0;
            return original;
        }
        private:
        bool check(bool turn){
            if (turn == true){
                int row,col;
                //Finding the king on the board

                for (int i = 0;i < 8;i++){
                    for (int j = 0;j < 8;j++){
                        if (board(i)(j) == 10){
                            row = i;
                            col = j;
                        }
                    }
                }

                //Finding the king on the board


                if (row != 0 && col != 0 && board(row-1)(col-1) == -1) return true;
                else if (row != 0 && col != 7 && board(row-1)(col+1) == -1) return true;
                int a,b;
                a = row;
                b = col;
                if (a != 0 && b != 0){
                        for(;;){
                        a-=1;
                        b-=1;
                        if (board(a)(b) == -6 || board(a)(b) == -2) return true;
                        if (board(a)(b) !=  0 || a == 0 || b == 0) break;
                    }
                }
                a = row;
                b = col;
                if (a != 0 && b != 7){
                        for(;;){
                        a-=1;
                        b+=1;
                        if (board(a)(b) == -6 || board(a)(b) == -2) return true;
                        if (board(a)(b) !=  0 || a == 0 || b == 7) break;
                    }
                }
                a = row;
                b = col;
                if (a != 7 && b != 0){
                        for(;;){
                        a+=1;
                        b-=1;
                        if (board(a)(b) == -6 || board(a)(b) == -2) return true;
                        if (board(a)(b) !=  0 || a == 7 || b == 0) break;
                    }
                }
                a = row;
                b = col;
                if (a != 7 && b != 7){
                        for(;;){
                        a+=1;
                        b+=1;
                        if (board(a)(b) == -6 || board(a)(b) == -2) return true;
                        if (board(a)(b) !=  0 || a == 7 || b == 7) break;
                    }
                }

                a = row;
                b = col;
                if (a != 7){
                    for(;;){
                        a+=1;
                        if (board(a)(b) == -6 || board(a)(b) == -5) return true;
                        if (board(a)(b) !=  0 || a == 7 ) break;
                    }
                }
                a = row;
                b = col;
                if (a != 0){
                    for(;;){
                        a-=1;
                        if (board(a)(b) == -6 || board(a)(b) == -5) return true;
                        if (board(a)(b) !=  0 || a == 0 ) break;
                    }
                }

                a = row;
                b = col;
                if (b != 7){
                    for(;;){
                        b+=1;
                        if (board(a)(b) == -6 || board(a)(b) == -5) return true;
                        if (board(a)(b) !=  0 || b == 7 ) break;
                    }
                }
                a = row;
                b = col;
                if (b != 0){
                    for(;;){
                        b-=1;
                        if (board(a)(b) == -6 || board(a)(b) == -5) return true;
                        if (board(a)(b) !=  0 || b == 0 ) break;
                    }
                }

                if (row > 0 && col < 6 && board(row-1)(col+2) == -3)return true;
                if (row > 1 && col < 7 && board(row-2)(col+1) == -3)return true;
                if (row < 7 && col < 6 && board(row+1)(col+2) == -3)return true;
                if (row < 6 && col < 7 && board(row+2)(col+1) == -3)return true;
                if (row < 6 && col > 0 && board(row+2)(col-1) == -3)return true;
                if (row < 7 && col > 1 && board(row+1)(col-2) == -3)return true;
                if (row > 1 && col > 0 && board(row-2)(col-1) == -3)return true;
                if (row > 0 && col > 1 && board(row-1)(col-2) == -3)return true;

                if (row != 7 && board(row+1)(col) == -10)return true;
                if (row != 0 && board(row-1)(col) == -10)return true;
                if (col != 7 && board(row)(col+1) == -10) return true;
                if (col != 0 && board(row)(col-1) == -10) return true;
                if (row != 7 && col != 7 && board(row+1)(col+1) == -10)return true;
                if (row != 7 && col != 0 && board(row+1)(col-1) == -10) return true;
                if (row != 0 && col != 7 && board(row-1)(col+1) == -10) return true;
                if (row != 0 && col != 0 && board(row-1)(col-1) == -10) return true;


            }

            else if(turn == false){
                int row,col;
                //Finding the king on the board

                for (int i = 0;i < 8;i++){
                    for (int j = 0;j < 8;j++){
                        if (board(i)(j) == -10){
                            row = i;
                            col = j;
                        }
                    }
                }

                //Finding the king on the board


                if (row != 7 && col != 0 && board(row+1)(col-1) == 1) return true;
                else if (row != 7 && col != 7 && board(row+1)(col+1) == 1) return true;

                int a,b;
                a = row;
                b = col;
                if (a != 0 && b != 0){
                        for(;;){
                        a-=1;
                        b-=1;
                        if (board(a)(b) == 6 || board(a)(b) == 2) return true;
                        if (board(a)(b) !=  0 || a == 0 || b == 0) break;
                    }
                }
                a = row;
                b = col;
                if (a != 0 && b != 7){
                        for(;;){
                        a-=1;
                        b+=1;
                        if (board(a)(b) == 6 || board(a)(b) == 2) return true;
                        if (board(a)(b) !=  0 || a == 0 || b == 7) break;
                    }
                }
                a = row;
                b = col;
                if (a != 7 && b != 0){
                        for(;;){
                        a+=1;
                        b-=1;
                        if (board(a)(b) == 6 || board(a)(b) == 2) return true;
                        if (board(a)(b) !=  0 || a == 7 || b == 0) break;
                    }
                }
                a = row;
                b = col;
                if (a != 7 && b != 7){
                        for(;;){
                        a+=1;
                        b+=1;
                        if (board(a)(b) == 6 || board(a)(b) == 2) return true;
                        if (board(a)(b) !=  0 || a == 7 || b == 7) break;
                    }
                }

                a = row;
                b = col;
                if (a != 7){
                    for(;;){
                        a+=1;
                        if (board(a)(b) == 6 || board(a)(b) == 5) return true;
                        if (board(a)(b) !=  0 || a == 7 ) break;
                    }
                }
                a = row;
                b = col;
                if (a != 0){
                    for(;;){
                        a-=1;
                        if (board(a)(b) == 6 || board(a)(b) == 5) return true;
                        if (board(a)(b) !=  0 || a == 0 ) break;
                    }
                }

                a = row;
                b = col;
                if (b != 7){
                    for(;;){
                        b+=1;
                        if (board(a)(b) == 6 || board(a)(b) == 5) return true;
                        if (board(a)(b) !=  0 || b == 7 ) break;
                    }
                }
                a = row;
                b = col;
                if (b != 0){
                    for(;;){
                        b-=1;
                        if (board(a)(b) == 6 || board(a)(b) == 5) return true;
                        if (board(a)(b) !=  0 || b == 0 ) break;
                    }
                }

                if (row > 0 && col < 6 && board(row-1)(col+2) == 3)return true;
                if (row > 1 && col < 7 && board(row-2)(col+1) == 3)return true;
                if (row < 7 && col < 6 && board(row+1)(col+2) == 3)return true;
                if (row < 6 && col < 7 && board(row+2)(col+1) == 3)return true;
                if (row < 6 && col > 0 && board(row+2)(col-1) == 3)return true;
                if (row < 7 && col > 1 && board(row+1)(col-2) == 3)return true;
                if (row > 1 && col > 0 && board(row-2)(col-1) == 3)return true;
                if (row > 0 && col > 1 && board(row-1)(col-2) == 3)return true;

                if (row != 7 && board(row+1)(col) == 10)return true;
                if (row != 0 && board(row-1)(col) == 10)return true;
                if (col != 7 && board(row)(col+1) == 10) return true;
                if (col != 0 && board(row)(col-1) == 10) return true;
                if (row != 7 && col != 7 && board(row+1)(col+1) == 10)return true;
                if (row != 7 && col != 0 && board(row+1)(col-1) == 10) return true;
                if (row != 0 && col != 7 && board(row-1)(col+1) == 10) return true;
                if (row != 0 && col != 0 && board(row-1)(col-1) == 10) return true;

            }

            return false;
        }

        void getdiagonalmoves(bool turn,int row,int col){

            int a,b;
            if(turn){
                a = row;
                b = col;
                if (a !=  0 && b != 0){
                    for (;;){
                        a-=1;
                        b-=1;
                        if (board(a)(b) > 0) break;
                        if (board(a)(b) < 0 || a == 0 || b == 0){
                            pseudomoves.push_back(push(row,col,a,b));
                            break;
                        }
                        if(!board(a)(b))pseudomoves.push_back(push(row,col,a,b));
                    }
                }
                a = row;
                b = col;
                if (a !=  0 && b != 7){
                    for (;;){
                        a-=1;
                        b+=1;
                        if (board(a)(b) > 0) break;
                        if (board(a)(b) < 0 || a == 0 || b == 7){
                            pseudomoves.push_back(push(row,col,a,b));
                            break;
                        }
                        if(!board(a)(b))pseudomoves.push_back(push(row,col,a,b));

                    }
                }
                a = row;
                b = col;
                if (a !=  7 && b != 7){
                    for (;;){
                        a+=1;
                        b+=1;
                        if (board(a)(b) > 0) break;
                        if (board(a)(b) < 0 || a == 7 || b == 7){
                            pseudomoves.push_back(push(row,col,a,b));
                            break;
                        }
                        if(!board(a)(b))pseudomoves.push_back(push(row,col,a,b));
                }
                }
                a = row;
                b = col;
                if (a !=  7 && b != 0){
                    for (;;){
                        a+=1;
                        b-=1;
                        if (board(a)(b) > 0) break;
                        if (board(a)(b) < 0 || a == 7 || b == 0){
                            pseudomoves.push_back(push(row,col,a,b));
                            break;
                        }
                        if(!board(a)(b))pseudomoves.push_back(push(row,col,a,b));
                }
                }
            }
            else if(!turn){

                a = row;
                b = col;
                if (a !=  0 && b != 0){
                    for (;;){
                        a-=1;
                        b-=1;
                        if (board(a)(b) < 0) break;
                        if (board(a)(b) > 0 || a == 0 || b == 0){
                            pseudomoves.push_back(push(row,col,a,b));
                            break;
                        }
                        if(!board(a)(b))pseudomoves.push_back(push(row,col,a,b));
                    }
                }
                a = row;
                b = col;
                if (a !=  0 && b != 7){
                    for (;;){
                        a-=1;
                        b+=1;
                        if (board(a)(b) < 0)
                            break;
                        if (board(a)(b) > 0 || a == 0 || b == 7){
                            pseudomoves.push_back(push(row,col,a,b));
                            break;
                        }
                        if(board(a)(b) == 0)
                            pseudomoves.push_back(push(row,col,a,b));

                    }
                }
                a = row;
                b = col;
                if (a !=  7 && b != 7){
                    for (;;){
                        a+=1;
                        b+=1;
                        if (board(a)(b) < 0) break;
                        if (board(a)(b) > 0 || a == 7 || b == 7){
                            pseudomoves.push_back(push(row,col,a,b));
                            break;
                        }
                        if(!board(a)(b))pseudomoves.push_back(push(row,col,a,b));
                }
                }
                a = row;
                b = col;
                if (a !=  7 && b != 0){
                    for (;;){
                        a+=1;
                        b-=1;
                        if (board(a)(b) < 0) break;
                        if (board(a)(b) > 0 || a == 7 || b == 0){
                            pseudomoves.push_back(push(row,col,a,b));
                            break;
                        }
                        if(!board(a)(b))pseudomoves.push_back(push(row,col,a,b));
                }
                }

            }
        }

        void getstraigtmoves(bool turn ,int row,int col){

            int a,b;
            if (turn) {// white player
            a = row;
            b = col;
            if (a != 0){
                for (;;){
                    a-=1;
                    if (board(a)(b) > 0) break;
                    if (board(a)(b) < 0 || a == 0){
                        pseudomoves.push_back(push(row,col,a,b));
                        break;
                    }
                    if(!board(a)(b)) pseudomoves.push_back(push(row,col,a,b));
                }
            }
            a = row;
            b = col;
            if (a!=7){
                for(;;){
                    a+=1;
                    if (board(a)(b) > 0) break;
                    if (board(a)(b) < 0 || a == 7){
                        pseudomoves.push_back(push(row,col,a,b));
                        break;
                    }
                    if(!board(a)(b)) pseudomoves.push_back(push(row,col,a,b));
                }
            }
            a = row;
            b = col;
            if (b!= 0){
                for(;;){
                    b-=1;
                    if (board(a)(b) > 0) break;
                    if (board(a)(b) < 0 || b == 0){
                        pseudomoves.push_back(push(row,col,a,b));
                        break;
                    }
                    if(!board(a)(b)) pseudomoves.push_back(push(row,col,a,b));
                }
            }
            a  =row;
            b = col;
            if (b != 7){
                for(;;){
                    b+=1;
                    if (board(a)(b) > 0) break;
                    if (board(a)(b) < 0 || b == 7){
                        pseudomoves.push_back(push(row,col,a,b));
                        break;
                    }
                    if(!board(a)(b)) pseudomoves.push_back(push(row,col,a,b));
                }
            }
            }

            else if(!turn) // black player
            {
                a = row;
                b = col;
                if (a != 0){
                    for (;;){
                        a-=1;
                        if (board(a)(b) < 0) break;
                        if (board(a)(b) > 0 || a == 0){
                            pseudomoves.push_back(push(row,col,a,b));
                            break;
                        }
                        if(!board(a)(b)) pseudomoves.push_back(push(row,col,a,b));
                    }
                }
                a = row;
                b = col;
                if (a!=7){
                    for(;;){
                        a+=1;
                        if (board(a)(b) < 0) break;
                        if (board(a)(b) > 0 || a == 7){
                            pseudomoves.push_back(push(row,col,a,b));
                            break;
                        }
                        if(!board(a)(b)) pseudomoves.push_back(push(row,col,a,b));
                    }
                }
                a = row;
                b = col;
                if (b!= 0){
                    for(;;){
                        b-=1;
                        if (board(a)(b) < 0) break;
                        if (board(a)(b) > 0 || b == 0){
                            pseudomoves.push_back(push(row,col,a,b));
                            break;
                        }
                        if(!board(a)(b)) pseudomoves.push_back(push(row,col,a,b));
                    }
                }
                a  =row;
                b = col;
                if (b != 7){
                    for(;;){
                        b+=1;
                        if (board(a)(b) < 0) break;
                        if (board(a)(b) > 0 || b == 7){
                            pseudomoves.push_back(push(row,col,a,b));
                            break;
                        }
                        if(!board(a)(b)) pseudomoves.push_back(push(row,col,a,b));
                    }
            }
                }
            //returnpseudomoves;
        }

        void getknightmoves(bool turn,int row,int col){

            if (turn) {

            if (row > 0 && col < 6 && board(row-1)(col+2) <= 0) // one up two right
                pseudomoves.push_back(push(row,col,row-1,col+2));

            if (row > 1 && col < 7 && board(row-2)(col+1) <= 0) // two up one right
                pseudomoves.push_back(push(row,col,row-2,col+1));

            if (row < 7 && col < 6 && board(row+1)(col+2) <= 0) // one down two right
                pseudomoves.push_back(push(row,col,row+1,col+2));

            if (row < 6 && col < 7 && board(row+2)(col+1) <= 0) // two down one right
                pseudomoves.push_back(push(row,col,row+2,col+1));

            if (row < 6 && col > 0 && board(row+2)(col-1) <= 0) //two down one left
                pseudomoves.push_back(push(row,col,row+2,col-1));

            if (row < 7 && col > 1 && board(row+1)(col-2) <= 0) // one down two left
                pseudomoves.push_back(push(row,col,row+1,col-2));

            if (row > 1 && col > 0 && board(row-2)(col-1) <= 0) // two up one left
                pseudomoves.push_back(push(row,col,row-2,col-1));

            if (row > 0 && col > 1 && board(row-1)(col-2) <= 0) // one up two left
                pseudomoves.push_back(push(row,col,row-1,col-2));
            }

            else if (!turn){
                if (row > 0 && col < 6 && board(row-1)(col+2) >= 0)pseudomoves.push_back(push(row,col,row-1,col+2));
                if (row > 1 && col < 7 && board(row-2)(col+1) >= 0)pseudomoves.push_back(push(row,col,row-2,col+1));
                if (row < 7 && col < 6 && board(row+1)(col+2) >= 0)pseudomoves.push_back(push(row,col,row+1,col+2));
                if (row < 6 && col < 7 && board(row+2)(col+1) >= 0)pseudomoves.push_back(push(row,col,row+2,col+1));
                if (row < 6 && col > 0 && board(row+2)(col-1) >= 0)pseudomoves.push_back(push(row,col,row+2,col-1));
                if (row < 7 && col > 1 && board(row+1)(col-2) >= 0)pseudomoves.push_back(push(row,col,row+1,col-2));
                if (row > 1 && col > 0 && board(row-2)(col-1) >= 0)pseudomoves.push_back(push(row,col,row-2,col-1));
                if (row > 0 && col > 1 && board(row-1)(col-2) >= 0)pseudomoves.push_back(push(row,col,row-1,col-2));
            }

            //returnpseudomoves;
        }

        void getpawnmoves(bool turn,int row,int col){
            if (turn) {
                if (row == 6 && board(row-1)(col) == 0 && board(row-2)(col) == 0)
                    pseudomoves.push_back(push(row,col,row-2,col));
                if (board(row-1)(col) == 0)
                    pseudomoves.push_back(push(row,col,row-1,col));
                if (col != 0 && board(row-1)(col-1) < 0)
                    pseudomoves.push_back(push(row,col,row-1,col-1));
                if (col != 7 && board(row-1)(col+1) < 0)
                    pseudomoves.push_back(push(row,col,row-1,col+1));
            }

            else if(!turn){
                if (row == 7) //returnpseudomoves;

                if (row == 1 && board(row+1)(col) == 0 && board(row+2)(col) == 0)
                    pseudomoves.push_back(push(row,col,row+2,col));
                if (board(row+1)(col) == 0)
                    pseudomoves.push_back(push(row,col,row+1,col));
                if (col != 0 && board(row+1)(col-1) > 0)
                    pseudomoves.push_back(push(row,col,row+1,col-1));
                if (col != 7 && board(row+1)(col+1) > 0)
                    pseudomoves.push_back(push(row,col,row+1,col+1));
            }

            //returnpseudomoves;
        }

        void getkingmoves(bool turn,int row,int col){

            if (!turn){
                if (row != 7 && board(row+1)(col) >=0) pseudomoves.push_back(push(row,col,row+1,col));
                if (row != 0 && board(row-1)(col) >=0) pseudomoves.push_back(push(row,col,row-1,col));
                if (col != 7 && board(row)(col+1) >=0) pseudomoves.push_back(push(row,col,row,col+1));
                if (col != 0 && board(row)(col-1) >=0) pseudomoves.push_back(push(row,col,row,col-1));
                if (row != 7 && col != 7 && board(row+1)(col+1) >=0) pseudomoves.push_back(push(row,col,row+1,col+1));
                if (row != 7 && col != 0 && board(row+1)(col-1) >=0) pseudomoves.push_back(push(row,col,row+1,col-1));
                if (row != 0 && col != 7 && board(row-1)(col+1) >=0) pseudomoves.push_back(push(row,col,row-1,col+1));
                if (row != 0 && col != 0 && board(row-1)(col-1) >=0) pseudomoves.push_back(push(row,col,row-1,col-1));
            }
            else if (turn){
                if (row != 7 && board(row+1)(col) <=0) pseudomoves.push_back(push(row,col,row+1,col));
                if (row != 0 && board(row-1)(col) <=0) pseudomoves.push_back(push(row,col,row-1,col));
                if (col != 7 && board(row)(col+1) <=0) pseudomoves.push_back(push(row,col,row,col+1));
                if (col != 0 && board(row)(col-1) <=0) pseudomoves.push_back(push(row,col,row,col-1));
                if (row != 7 && col != 7 && board(row+1)(col+1) <=0) pseudomoves.push_back(push(row,col,row+1,col+1));
                if (row != 7 && col != 0 && board(row+1)(col-1) <=0) pseudomoves.push_back(push(row,col,row+1,col-1));
                if (row != 0 && col != 7 && board(row-1)(col+1) <=0) pseudomoves.push_back(push(row,col,row-1,col+1));
                if (row != 0 && col != 0 && board(row-1)(col-1) <=0) pseudomoves.push_back(push(row,col,row-1,col-1));
            }
            //returnpseudomoves;
        }

        int evaluation(){
            int score;
            for (int i = 0;i < 8;i++){
                for(int j =0;j < 8;j++){
                    if(!board(i)(j)) continue;
                    if (board(i)(j) == 1) score-=10;
                    else if (board(i)(j) == 2)score-=30;
                    else if (board(i)(j) == 3)score-=30;
                    else if (board(i)(j) == 5)score-=50;
                    else if (board(i)(j) == 6)score-=90;
                    else if (board(i)(j) == 10)score-=900;
                    else if (board(i)(j) == -1)score+=10;
                    else if (board(i)(j) == -2)score+=30;
                    else if (board(i)(j) == -3)score+=30;
                    else if (board(i)(j) == -5)score+=50;
                    else if (board(i)(j) == -6)score+=60;
                    else if (board(i)(j) == -10)score+=900;

                }
            }
            return score;
        }

        int miniMax(int depth,bool ismax,int alpha,int beta){
            if (depth == 0){
                return evaluation();
            }
            int maxeval = -999999;
            int mineval = 999999;
            buff possiblemoves;
            int original;
            int eval;
            if (ismax == true){
                 possiblemoves = getallmoves(false);
                 for (long unsigned int i = 0;i < possiblemoves.size();i++){
                    original = perform(possiblemoves(i));
                    eval = miniMax(depth-1,false,alpha,beta);
                    undomove(original,possiblemoves(i));
                    if(eval > maxeval)
                        maxeval = eval;
                    if (alpha >= eval)
                        alpha = eval;
                    if (beta <= alpha)
                        break;
                 }
                 return maxeval;
            }
            else{
                possiblemoves = getallmoves(true);
                 for (long unsigned int i = 0;i < possiblemoves.size();i++){
                    original = perform(possiblemoves(i));
                    eval = miniMax(depth-1,true,alpha,beta);
                    undomove(original,possiblemoves(i));
                    if (eval < mineval)
                        mineval = eval;
                    if (beta <= eval)
                        beta = eval;
                    if (beta <= alpha)
                        break;
                 }
                 return mineval;
            }

        }


        str miniMaxroot(int depth,bool turn){
            str bestmove;
            int maxeval = -9999999;
            buff allmoves = getallmoves(turn);
            int original;
            int eval;
            for (long unsigned int i = 0;i < allmoves.size();i++){
                original = perform(allmoves(i));
                eval = miniMax(depth-1,false,-99999999,99999999);
                std::cout << "Move: " << allmoves(i) << " Points: " << eval << "n";
                undomove(original,allmoves(i));
                if (eval > maxeval){
                    maxeval = eval;
                    bestmove = allmoves(i);
                }
            }
            return bestmove;
        }

    public:
        void printboard(){
        for(int i = 0; i< 8;i++){
            for(int j = 0;j < 8;j++){
              if (board(i)(j) == 1)
              std::cout << "P ";
              else if (board(i)(j) == 5)
              std::cout << "R ";
              else if (board(i)(j) == 3)
              std::cout << "K ";
              else if (board(i)(j) == 2)
              std::cout << "B ";
              else if (board(i)(j) == 6)
              std::cout << "Q ";
              else if(board(i)(j) == 10)
              std::cout << "KI ";
              else if (board(i)(j) == 0)
              std::cout << ". ";

              else if (board(i)(j) == -1)
              std::cout << "p ";
              else if (board(i)(j) == -5)
              std::cout << "r ";
              else if (board(i)(j) == -3)
              std::cout << "k ";
              else if (board(i)(j) == -2)
              std::cout << "b ";
              else if (board(i)(j) == -6)
              std::cout << "q ";
              else if(board(i)(j) == -10)
              std::cout << "ki ";
              else if (board(i)(j) == -109)
              std::cout << "X";

            }
            std::cout << std::endl;
          }
        }

        buff getallmoves(bool turn){
            pseudomoves.clear();
            legal_moves.clear();
            int original;
            if (turn){
                for(int i = 0;i < 8;i++){
                    for(int j = 0;j < 8;j++){
                        if (!board(i)(j)) continue;
                        else if(board(i)(j) == 1) getpawnmoves(true,i,j);
                        else if(board(i)(j) == 2) getdiagonalmoves(true,i,j);
                        else if(board(i)(j) == 3) getknightmoves(true,i,j);
                        else if(board(i)(j) == 5) getstraigtmoves(true,i,j);
                        else if(board(i)(j) == 6){
                            getdiagonalmoves(true,i,j);
                            getstraigtmoves(true,i,j);
                        }
                        else if(board(i)(j) == 10) getkingmoves(true,i,j);
                    }
                }
                return pseudomoves;
                for(long unsigned int i = 0;i < pseudomoves.size();i++){
                    original = perform(pseudomoves(i));
                    if(check(true) == false){
                    legal_moves.push_back(pseudomoves(i));
                    }
                    undomove(original,pseudomoves(i));
                }
                return legal_moves;
            }


            else if(!turn){
                for(int i = 0;i < 8;i++){
                    for(int j = 0;j < 8;j++){
                        if (!board(i)(j)) continue;
                        else if(board(i)(j) == -1) getpawnmoves(false,i,j);
                        else if(board(i)(j) == -2) getdiagonalmoves(false,i,j);
                        else if(board(i)(j) == -3) getknightmoves(false,i,j);
                        else if(board(i)(j) == -5) getstraigtmoves(false,i,j);
                        else if(board(i)(j) == -6){
                            getdiagonalmoves(false,i,j);
                            getstraigtmoves(false,i,j);
                        }
                        else if(board(i)(j) == -10) getkingmoves(false,i,j);
                    }
                }
                for(long unsigned int i = 0;i < pseudomoves.size();i++){
                    original = perform(pseudomoves(i));
                    if(check(false) == false){
                    legal_moves.push_back(pseudomoves(i));
                    }
                    undomove(original,pseudomoves(i));
                }
                return legal_moves;
            }
            return legal_moves;
            }

        str computer_move(unsigned short int depth){
            str bestmove;
            bestmove = miniMaxroot(depth,false);
            std::cout << "Bestmove: " << bestmove << "n";
            perform(bestmove);
            return bestmove;
        }
};

```