#include <iostream>
#include <vector>
#include <iomanip>
using namespace std;

const int bSize = 4;

class Board {
public:
    vector<int> tiles; //bSize*bSize);
    ///void getMove(tiles);
    void shuffle();
    void display();
    bool won(); ///returns true if the game board is as below, otherwise false
    Board(); ///	constructor
};

int main()
{  /// Initialize board with blank tiles in the lower right corner:
   /// create a Board, b

    Board b;
    ///game loop
	while(!b.won())
	{
		// construct a board with size*size tiles
		//getMove(board, bSize); // function calls – size is const int,
		b.display(); // board is the address in memory of the
        cin.get();
	}                          // first element of the array, board[]
}

///Board constructor
Board::Board() {
    for(int i = 0; i < bSize*bSize; ++i)
        tiles.push_back(i);
}

///define display()
void Board::display() {
    for(int i = 0; i < bSize*bSize; ++i) {
        cout << setw(4) << tiles[i];
        if(i%bSize==3) cout << endl;
    }
}

///define shuffle()

/// define won()
bool Board::won() {
    return false;
}

/// define getMove()




/// Prototype descriptions (enter a prototype that fits.)

/// display() shows it on the console.  For example, if
/// board = {1, 2, 3, 4, 5, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15, 6}
/// then display shows
///  1  2  3  4
///  5     7  8
///  9 10 11 12
/// 13 14 15  6

///shuffle() Use the href{http://en.wikipedia.org/wiki/Fisher–Yates_shuffle}{Fisher-Yates} algorithm to shuffle.
///After shuffling the board, a call to the function display will produce a
///shuffled board like this:
/** 14  5  4 11
   12  9  6  7
      13  8 10
   15  1  3  2 */

///
///  1  2  3  4
///  5  6  7  8
///  9 10 11 12
/// 13 14 15
