C#仿Windows XP自帶的掃雷游戲
本文實(shí)例為大家分享了C#仿Windows XP自帶的掃雷游戲的具體代碼,供大家參考,具體內(nèi)容如下
1 題目描述:模仿Windows XP自帶的掃雷游戲
定義一個(gè)30×30的二維數(shù)組,模仿Windows XP自帶的掃雷游戲?qū)@個(gè)二維數(shù)組進(jìn)行隨機(jī)布雷,要求至少布雷30個(gè)。游戲規(guī)則是:某個(gè)元素的值是一周(相鄰8個(gè)位置)存在的地雷的個(gè)數(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 ++ ) { // 判斷八個(gè)方位是否有雷,將雷相加 // 判斷上 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 實(shí)現(xiàn)效果
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#編程中使用設(shè)計(jì)模式中的原型模式的實(shí)例講解
這篇文章主要介紹了C#編程中使用設(shè)計(jì)模式中的原型模式的實(shí)例講解,原型模式創(chuàng)建新對(duì)象方便快捷,而且可在運(yùn)行時(shí)根據(jù)需要通過(guò)克隆來(lái)添加和去除他們,也可在程序運(yùn)行是根據(jù)情況來(lái)修改類內(nèi)部的數(shù)據(jù),需要的朋友可以參考下2016-02-02C#使用NPOI對(duì)word進(jìn)行讀寫(xiě)
這篇文章介紹了C#使用NPOI對(duì)word進(jìn)行讀寫(xiě)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06C# Ado.net實(shí)現(xiàn)讀取SQLServer數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程列表及參數(shù)信息示例
這篇文章主要介紹了C# Ado.net實(shí)現(xiàn)讀取SQLServer數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程列表及參數(shù)信息,結(jié)合實(shí)例形式總結(jié)分析了C#針對(duì)SQLServer數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程及參數(shù)信息的各種常見(jiàn)操作技巧,需要的朋友可以參考下2019-02-02C#開(kāi)發(fā)紐曼USB來(lái)電小秘書(shū)客戶端總結(jié)
這篇文章主要介紹了C#開(kāi)發(fā)紐曼USB來(lái)電小秘書(shū)客戶端總結(jié),對(duì)于C#項(xiàng)目開(kāi)發(fā)來(lái)說(shuō)有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-08-08C#中BitmapImage與BitmapSource接口的區(qū)別對(duì)比小結(jié)
BitmapImage和BitmapSource都可以用于表示和顯示圖像,本文就來(lái)介紹一下C#中BitmapImage與BitmapSource接口的區(qū)別對(duì)比,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03C# 無(wú)邊框窗體邊框陰影效果的簡(jiǎn)單實(shí)現(xiàn)
這篇文章介紹了C# 無(wú)邊框窗體邊框陰影效果的簡(jiǎn)單實(shí)現(xiàn),有需要的朋友可以參考一下2013-10-10