/******************************************************************************************** Step4.cpp Jim Millard for CO311/Spring 2000 Simple program that displays a 4x4 Blue/Red checkerboard
Uses the ezwin API ********************************************************************************************/ #include <iostream> #include <string> using namespace std; #include "ezwin.h" #include "rect.h" void DrawCheckerboard(SimpleWindow& W); //required prototype int ApiMain() { //create the primary window SimpleWindow W("Exercise 3.22, Step 4"); W.Open(); DrawCheckerboard(W); //wait for input prior to quitting char ch; cout << "Enter a character to continue"; cin >> ch; Terminate(); return 0; }
void DrawCheckerboard(SimpleWindow& W) { //A stack of useful constants that can later be replaced by function parameters const float height=2., //static height of all blocks width =2., //static width of all blocks xCenter =width/2., //horizontal center of each block yCenter =height/2.; //vertical center of each block const int BlocksDown =4; //static height of checkerboard const color BaseColor = Blue, //static color of first block AltColor = Red; //static color of alternate block bool doAltColor; //keeps track of whether we should display in the alternate color color currentColor; //the color we're drawing now
//Draw the rectangles int row; //declare here to avoid VC5 scope bug //draw even rows for(row = 0; row < BlocksDown; row+=2) { doAltColor = false; //do the base color first if (doAltColor) currentColor = AltColor; else currentColor = BaseColor; doAltColor = !doAltColor; RectangleShape Rx1(W,xCenter,yCenter + height*row,currentColor,width,height); Rx1.Draw(); if (doAltColor) currentColor = AltColor; else currentColor = BaseColor; doAltColor = !doAltColor; RectangleShape Rx2(W,xCenter + width,yCenter + height*row,currentColor,width,height); Rx2.Draw(); if (doAltColor) currentColor = AltColor; else currentColor = BaseColor; doAltColor = !doAltColor; RectangleShape Rx3(W,xCenter + width*2,yCenter + height*row,currentColor,width,height); Rx3.Draw(); if (doAltColor) currentColor = AltColor; else currentColor = BaseColor; doAltColor = !doAltColor; RectangleShape Rx4(W,xCenter + width*3,yCenter + height*row,currentColor,width,height); Rx4.Draw(); }//even row loop //draw odd rows for(row = 1; row < BlocksDown; row+=2) { doAltColor = true; //do the alternate color first if (doAltColor) currentColor = AltColor; else currentColor = BaseColor; doAltColor = !doAltColor; RectangleShape Rx1(W,xCenter,yCenter + height*row,currentColor,width,height); Rx1.Draw(); if (doAltColor) currentColor = AltColor; else currentColor = BaseColor; doAltColor = !doAltColor; RectangleShape Rx2(W,xCenter + width,yCenter + height*row,currentColor,width,height); Rx2.Draw(); if (doAltColor) currentColor = AltColor; else currentColor = BaseColor; doAltColor = !doAltColor; RectangleShape Rx3(W,xCenter + width*2,yCenter + height*row,currentColor,width,height); Rx3.Draw(); if (doAltColor) currentColor = AltColor; else currentColor = BaseColor; doAltColor = !doAltColor; RectangleShape Rx4(W,xCenter + width*3,yCenter + height*row,currentColor,width,height); Rx4.Draw(); }//odd row loop return; }//DrawCheckerboard