21xrx.com
2025-03-28 08:31:00 Friday
文章检索 我的文章 写文章
C++语言实现的生命游戏代码
2023-07-08 12:09:06 深夜i     8     0
C++ 生命游戏 代码 实现

生命游戏是一种经典的模拟生命现象的程序。它是由英国数学家约翰·康威于1970年提出的。在这个游戏里,有一个二维的网格,可以容纳许多细胞,每个细胞都只能是生或死。整个系统在一个特定的时刻开始,然后每个细胞可以按照特定的规则演变,直到进入一个新的时刻。这些规则包括细胞的出生和死亡。生命游戏的游戏规则非常简单,但是却令人着迷,因为这个游戏可以展现出生命的很多特性。

在实现生命游戏代码的过程中,我们可以使用C++语言。C++是一种高性能、高效和功能丰富的面向对象编程语言,可以非常适合开发这种程序。下面是一个使用C++语言实现的生命游戏代码的示例:

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int ROWS = 20;
const int COLS = 20;
const int LIFE_CHANCE = 30;
void initGrid(int grid[ROWS][COLS]){
  // 随机生成初始状态
  srand(time(0));
  for(int i=0; i<ROWS; i++){
    for(int j=0; j<COLS; j++){
      grid[i][j] = (rand() % 100 < LIFE_CHANCE) ? 1 : 0;
    }
  }
}
void printGrid(int grid[ROWS][COLS]){
  // 输出当前状态
  for(int i=0; i<ROWS; i++){
    for(int j=0; j<COLS; j++){
      cout << (grid[i][j] ? "*" : " ") << " ";
    }
    cout << endl;
  }
}
int countNeighbors(int grid[ROWS][COLS], 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==row && j==col)
        continue;
      if(i>=0 && i<ROWS && j>=0 && j<COLS)
        count += grid[i][j];
    }
  }
  return count;
}
void nextGeneration(int grid[ROWS][COLS]){
  // 计算下一个状态
  int newGrid[ROWS][COLS];
  for(int i=0; i<ROWS; i++){
    for(int j=0; j<COLS; j++){
      int neighbors = countNeighbors(grid, i, j);
      if(grid[i][j]){ // 活细胞
        if(neighbors<2 || neighbors>3)
          newGrid[i][j] = 0;
        else
          newGrid[i][j] = 1;
      }
      else{ // 死细胞
        if(neighbors==3)
          newGrid[i][j] = 1;
        else
          newGrid[i][j] = 0;
      }
    }
  }
  // 更新到最新状态
  for(int i=0; i<ROWS; i++){
    for(int j=0; j<COLS; j++){
      grid[i][j] = newGrid[i][j];
    }
  }
}
int main(){
  int grid[ROWS][COLS];
  initGrid(grid);
  printGrid(grid);
  for(int i=0; i<20; i++){
    nextGeneration(grid);
    printGrid(grid);
  }
  return 0;
}

上述代码是一个完整的生命游戏实现。它使用了C++的很多特性,包括数组、随机数、函数等等。我们可以将其编译运行,就可以看到生命游戏的模拟效果。这个程序可以用来研究细胞生命的规律,还可以用于教育和科学研究等方面的应用。

  
  

评论区