以下是使用 C# 实现生命游戏的示例代码:

using System;

namespace GameOfLife
{
    class Program
    {
        static void Main(string[] args)
        {
            int width = 20; // 网格宽度
            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[,] nextGeneration = new bool[width, height];
                for (int x = 0; x < width; x++)
                {
                    for (int y = 0; y < height; y++)
                    {
                        int liveNeighbors = CountLiveNeighbors(grid, x, y);
                        if (grid[x, y])
                        {
                            // 当前细胞为生,根据规则判断是否存活
                            nextGeneration[x, y] = liveNeighbors == 2 || liveNeighbors == 3;
                        }
                        else
                        {
                            // 当前细胞为死,根据规则判断是否复活
                            nextGeneration[x, y] = liveNeighbors == 3;
                        }
                    }
                }

                // 更新细胞状态
                grid = nextGeneration;

                // 暂停一段时间
                System.Threading.Thread.Sleep(1000);
            }
        }

        // 统计细胞周围的活细胞数量
        static int CountLiveNeighbors(bool[,] grid, int x, int y)
        {
            int count = 0;
            int width = grid.GetLength(0);
            int height = grid.GetLength(1);

            for (int i = -1; i <= 1; i++)
            {
                for (int j = -1; j <= 1; j++)
                {
                    int neighborX = (x + i + width) % width;
                    int neighborY = (y + j + height) % height;

                    if (grid[neighborX, neighborY])
                    {
                        count++;
                    }
                }
            }

            // 排除自身细胞
            if (grid[x, y])
            {
                count--;
            }

            return count;
        }

        // 打印细胞状态
        static void PrintGrid(bool[,] grid)
        {
            int width = grid.GetLength(0);
            int height = grid.GetLength(1);

            for (int y = 0; y < height; y++)
            {
                for (int x = 0; x < width; x++)
                {
                    Console.Write(grid[x, y] ? "■" : " ");
                }
                Console.WriteLine();
            }
        }
    }
}

此代码使用二维布尔数组表示细胞状态,其中 true 表示细胞存活,false 表示细胞死亡。通过随机生成初始细胞状态,并根据规则计算下一代细胞状态。在控制台上打印细胞状态,并通过暂停一段时间来模拟游戏的进行。

C# 生命游戏实现:面向对象编程的终极挑战

原文地址: https://www.cveoy.top/t/topic/fMrn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录