欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#仿Windows XP自帶的掃雷游戲

 更新時(shí)間:2021年04月30日 11:08:50   作者:敲代碼兩年半的練習(xí)生  
這篇文章主要為大家詳細(xì)介紹了C#仿Windows XP自帶的掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(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í)例講解

    這篇文章主要介紹了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-02
  • C#使用NPOI對(duì)word進(jìn)行讀寫(xiě)

    C#使用NPOI對(duì)word進(jìn)行讀寫(xiě)

    這篇文章介紹了C#使用NPOI對(duì)word進(jìn)行讀寫(xiě)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 詳解C#如何實(shí)現(xiàn)窗體換膚

    詳解C#如何實(shí)現(xiàn)窗體換膚

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)窗體換膚,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C#中的多播委托和泛型委托

    C#中的多播委托和泛型委托

    這篇文章介紹了C#中的多播委托和泛型委托,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • C# 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ù)信息示例

    這篇文章主要介紹了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-02
  • c#預(yù)處理指令分析

    c#預(yù)處理指令分析

    這篇文章主要介紹了c#預(yù)處理指令的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2020-08-08
  • C#開(kāi)發(fā)紐曼USB來(lái)電小秘書(shū)客戶端總結(jié)

    C#開(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-08
  • C#中BitmapImage與BitmapSource接口的區(qū)別對(duì)比小結(jié)

    C#中BitmapImage與BitmapSource接口的區(qū)別對(duì)比小結(jié)

    BitmapImage和BitmapSource都可以用于表示和顯示圖像,本文就來(lái)介紹一下C#中BitmapImage與BitmapSource接口的區(qū)別對(duì)比,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • C# this關(guān)鍵字的四種用法

    C# this關(guān)鍵字的四種用法

    這篇文章主要為大家詳細(xì)介紹了C# this關(guān)鍵字的四種用法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • C# 無(wú)邊框窗體邊框陰影效果的簡(jiǎn)單實(shí)現(xiàn)

    C# 無(wú)邊框窗體邊框陰影效果的簡(jiǎn)單實(shí)現(xiàn)

    這篇文章介紹了C# 無(wú)邊框窗體邊框陰影效果的簡(jiǎn)單實(shí)現(xiàn),有需要的朋友可以參考一下
    2013-10-10

最新評(píng)論