c++the game of life代码
时间: 2024-05-12 14:12:58 浏览: 77
以下是一个简单的C++实现Game of Life的示例代码:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int ROWS = 20;
const int COLS = 60;
// 初始化格子
void initializeGrid(bool grid[][COLS]) {
srand(time(NULL));
for (int row = 0; row < ROWS; row++) {
for (int col = 0; col < COLS; col++) {
int random = rand() % 10;
if (random < 3) {
grid[row][col] = true;
} else {
grid[row][col] = false;
}
}
}
}
// 显示格子
void displayGrid(bool grid[][COLS]) {
for (int row = 0; row < ROWS; row++) {
for (int col = 0; col < COLS; col++) {
if (grid[row][col]) {
cout << "*";
} else {
cout << " ";
}
}
cout << endl;
}
}
// 计算每个格子周围活细胞的数量
int countNeighbors(bool grid[][COLS], int row, int col) {
int count = 0;
for (int i = -1; i <= 1; i++) {
for (int j = -1; j <= 1; j++) {
int neighborRow = row + i;
int neighborCol = col + j;
if (neighborRow >= 0 && neighborRow < ROWS && neighborCol >= 0 && neighborCol < COLS) {
if (i != 0 || j != 0) {
if (grid[neighborRow][neighborCol]) {
count++;
}
}
}
}
}
return count;
}
// 更新格子
void updateGrid(bool grid[][COLS]) {
bool newGrid[ROWS][COLS];
for (int row = 0; row < ROWS; row++) {
for (int col = 0; col < COLS; col++) {
int neighbors = countNeighbors(grid, row, col);
if (grid[row][col]) {
if (neighbors == 2 || neighbors == 3) {
newGrid[row][col] = true;
} else {
newGrid[row][col] = false;
}
} else {
if (neighbors == 3) {
newGrid[row][col] = true;
} else {
newGrid[row][col] = false;
}
}
}
}
for (int row = 0; row < ROWS; row++) {
for (int col = 0; col < COLS; col++) {
grid[row][col] = newGrid[row][col];
}
}
}
// 主函数
int main() {
bool grid[ROWS][COLS];
initializeGrid(grid);
while (true) {
system("cls"); // 清屏
displayGrid(grid);
updateGrid(grid);
}
return 0;
}
```
以上代码使用二维布尔数组来表示格子的状态,并且使用函数来完成初始化、显示、计算和更新等操作。在主函数中,我们先使用 `initializeGrid` 函数来随机初始化格子的状态,然后使用 `displayGrid` 函数来显示格子,最后使用 `updateGrid` 函数来更新格子的状态。由于Game of Life是一个无限大的世界,因此我们在这里使用了一个简单的循环来模拟它。
需要注意的是,由于在Windows系统中,清屏需要使用 `system("cls")` 命令,因此以上代码只能在Windows系统中运行。如果你想在其他操作系统中运行该代码,需要使用相应的清屏命令。
阅读全文