CSCI 132 Data Structures--Spring 2014

    Home | | Syllabus | | Assignments | | Lecture Notes

    Laboratory 2 Solutions

    Solution to playLife.cc code:

    /*******************************************************************
    * Name: Brenda Student
    * Date: 1/28/14
    * Course: CSCI 132
    * Assignment: Lab2
    * Instructor: Royden
    * Program: playLife.cc
    * Purpose:  Program to play Conway's game of life.  Allows user to
    * input a configuration and watch as many generations as he/she likes.
    ***************************************************************************/
    
    
    #include "life.h"
    bool user_says_yes(void);
    void instructions(void);
    
    int main()  //  Program to play Conway's game of Life.
      /*
    Pre:  The user supplies an initial configuration of living cells.
    Post: The program prints a sequence of pictures showing the changes in
          the configuration of living cells according to the rules for
          the game of Life.
    Uses: The class Life and its methods initialize(), print(), and update().
          The functions  instructions(),  user_says_yes().
      */
    
    {
      Life configuration;
      instructions();
      configuration.initialize();
      configuration.print();
      cout << "Continue viewing new generations? " << endl;
      while (user_says_yes()) {
        configuration.update();
        configuration.print();
        cout << "Continue viewing new generations? " << endl;
      }
    }
    
    
    void instructions()
      /*
    Pre:  None.
    Post: Instructions for using the Life program have been printed.
      */
    
    {
      cout << "Welcome to Conway's game of Life." << endl;
      cout << "This game uses a grid of size "
           << maxrow << " by " << maxcol << " in which" << endl;
      cout << "each cell can either be occupied by an organism or not." << endl;
      cout << "The occupied cells change from generation to generation" << endl;
      cout << "according to the number of neighboring cells which are alive."
           << endl;
    }
    
    bool user_says_yes()
    {
      int c;
      bool initial_response = true;
    
      do {  //  Loop until an appropriate input is received.
        if (initial_response)
          cout << " (y,n)? " << flush;
    
          else
            cout << "Respond with either y or n: " << flush;
    
        do { //  Ignore white space.
          c = cin.get();
        } while (c == '\n' || c ==' ' || c == '\t');
        initial_response = false;
      } while (c != 'y' && c != 'Y' && c != 'n' && c != 'N' && c != -1);
      return (c == 'y' || c == 'Y');
    }
    
    
    

    Home | | Syllabus | | Assignments | | Lecture Notes