C#仿Windows XP自带的扫雷游戏
作者:敲代码两年半的练习生 发布时间:2023-07-30 07:40:48
标签:C#,扫雷游戏
本文实例为大家分享了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 实现效果
来源:https://blog.csdn.net/Gyangxixi/article/details/115347458


猜你喜欢
- BASE64 编码是一种常用的字符编码,在很多地方都会用到。但base64不是安全领域下的加密解密算法。能起到安全作用的效果很差,而且很容易
- 一、Stream流引入Lambda表达式,基于Lambda所带来的函数式编程,又引入了一个全新的Stream概念,用于解决集合类库既有的鼻端
- 重新指定分配默认值的参数时,可以显式地为指定参数名称赋值,隐式指定的时候,是根据方法参数的顺序,靠c#编译器的推断。 代码示例: void
- 前面我们讲到了Spring在进行事务逻辑织入的时候,无论是事务开始,提交或者回滚,都会触发相应的事务事件。本文首先会使用实例进行讲解Spri
- 在 Java 语言中,运算符有算数运算符、关系运算符、逻辑运算符、赋值运算符、字符串连接运算符、条件运算符。算数运算符算数运算符是我们最常用
- 我发现网上许多讲解javaweb 项目 SSM(Spring,SpringMVC,Mybatis)配置的时候有些重点没有提到,一下我会贴上一
- 主要思想:将一个view设计成多层:背景层,含中奖信息等;遮盖层,用于刮奖,使用关联一个Bitmap的Canvas在该Bitmap上,使用它
- 由于工作的需要,最近要对Android客户端软件进行测试,便学习了一下Android客户端测试的方法,现在与大家分享一下。1.在Androi
- AndroidStudio升级后, 新建类变成了下面这个样子, 并且默认还没有修饰符, 一堆大写的英文看的我一脸懵逼, 后来在stackov
- 大多数android程序员应该都知道genymotion是一个不错的模拟器,体积小巧,启动速度快。相关的博客也比较多,但是一直以来无法解决a
- Android系统支持的颜色是由4个值组成的,前3个为RGB,也就是我们常说的三原色(红、绿、蓝),最后一个值是A,也就是Alpha。这4个
- 标识接口是没有任何方法和属性的接口。标识接口不对实现它的类有任何语义上的要求,它仅仅表明实现它的类属于一个特定的类型。标接口在Java语言中
- GC,Garbage Collect,中文意思就是垃圾回收,指的是系统中的内存的分配和回收管理。其对系统性能的影响是不可小觑的。今天就来说一
- Android开发之设置开机自动启动的几种方法方法一:<!-- 开机启动 --> <receiver android:na
- ArrayList与Array的区别概述 ArrayList 是数
- 场景描述在项目开发的过程中,需要修改调试的时候偶每次都需要重启项目浪费时间,下面是我整理的两种常用的两种方式方式一修改启动配置方式(主要针对
- 去年买了本数字图像处理算法,一直都没有看,前几个星期都一直忙着工作上的活,趁这阶段悠闲点,玩一玩图片处理,这玩意还是非常有意思的。以前我们在
- 本文是引用开源图表库框架 MPAndroidChart的LineChart地址:https://github.com/PhilJay/MPA
- java文件的多线程断点续传大致原理,供大家参考,具体内容如下谈到文件断点续传那么就离不开java.io.RandomAcessFile H
- 这个东西我已经用了有段时间了,从开始写文章就在用这个,主要原因还是因为我比较懒。懒得去寻找图片,同时又怕万一惹来版权争议。。。跟我所有的文章