所以我正在做一些小事情,我有點失落。這是我迄今爲止所擁有的。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