用c++写一个康威生命游戏
时间: 2023-12-19 09:05:08 浏览: 41
好的,我可以为您提供一个简单的C++实现康威生命游戏的代码。康威生命游戏是一个基于细胞自动机的零玩家游戏,它是由英国数学家约翰·康威在1970年发明的。
以下是一个简单的实现:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int ROW = 20; //棋盘行数
const int COL = 20; //棋盘列数
void initBoard(int board[][COL]) {
srand(time(NULL)); //随机种子
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
board[i][j] = rand() % 2; //随机生成0或1
}
}
}
void displayBoard(int board[][COL]) {
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
if (board[i][j] == 0) {
cout << " "; //死细胞用空格表示
}
else {
cout << "X"; //活细胞用X表示
}
}
cout << endl;
}
}
int countNeighbor(int board[][COL], int row, int col) {
int count = 0;
for (int i = row - 1; i <= row + 1; i++) {
for (int j = col - 1; j <= col + 1; j++) {
if (i >= 0 && i < ROW && j >= 0 && j < COL && !(i == row && j == col)) {
count += board[i][j];
}
}
}
return count;
}
void updateBoard(int board[][COL]) {
int newBoard[ROW][COL];
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
int count = countNeighbor(board, i, j);
if (board[i][j] == 1 && (count == 2 || count == 3)) { //活细胞周围2或3个活细胞时仍然存活
newBoard[i][j] = 1;
}
else if (board[i][j] == 0 && count == 3) { //死细胞周围恰好3个活细胞时复活
newBoard[i][j] = 1;
}
else {
newBoard[i][j] = 0; //其他情况细胞死亡
}
}
}
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
board[i][j] = newBoard[i][j]; //更新棋盘
}
}
}
int main() {
int board[ROW][COL];
initBoard(board);
while (true) {
displayBoard(board);
updateBoard(board);
system("cls"); //清屏
}
return 0;
}
```
该程序使用二维数组模拟了一个棋盘,其中每个元素代表一个细胞,0表示死细胞,1表示活细胞。`initBoard`函数用于随机初始化棋盘,`displayBoard`函数用于显示当前的棋盘状态,`countNeighbor`函数用于统计某个细胞周围的活细胞数量,`updateBoard`函数用于根据细胞周围的情况更新棋盘状态。在主函数中,程序不断显示当前的棋盘状态,并不断更新棋盘,直到用户手动退出程序为止。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)