C#控制台实现扫雷程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)