This program was difficult for me to do. 1. I did not understand simple co-ordinate system -of the x, y axis. 2. Neither did I understand that in order to draw an actual pattern in the playpen window it was necessary to use the plot() function multiple times - for each pixel point to be displayed on screen. The origin generally does not need to change, the co-ordinates can be manipulated by adjusting the values passed to plot. 3. I still find it hard to understand nested loops. This was my first attempt at this program: // cover playpen with tiles #include #include "playpen.h" int main() { fgw::playpen paper; int color(0); int draw(0); int const x(8); int count(0); int y(0); // loop to move up y axis while (count <= 8) { draw = x; while (draw >= 0) { paper.scale(32); paper.plot(-draw, y, color); paper.display(); --draw; ++color; } draw = x; while (draw >= 0) { paper.scale(32); paper.plot(draw, y, color); paper.display(); --draw; ++color; } ++y; ++count; } draw = 0; count = 0; y = 0; // loop to move down y axis while (count <= 8) { draw = x; while (draw >= 0) { paper.scale(32); paper.plot(-draw, y, color); paper.display(); --draw; ++color; } draw = x; while (draw >= 0) { paper.scale(32); paper.plot(draw, y, color); paper.display(); --draw; ++color; } --y; ++count; } std::cout << "color is " << color << '\n'; std::cin.get(); } Although it does work to fill the playpen window with all the colors the program over writes some tiles and therefore fails to deliver a full solution. In the end, the program solution was provided by Francis Glassborow posting the solution on usenet.