21xrx.com
2024-11-22 06:39:30 Friday
登录
文章检索 我的文章 写文章
C++语言实现的生命游戏代码
2023-07-08 12:09:06 深夜i     --     --
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++的很多特性,包括数组、随机数、函数等等。我们可以将其编译运行,就可以看到生命游戏的模拟效果。这个程序可以用来研究细胞生命的规律,还可以用于教育和科学研究等方面的应用。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复