Laboratory 2 Solutions
Solution to life.cc code:
/******************************************************************* * Name: Brenda Student * Date: 1/28/14 * Course: CSCI 132 * Assignment: Lab2 * Instructor: Royden * File: life.cc * Purpose: This file implements the class Life to play conway's * game of life. ********************************************************************/ #include "life.h" int Life::neighbor_count(int row, int col) /* Pre: The Life object contains a configuration, and the coordinates row and col define a cell inside its hedge. Post: The number of living neighbors of the specified cell is returned. */ { int i, j; int count = 0; for (i = row - 1; i <= row + 1; i++) for (j = col - 1; j <= col + 1; j++) count += grid[i][j]; // Increase the count if neighbor is alive. count -= grid[row][col]; // Reduce count, since cell is not its own neighbor return count; } void Life::update() /* Pre: The Life object contains a configuration. Post: The Life object contains the next generation of configuration. */ { int row, col; int new_grid[maxrow + 2][maxcol + 2]; for (row = 1; row <= maxrow; row++) for (col = 1; col <= maxcol; col++) switch (neighbor_count(row, col)) { case 2: new_grid[row][col] = grid[row][col]; // Status stays the same. break; case 3: new_grid[row][col] = 1; // Cell is now alive. break; default: new_grid[row][col] = 0; // Cell is now dead. } for (row = 1; row <= maxrow; row++) for (col = 1; col <= maxcol; col++) grid[row][col] = new_grid[row][col]; } void Life::initialize() /* Pre: None. Post: The Life object contains a configuration specified by the user. */ { int row, col; for (row = 0; row <= maxrow+1; row++) for (col = 0; col <= maxcol+1; col++) grid[row][col] = 0; cout << "List the coordinates for living cells." << endl; cout << "Terminate the list with the special pair -1 -1" << endl; cin >> row >> col; while (row != -1 || col != -1) { if (row >= 1 && row <= maxrow) if (col >= 1 && col <= maxcol) grid[row][col] = 1; else cout << "Column " << col << " is out of range." << endl; else cout << "Row " << row << " is out of range." << endl; cin >> row >> col; } } void Life::print() /* Pre: The Life object contains a configuration. Post: The configuration is written for the user. */ { int row, col; cout << "\nThe current Life configuration is:" << endl; for (row = 1; row <= maxrow; row++) { for (col = 1; col <= maxcol; col++) if (grid[row][col] == 1) cout << '*'; else cout << ' '; cout << endl; } cout << endl; }
Home | | Syllabus | | Assignments | | Lecture Notes