下面是一个简单的 C# 实现生命游戏的代码:

using System;

namespace GameOfLife
{
    class Program
    {
        static void Main(string[] args)
        {
            int width = 10;
            int height = 10;

            bool[,] grid = new bool[width, height];

            // 初始化格子
            InitializeGrid(grid);

            // 打印初始格子
            PrintGrid(grid);

            // 进行游戏
            while (true)
            {
                Console.WriteLine('Press enter to continue or 'q' to quit.');
                string input = Console.ReadLine();

                if (input == 'q')
                {
                    break;
                }

                // 更新格子状态
                UpdateGrid(grid);

                // 打印更新后的格子
                PrintGrid(grid);
            }
        }

        // 初始化格子,随机生成活细胞
        static void InitializeGrid(bool[,] grid)
        {
            Random random = new Random();

            for (int i = 0; i < grid.GetLength(0); i++)
            {
                for (int j = 0; j < grid.GetLength(1); j++)
                {
                    grid[i, j] = random.Next(2) == 1;
                }
            }
        }

        // 更新格子状态
        static void UpdateGrid(bool[,] grid)
        {
            int width = grid.GetLength(0);
            int height = grid.GetLength(1);

            bool[,] newGrid = new bool[width, height];

            for (int i = 0; i < width; i++)
            {
                for (int j = 0; j < height; j++)
                {
                    int liveNeighbors = CountLiveNeighbors(grid, i, j);

                    // 根据规则更新细胞状态
                    if (grid[i, j])
                    {
                        if (liveNeighbors < 2 || liveNeighbors > 3)
                        {
                            newGrid[i, j] = false;
                        }
                        else
                        {
                            newGrid[i, j] = true;
                        }
                    }
                    else
                    {
                        if (liveNeighbors == 3)
                        {
                            newGrid[i, j] = true;
                        }
                        else
                        {
                            newGrid[i, j] = false;
                        }
                    }
                }
            }

            // 更新原格子
            for (int i = 0; i < width; i++)
            {
                for (int j = 0; j < height; j++)
                {
                    grid[i, j] = newGrid[i, j];
                }
            }
        }

        // 计算细胞周围活细胞数量
        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;
                    int neighborY = y + j;

                    if (neighborX >= 0 && neighborX < width && neighborY >= 0 && neighborY < height)
                    {
                        if (i != 0 || j != 0)
                        {
                            if (grid[neighborX, neighborY])
                            {
                                count++;
                            }
                        }
                    }
                }
            }

            return count;
        }

        // 打印格子
        static void PrintGrid(bool[,] grid)
        {
            int width = grid.GetLength(0);
            int height = grid.GetLength(1);

            for (int i = 0; i < width; i++)
            {
                for (int j = 0; j < height; j++)
                {
                    Console.Write(grid[i, j] ? '■' : '□');
                }
                Console.WriteLine();
            }
        }
    }
}

这个代码使用二维布尔数组来表示格子,true表示细胞存活,false表示细胞死亡。InitializeGrid函数用于随机生成初始格子状态,UpdateGrid函数根据生命游戏的规则更新格子状态,CountLiveNeighbors函数用于计算细胞周围的活细胞数量,PrintGrid函数用于打印格子。在Main函数中,首先初始化格子,然后进入游戏循环,每次按下回车键更新格子状态并打印,按下'q'键退出游戏循环。

C# 生命游戏代码实现 - 使用二维数组模拟生命演化

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

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