//****************************************************************** // ===================================== // Now pretty much everything is done programatically, rather than // with hard code. This should lead to a smaller filesize ;-) // Also, we don't need any string classes (Bah, strings). //****************************************************************** #include using namespace std; const char DARK = (char)219; // Define the Dark char const char LIGHT = (char)177; // Define the Light char const int WIDTH = 7; // Define how many squares wide const int HEIGHT = 7; // Define how many square high const int SQUARE_SIZE = 8; // size of each Square (in chars) const int SCALER = 3; // number of lines less than chars wide void PrintRow(int); void DrawChessboard(); // prototypes for functions void DrawHorizontalBorder(); int main () { DrawChessboard(); // make a call to the DrawChessboard function, system("PAUSE"); // then pause (so we can see the output). return 0; // exit. } void DrawChessboard() { int i; // initialise a counter DrawHorizontalBorder(); // draw a horizontal border for (i=1;i<=HEIGHT;i++) { PrintRow(i%2); // Print as many rows as HEIGHT } // tell us to. DrawHorizontalBorder(); // Draw another border to finish } // |----------------------------------------| void PrintRow (int offset) { // |PrintRow accepts an integer to alternate| // |the starting colour of each line. | int i; // |initialise a few counters for nested | int j; // |loops | int k; // |----------------------------------------| char alternator[2]; // and an array to alternate black and white alternator[0] = DARK; // populate the array alternator[1] = LIGHT; for (j=0;j<=(SQUARE_SIZE-SCALER);j++) {// this loop handles the creation cout << (char)186 << ' '; // of each line in the row for (i=offset;i<(WIDTH+offset);i++) { // This loop deals with creating // each row. // Add the offset to start on the // appropriate colour. for (k=0;k<=SQUARE_SIZE;k++) { // this loop will make each square cout << alternator[i%2]; // in each line. i%2 will oscilate } // between 0 and 1 counting up in i. } // thus giving us alternating cout << ' ' << (char)186 << endl; // colours. finish the border. } } void DrawHorizontalBorder() { int i; //initialise a counter cout << ' '; for (i=0;i<=((WIDTH+1)*SQUARE_SIZE);i++) { cout << (char)196; // output a charachter for the } // whole length of the board cout << endl; // finish with a newline }