首页 > 解决方案 > C# - 如何在数组中放置给定数量的随机地雷

问题描述

我是 C# 的新手。我的任务是制作一种扫雷器,但它会立即打开一个解决方案。


static void Main(string[] args)
        {
            Console.Write("Enter the width of the field: ");
            int q = Convert.ToInt32(Console.ReadLine());

            Console.Write("Enter the length of the field: ");
            int w = Convert.ToInt32(Console.ReadLine());

            Console.Write("Enter the number of bombs: ");
            int c = Convert.ToInt32(Console.ReadLine());


            Random rand = new Random();

            var charArray = new char[q, w];
            var intArray = new int[q, w];
            for (int i = 0; i < q; i++)
            {
                for (int j = 0; j < w; j++)
                {
                    intArray[i, j] = rand.Next(2);
                    charArray[i, j] = intArray[i, j] == 0 ? '_' : '*';
                    Console.Write(charArray[i, j]);
                }
                Console.WriteLine();
            }

        }

    }
}

应该输出两个数组。一切都应该在第一个上关闭,也就是说,应该只有字符:_和*

0 - 这些是没有地雷的地方,我用符号_代替了它们

1 - 这些是有地雷的地方,我用星号代替了它们,但它们不接受用户输入的地雷数量。并且必须有与地雷一样多的“*”字符。

在第二个数组中应该有一个已经开放的游戏解决方案。也就是说,旁边有地雷的单元格应该取一个数字,表示该单元格旁边的地雷数量。

请帮我..

编译当前代码

标签: c#

解决方案


        
        Random random = new Random();
        while(c > 0)
        {
            var rq = random.Next(q);
            var rw = random.Next(w);
            if(intArray[rq,rw] == 0)
            {
                intArray[rq, rw] = 1;
                c--;
            }
        }


推荐阅读