亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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#編程中使用設(shè)計模式中的原型模式的實例講解

    C#編程中使用設(shè)計模式中的原型模式的實例講解

    這篇文章主要介紹了C#編程中使用設(shè)計模式中的原型模式的實例講解,原型模式創(chuàng)建新對象方便快捷,而且可在運行時根據(jù)需要通過克隆來添加和去除他們,也可在程序運行是根據(jù)情況來修改類內(nèi)部的數(shù)據(jù),需要的朋友可以參考下
    2016-02-02
  • C#使用NPOI對word進行讀寫

    C#使用NPOI對word進行讀寫

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

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

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

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

    這篇文章介紹了C#中的多播委托和泛型委托,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C# Ado.net實現(xiàn)讀取SQLServer數(shù)據(jù)庫存儲過程列表及參數(shù)信息示例

    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-02
  • c#預處理指令分析

    c#預處理指令分析

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

    C#開發(fā)紐曼USB來電小秘書客戶端總結(jié)

    這篇文章主要介紹了C#開發(fā)紐曼USB來電小秘書客戶端總結(jié),對于C#項目開發(fā)來說有一定的參考借鑒價值,需要的朋友可以參考下
    2014-08-08
  • C#中BitmapImage與BitmapSource接口的區(qū)別對比小結(jié)

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

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

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

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

    C# 無邊框窗體邊框陰影效果的簡單實現(xiàn)

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

最新評論