用c#写一个生命游戏
时间: 2023-07-01 13:16:00 浏览: 56
好的,以下是用 C# 编写生命游戏的示例代码:
```csharp
using System;
namespace GameOfLife
{
class Program
{
static void Main(string[] args)
{
int width = 30;
int height = 20;
bool[,] grid = new bool[width, height]; // 初始状态
// 随机生成初始状态
Random random = new Random();
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
grid[x, y] = random.Next(2) == 0;
}
}
// 不断更新状态并输出到控制台
while (true)
{
Console.Clear();
PrintGrid(grid);
bool[,] newGrid = new bool[width, height];
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
int neighbors = CountNeighbors(grid, x, y);
if (grid[x, y])
{
// 活细胞
if (neighbors == 2 || neighbors == 3)
{
newGrid[x, y] = true;
}
}
else
{
// 死细胞
if (neighbors == 3)
{
newGrid[x, y] = true;
}
}
}
}
grid = newGrid;
System.Threading.Thread.Sleep(500); // 间隔一定时间
}
}
// 计算细胞周围活细胞数量
static int CountNeighbors(bool[,] grid, int x, int y)
{
int count = 0;
for (int i = -1; i <= 1; i++)
{
for (int j = -1; j <= 1; j++)
{
if (i == 0 && j == 0)
{
continue;
}
int neighborX = x + i;
int neighborY = y + j;
if (neighborX < 0)
{
neighborX = grid.GetLength(0) - 1;
}
else if (neighborX >= grid.GetLength(0))
{
neighborX = 0;
}
if (neighborY < 0)
{
neighborY = grid.GetLength(1) - 1;
}
else if (neighborY >= grid.GetLength(1))
{
neighborY = 0;
}
if (grid[neighborX, neighborY])
{
count++;
}
}
}
return count;
}
// 输出当前状态到控制台
static void PrintGrid(bool[,] grid)
{
for (int y = 0; y < grid.GetLength(1); y++)
{
for (int x = 0; x < grid.GetLength(0); x++)
{
Console.Write(grid[x, y] ? '#' : ' ');
}
Console.WriteLine();
}
}
}
}
```
这个程序中,我们使用了一个二维布尔数组来表示细胞的生死状态,其中 `true` 表示活细胞,`false` 表示死细胞。在 `Main` 函数中,我们首先生成一个随机的初始状态,并在每次循环中更新状态并输出到控制台,然后等待一段时间再进行下一次循环。在 `CountNeighbors` 函数中,我们计算了每个细胞周围的活细胞数量,而在 `PrintGrid` 函数中,我们将当前状态输出到控制台。
相关推荐
![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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)