C#仿Windows XP自带的扫雷游戏

本文实例为大家分享了C#仿Windows XP自带的扫雷游戏的具体代码,供大家参考,具体内容如下

1 题目描述:模仿Windows XP自带的扫雷游戏

定义一个30×30的二维数组,模仿Windows XP自带的扫雷游戏对这个二维数组进行随机布雷,要求至少布雷30个。游戏规则是:某个元素的值是一周(相邻8个位置)存在的地雷的个数。

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 实现效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解从零开始---用C#制作扫雷游戏

    学C#的原因其实挺简单的,因为一直对游戏挺感兴趣,查了下比较流行的游戏引擎Unity的主要开发语言是C#,所以就决定从C#入手,学学面向对象的编程方法. 以前基本都做的是嵌入式开发,做嵌入式久了,基本上只用C语言,C语言面向过程的特性在嵌入式编程这种资源极度受限的情况确实十分有利,但这种方式在面对大型软件的开发的时候就很难胜任了.编程的模式其实是一种思维习惯,习惯久了以后,想改变确实是一个艰难的过程··· 说起C#,其实在大学的时候学过一个学期,说来惭愧那时候倒也没把它当一门面向对象的语言(其实

  • c# 实现自动扫雷

    年前无意看到一个用Python写的小桌面程序,可以自动玩扫雷的游戏,觉得挺有意思,决定用C#也做一个.[真实情况是:我知道Python最近比较火,非常适合搞爬虫.大数据.机器学习之类的,但现在连桌面程序都用Python做了吗?还给不给.NET程序员活路了?简直不能忍!] 春节期间正好有闲就搞了一下,先下载了一个第三方的扫雷游戏,实现功能以后觉得下载的这个扫雷游戏分辨率太低了,也不好看,所以又自己做了一个扫雷游戏,凑成一套. 源码下载地址:https://github.com/seabluescn

  • C#带你玩扫雷(附源码)

    扫雷游戏,大家都应该玩过吧!其实规则也很简单,可是我们想自己实现一个扫雷,我们应该怎么做呢? Step1: 知晓游戏原理 扫雷就是要把所有非地雷的格子揭开即胜利:踩到地雷格子就算失败.游戏主区域由很多个方格组成.使用鼠标左键随机点击一个方格,方格即被打开并显示出方格中的数字:方格中数字则表示其周围的8个方格隐藏了几颗雷:如果点开的格子为空白格,即其周围有0颗雷,则其周围格子自动打开:如果其周围还有空白格,则会引发连锁反应:在你认为有雷的格子上,点击右键即可标记雷:如果一个已打开格子周围所有的雷已

  • 利用C#编写扫雷游戏(附源码)

    前言 翻看了下以前大学学习的一些小项目,突然发现有个项目比较有意思,觉得有必要把它分享出来.当然现在看来,里面有很多的不足之处,但因博主现在已经工作,没有时间再去优化.这个项目就是利用C#编写一个Windows系统下的扫雷小游戏. 首先讲下扫雷小游戏的玩法: (1)扫雷就是要把所有非地雷的格子揭开即胜利:踩到地雷格子就算失败. (2)当点开的格子不是地雷区域的时候,该格子会显示一个数字,该数字表示的含义就是该格子周边有多少个地雷. (3)同时点开的如果非地雷的格子,周边连贯的非地雷区域都会自动被

  • C#仿Windows XP自带的扫雷游戏

    本文实例为大家分享了C#仿Windows XP自带的扫雷游戏的具体代码,供大家参考,具体内容如下 1 题目描述:模仿Windows XP自带的扫雷游戏 定义一个30×30的二维数组,模仿Windows XP自带的扫雷游戏对这个二维数组进行随机布雷,要求至少布雷30个.游戏规则是:某个元素的值是一周(相邻8个位置)存在的地雷的个数. 2 源码详解 using System; using System.Collections; namespace Csharp5_3 { class Program

  • 封杀Windows XP自带的小游戏的具体办法

    上机操作时学生玩游戏是很多信息技术课老师面临的一个难题,尤其是Windows自带的几个经典游戏经久耐玩,让学生乐此不疲.本学期我校新建了一个机房,预装了Windows XP操作系统,笔者删除了其中所有自带游戏.但一些高年级学生上机后,通过"控制面板"中的"添加/删除Windows组件"把"游戏"又装了上去.那么有没有办法彻底封杀Windows XP自带游戏呢? 与Windows 98不同,Windows XP在"添加/删除Windows

  • Windows XP SP2安装设置全攻略

    Windows XP Service Pack 2补丁包已经正式发布,不少朋友可能对WINDOWS XP的最新系统补丁Service Pack 2(以下简称SP2)有些不熟悉,我就说说自己的安装过程和使用经历.从XP SP2开始研发,MS就出了无数个内测版本,网上放出的都是MS内测版本.从最初的一个内测中文版开始,到后来出的RC1 RC2 RTM2179 RTM2180,我一路升级全部安装使用过,应该说有一点心得,下面就写出来与大家分享幌隆? 一:Windows XP Service Pack

  • Windows XP终极设置之系统优化篇

    一.系统优化设置. 1.删除Windows强加的附件: 1) 用记事本NOTEPAD修改winntinfsysoc.inf,用檎?替换功能,在查找框中输入,hide(一个英文逗号紧跟hide),将"替换为"框设为空.并选全部替换,这样,就把所有的,hide都去掉了, 2) 存盘退出, 3)再运行"添加-删除程序",就会看见"添加/删除 Windows 组件"中多出了好几个选项:这样你可以删除好些没有用的附件. 2.关掉调试器Dr. Watson:

  • WINDOWS XP终极设置(呕心沥血版)第1/2页

    WINDOWS XP终极设置WINDOWS XP终极设置(呕心沥血版) 声明:以上资料均是从从互联网上搜集整理而来,本人未曾一一测试,所以在改动时要小心,做好备份,有备无患么,呵呵. 一.系统优化设置. 1.删除Windows强加的附件:  1) 用记事本NOTEPAD修改\winnt\inf\sysoc.inf,用查找/替换功能,在查找框中输入,hide(一个英文逗号紧跟hide),将"替换为"框设为空.并选全部替换,这样,就把所有的,hide都去掉了, 2) 存盘退出, 3)再运行

  • java swing实现的扫雷游戏及改进版完整示例

    本文实例讲述了java swing实现的扫雷游戏及改进版.分享给大家供大家参考,具体如下: 版本1: package awtDemo; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JButton; import jav

  • java实现简单扫雷游戏

    本文实例为大家分享了java实现简单扫雷游戏的具体代码,供大家参考,具体内容如下 package com.test.swing; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JButton; import javax.

  • windows xp下没有dos的choice命令的解决方法

    dos6.0下能实现的choice选项,但是因为choice是外部命令,在xp中没有choice.exe所以不能实现选择菜单.解决办法:用SET命令代替 set 命令详解   在批处理中回显信息有两个命令,echo和set /p=<nul,它们的共同点在于都是对程序执行信 息的屏幕输出,区别在于echo是换行输出,而set /p=<nul是不换行追回输出,这样说大家可能 不是很理解,下面给出两个代码来进行比较: 代码: @echo off echo bathome echo batman pa

  • Windows XP“远程桌面”的应用

    使用"远程协助"进行远程控制实现起来非常简单,但它必须由主控双方协同才能够进行,所以Windows XP专业版中又提供了另一种远程控制方式--"远程桌面",利用"远程桌面",你可以在远离办公室的地方通过网络对计算机进行远程控制,即使主机处在无人状况,"远程桌面"仍然可以顺利进行,远程的用户可以通过这种方式使用计算机中的数据.应用程序和网络资源,它也可以让你的同事访问到你的计算机的桌面,以便于进行协同工作. (1)配置远程桌面主

  • windows XP 的命令大全

    打开C:\Documents and Settings\XXX(当前登录Windows XP的用户名).. 打开Windows XP所在的盘符下的Documents and Settings文件夹... 打开"我的电脑"选项. accwiz.exe 辅助工具向导 actmovie.exe 直接显示安装工具append.exe 允许程序打开制定目录中的数据arp.exe 显示和更改计算机的IP与硬件物理地址的对应列表at.exe 计划运行任务 atmadm.exe ATM调用管理器统计

随机推荐