#ifndef _GRID_H_
#define _GRID_H_

#include <cstdio>
#include <iostream>
#include <string>
#include <vector>
#include "piece.h"

using std::string;
using std::cout;
using std::endl;
using std::vector;

class Grid
{
    private:
        int rows;
        int cols;
        int numOfMoves;
        int lastMoved; /* 0 = left, 1 = right, 2 = up, 3 = down */
        int lastMoveDir;
        vector<Piece> pieces;
        vector<string> moves;
        string *board;

    public:
        Grid(void);
        /* we do not need a copy constructor since the deault shallow copy will be fine */
        //Grid(const Grid &);

        int *getRows(void);
        int *getCols(void);
        int *getNumOfMoves(void);
        vector<Piece> *getPieces(void);

        void setRows(int);
        void setCols(int);
        void addMove(string);

        void markPiecesPos(void);
        void setlastMoved(int);
        int getlastMoved(void);
        void printMoves(void);
};

#endif