public GameState()
        {
            int puzzleSize = GameState.puzzleSize;
            data = new Piece[puzzleSize, puzzleSize];
            for (int i = 0; i < puzzleSize; i++)
                for (int j = 0; j < puzzleSize; j++)
                {
                    data[i, j] = new Piece();
                    //data[i, j].setWhite();
                };
            data[3, 3].setWhite();
            data[4, 4].setWhite();
            data[3, 4].setBlack();
            data[4, 3].setBlack();

            /*
            data[6, 6].setEmpty();
            data[6, 7].setEmpty();
            data[7, 7].setEmpty();
             * */

            this.children = new GameState[maxNumChildren];
            this.name = Convert.ToString(GameState.nodeCounter++);
        }
 public GameState(GameState currGs, GameState parent_)
 {
     Piece[,] data = new Piece[puzzleSize, puzzleSize];
     for (int i = 0; i < puzzleSize; i++)
         for (int j = 0; j < puzzleSize; j++)
             data[i, j] = new Piece(currGs.data[i, j].val);
     this.parent = parent_;
     this.children = new GameState[maxNumChildren];
 }
 public GameState(Piece[,] data_)
 {
     data = new Piece[puzzleSize, puzzleSize];
     for (int i = 0; i < puzzleSize; i++)
         for (int j = 0; j < puzzleSize; j++)
             data[i, j] = new Piece(data_[i, j].val);
     this.children = new GameState[maxNumChildren];
 }
 public void setData(Piece[,] data_)
 {
     for (int i = 0; i < puzzleSize; i++)
         for (int j = 0; j < puzzleSize; j++)
             data[i, j].val = data_[i, j].val;
 }