所以我正在做一些小事情,我有点失落。这是我迄今为止所拥有的。c中的扫雷(简单)#
static void izris()
{
Random bombe = new Random();
int[,] polje = new int[7, 7];
string stolpci = " ABCDEFG";
int vrstice=1;
foreach (char c in stolpci)
{
Console.Write(c);
Console.Write(" ");
}
Console.WriteLine();
for (int i = 0; i < 7; i++)
{
for (int j = 0; j < 7; j++)
{
polje[i, j] = bombe.Next(0, 2);
}
}
//izris polja
for(int i=0;i<7;i++)
{
Console.Write(vrstice);
vrstice++;
Console.Write(" ");
for (int j = 0; j < 7; j++)
{
Console.Write(polje[i,j]);
Console.Write(" ");
}
Console.WriteLine();
}
}
所以它的作用是什么,它打印包含从0到1。现在1意味着它是一个煤矿的随机数的7x7的领域,0意味着它是不是我的。现在,如果你看,有标记列(ABCDEFG)的字符和1-7标记行的数字。现在我想要做的是,例如用户输入一个字符串,字符串将是B4。然后该程序会检查并查看用户选择的字段是矿(0)还是炸弹(1)。如果是炸弹,它也会说有多少炸弹(1)在附近。我不知道如何做到这一点。 我正在考虑将A-F字符转换为0,6数字,这样我可以更容易地编制索引,但我不知道。
所以我做了这个检查输入是否正确。
static void vnospolja()
{
string lokacija;
string nekaj = "A";
int nekaj2 = nekaj[0] - 'A';
lokacija = Convert.ToString(Console.ReadLine());
while (lokacija.Length < 2)
{
string pravilnalokacija=lokacija.Substring(0,1);
int pravilnalokacijaint = pravilnalokacija[0];
if(pravilnalokacijaint>65 && pravilnalokacijaint<72)
{
Console.Write("input ok");
}
string drugiznak = lokacija.Substring(1, 1);
int drugiznakint = drugiznak[0];
if(drugiznakint>0 && drugiznakint<8)
{
Console.Write("input ok");
}
}
}
现在我需要一些关于如何做到这一点的想法,例如用户输入A4,所以输入是正确的。那么我如何实际移动我的7,7场并检查A4?我不明白这一点,我的朋友在我的多维领域告诉了我一些关于第二个索引器的东西,但我不知道。
好了,你写的代码来创建雷区,地雷填充它,并在屏幕上打印结果。接下来你要做的就是读入用户输入('Console.ReadLine')。您可能需要一个函数来查找所选单元格的邻居,并且您需要记住哪些单元格已被发现。我们不会为你编写这些代码,但是给它一个镜头,如果遇到任何*特定的问题,那么回到这里告诉我们出了什么问题。 –
您的索引想法将起作用,绝对将一封信映射到索引。这将使您的查找更容易。至于在炸弹附近搜索,你将需要扫描阵列的相邻单元格。最佳方法是从选定的单元格开始,并开始在各个方向上扫描。您可以使用OOP通过创建节点来解决此问题(图形式解决方案)。如果每个节点知道它的相邻节点,那么递归地找到所有相邻的炸弹是很容易的。 – Tom