目錄ios
1、在Dev C++裏建立項目TheGameOfLifeapp
2、生命遊戲其它初始佈局code
1、在Dev C++裏建立項目TheGameOfLife
一、編寫頭文件life.h
const int maxrow = 20, maxcol = 60; // grid dimensions class Life { public: void initialize(); void print(); void update(); private: int grid[maxrow + 2][maxcol + 2]; // allows for two extra rows and columns int neighbor_count(int row, int col); }; #define DONE #include "life.cpp"
二、編寫C++程序life.cpp
#ifdef DONE 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; } 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 alive. break; default: new_grid[row][col] = 0; // Cell is dead. } for (row = 1; row <= maxrow; row++) for (col = 1; col <= maxcol; col++) grid[row][col] = new_grid[row][col]; } 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; } #endif
三、編寫頭文件utility.h
#include <iostream> #include <istream> using namespace std; #include "life.h" void instructions(); bool user_says_yes(); #define DONE #include "utility.cpp"
四、編寫程序文件utility.cpp
#ifdef DONE 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'); return(c == 'y' || c == 'Y'); } #endif
五、編寫主程序文件main.cpp
#include "utility.h" 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(); cout << "count = " << configuration.neighbor_count(2, 3) << endl; configuration.print(); cout << "Continue viewing new generations? " << endl; while (user_says_yes()) { configuration.update(); configuration.print(); cout << "Continue viewing new generations? " << endl; } return 0; }
六、運行程序,查看結果
2、生命遊戲其它初始佈局
本文分享 CSDN - howard2005。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。blog