c# - 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 - 这些是有地雷的地方,我用星号代替了它们,但它们不接受用户输入的地雷数量。并且必须有与地雷一样多的“*”字符。
在第二个数组中应该有一个已经开放的游戏解决方案。也就是说,旁边有地雷的单元格应该取一个数字,表示该单元格旁边的地雷数量。
请帮我..
解决方案
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--;
}
}
推荐阅读
- python - 如何回复收件箱中的最后一封电子邮件(IMAP4)?
- nuxt.js - Nuxt.js:如何在 nuxt.config.js 文件中包含异步脚本?
- c# - CryptographicException:使用 SHA-512 时“指定的算法无效”
- php - 如何在本地范围内获取父模型数据?
- python - 倒序连续数字
- c++ - 多个可变参数模板功能
- ios - 如何渲染 CALayerGradient 圆锥?
- javascript - 如何使用制表符通过 ajax 提供工具提示文本?
- docker - Gcloud docker 登录失败并显示“退出状态 1”
- winforms - 使用 PowerShell 在表单中居中图像