C#控制台实现扫雷程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C#在控制台实现扫雷程序

最终运行结果如图所示

使用说明

玩法同系统自带扫雷游戏规则

按Enter键”踩有无雷”

按M键标记有雷区域

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace test

{

class Program

{

static void Main(string[] args)

{

int n = int.Parse(Console.ReadLine());//用户输入扫雷二维数组大小

int[,] mine=new int[n,n];//定义一个扫雷二维数组

int[,] record = new int[n, n];//定义一个记录用户当前判定情况的二维数组

int[,] amount = new int[n, n];//记录以当前方块为中心的周围八个方块中雷的数量

int mc = 0;

for (int i = 0; i < n; i++)

{

for (int j = 0; j < n; j++)

{

record[i, j] = -2;

}

}

Random r = new Random();//随机布雷

for (int i1 = 0; i1 < n; i1++)

{

for (int j1 = 0; j1 < n; j1++)

{

mine[i1, j1] = r.Next(0, 4)/3;//从0到2中产生随机数0,1其中0代表无雷,而1代表有雷

}

}

//遍历出雷的数量

for(int i2=0;i2

{

for (int j2 = 0; j2 < n; j2++)

{

if (mine[i2, j2] == 1)

mc++;

}

}

//记录以当前方块为中心的周围八个方块中雷的数量的产生方法

int mine_count = 0;//雷的数量

for (int i = 0; i < n; i++)

{

for (int j = 0; j < n; j++)

{

if (mine[i, j] != 1)

{

if (i - 1 < 0 || j - 1 < 0 || i + 1 > n - 1 || j + 1 > n - 1)

{

if (i - 1 < 0 && j - 1 < 0)//左上角

{

if (mine[i + 1, j] == 1)

mine_count++;

if (mine[i, j + 1] == 1)

mine_count++;

if (mine[i + 1, j + 1] == 1)

mine_count++;

amount[i, j] = mine_count;

mine_count = 0;

}

if (j - 1 >= 0 && j + 1 <= n - 1 && i - 1 < 0)//上边{

if (mine[i, j - 1] == 1)

mine_count++;

if (mine[i + 1, j - 1] == 1)

mine_count++;

if (mine[i + 1, j] == 1)

mine_count++;

if (mine[i + 1, j + 1] == 1)

mine_count++;

if (mine[i, j + 1] == 1)

mine_count++;

amount[i, j] = mine_count;

mine_count = 0;

}

if (i - 1 < 0 && j + 1 > n - 1)//右上角

{

if (mine[i, j - 1] == 1)

mine_count++;

if (mine[i + 1, j - 1] == 1)

mine_count++;

if (mine[i + 1, j] == 1)

mine_count++;

amount[i, j] = mine_count;

mine_count = 0;

}

if (j + 1 > n - 1 && i - 1 >= 0 && i + 1 <= n - 1)//右边{

if (mine[i - 1, j] == 1)

mine_count++;

if (mine[i - 1, j - 1] == 1)

mine_count++;

if (mine[i, j - 1] == 1)

mine_count++;

if (mine[i + 1, j - 1] == 1)

mine_count++;

if (mine[i + 1, j] == 1)

mine_count++;

amount[i, j] = mine_count;

mine_count = 0;

}

if (i + 1 > n - 1 && j + 1 > n - 1)//右下角

{

if (mine[i - 1, j - 1] == 1)

相关文档
最新文档