C#仿Windows XP自帶的掃雷游戲
更新時間:2021年04月30日 11:08:50 作者:敲代碼兩年半的練習生
這篇文章主要為大家詳細介紹了C#仿Windows XP自帶的掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了C#仿Windows XP自帶的掃雷游戲的具體代碼,供大家參考,具體內(nèi)容如下
1 題目描述:模仿Windows XP自帶的掃雷游戲
定義一個30×30的二維數(shù)組,模仿Windows XP自帶的掃雷游戲?qū)@個二維數(shù)組進行隨機布雷,要求至少布雷30個。游戲規(guī)則是:某個元素的值是一周(相鄰8個位置)存在的地雷的個數(shù)。
2 源碼詳解
using System; using System.Collections; namespace Csharp5_3 { class Program { static void Main(string[] args) { ArrayList arrayList = new(); ArrayList arrayList_map = new(); Random rd = new(); for (int i = 0; i < 900; i++) { if (rd.Next() % 20 == 0) { arrayList.Add(1); } else { arrayList.Add(0); } arrayList_map.Add(0); } for (int i = 0; i < 30; i++) { for (int j = 0; j < 30; ++j) { Console.Write(arrayList[i * 30 + j]); Console.Write(" "); } Console.WriteLine(); } Console.WriteLine(); for ( int i = 0; i < 30; i ++ ) { for ( int j = 0; j < 30; j ++ ) { // 判斷八個方位是否有雷,將雷相加 // 判斷上 if (((i - 1) * 30 + j) >= 0 && ((i - 1) * 30 + j) < 900 && j != 0) // 邊界值判斷 { if (Convert.ToInt32(arrayList[i * 30 + j - 30]) == 1) { arrayList_map[i * 30 + j] = Convert.ToInt32(arrayList[i * 30 + j]) + 1; } } // 判斷下 if (((i + 1) * 30 + j) >= 0 && ((i + 1) * 30 + j) < 900 && j != 29) // 邊界值判斷 { if (Convert.ToInt32(arrayList[i * 30 + j + 30]) == 1) { arrayList_map[i * 30 + j] = Convert.ToInt32(arrayList[i * 30 + j]) + 1; } } // 判斷左 if ((i * 30 + j - 1) >= 0 && (i * 30 + j -1) < 900 && j != 0) // 邊界值判斷 { if (Convert.ToInt32(arrayList[i * 30 + j -1]) == 1) { arrayList_map[i * 30 + j] = Convert.ToInt32(arrayList[i * 30 + j]) + 1; } } // 判斷右 if ((i * 30 + j + 1) >= 0 && (i * 30 + j + 1) < 900 && j != 29) // 邊界值判斷 { if (Convert.ToInt32(arrayList[i * 30 + j + 1]) == 1) { arrayList_map[i * 30 + j] = Convert.ToInt32(arrayList[i * 30 + j]) + 1; } } // 判斷左上 if (((i - 1) * 30 + j -1 ) >= 0 && ((i - 1) * 30 + j - 1) < 900 && j != 0) // 邊界值判斷 { if (Convert.ToInt32(arrayList[(i - 1) * 30 + j - 1]) == 1) { arrayList_map[i * 30 + j] = Convert.ToInt32(arrayList[i * 30 + j]) + 1; } } // 判斷左下 if (((i + 1) * 30 + j - 1) >= 0 && ((i + 1) * 30 + j - 1) < 900 && j != 29) // 邊界值判斷 { if (Convert.ToInt32(arrayList[(i + 1) * 30 + j - 1]) == 1) { arrayList_map[i * 30 + j] = Convert.ToInt32(arrayList[i * 30 + j]) + 1; } } // 判斷右上 if (((i - 1) * 30 + j + 1) >= 0 && ((i - 1) * 30 + j + 1) < 900 && j != 0) // 邊界值判斷 { if (Convert.ToInt32(arrayList[(i - 1) * 30 + j + 1]) == 1) { arrayList_map[i * 30 + j] = Convert.ToInt32(arrayList[i * 30 + j]) + 1; } } // 判斷右下 if (((i + 1) * 30 + j + 1) >= 0 && ((i + 1) * 30 + j + 1) < 900 && j != 29) // 邊界值判斷 { if (Convert.ToInt32(arrayList[(i + 1) * 30 + j + 1]) == 1) { arrayList_map[i * 30 + j] = Convert.ToInt32(arrayList[i * 30 + j]) + 1; } } } } for (int i = 0; i < 30; i++) { for (int j = 0; j < 30; ++j) { Console.Write(arrayList_map[i * 30 + j]); Console.Write(" "); } Console.WriteLine(); } Console.Read(); } } }
3 實現(xiàn)效果
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C# Ado.net實現(xiàn)讀取SQLServer數(shù)據(jù)庫存儲過程列表及參數(shù)信息示例
這篇文章主要介紹了C# Ado.net實現(xiàn)讀取SQLServer數(shù)據(jù)庫存儲過程列表及參數(shù)信息,結(jié)合實例形式總結(jié)分析了C#針對SQLServer數(shù)據(jù)庫存儲過程及參數(shù)信息的各種常見操作技巧,需要的朋友可以參考下2019-02-02C#中BitmapImage與BitmapSource接口的區(qū)別對比小結(jié)
BitmapImage和BitmapSource都可以用于表示和顯示圖像,本文就來介紹一下C#中BitmapImage與BitmapSource接口的區(qū)別對比,具有一定的參考價值,感興趣的可以了解一下2024-03-03