// /***************************************************
// 项目: ...............................
// 功能: ...............................
//
// 版本: 主.次.月日.时分 修改内容 修改者姓名
// ............ ....... ....
//
// 创建:
// 肖马克蛮牛 QQ:1414845674
//
// Copyright (c) 2017 11:24
//
// 描述:
// ***************************************************/
//
using System;
namespace StudentQuestion
{
class MainClass
{
static int[,] MAP;
static int ROW, COL, NUM;
public static void Main (string[] args)
{
// 扫雷
// 输入数据,校验部分忽略
Console.WriteLine ("请输入长度, 按回车结束(长度范围10-25)");
ROW = Convert.ToInt32 (Console.ReadLine ());
Console.WriteLine ("请输入宽度, 按回车结束(长度范围10-25)");
COL = Convert.ToInt32 (Console.ReadLine ());
Console.WriteLine ("请输入雷数, 按回车结束(雷数范围10-50)");
NUM = Convert.ToInt32 (Console.ReadLine ());
// 生成地图, -1表示雷, 0-8表示附件的雷的个数
MAP = new int[ROW,COL];
// 随机生成雷
Random random = new Random ();
for(int i = 0; i < NUM; i++)
{
while(true)
{
int x = random.Next (0, ROW);
int y = random.Next (0, ROW);
if(MAP[x, y] != -1)
{
MAP [x, y] = -1;
// 遍历八个方向
UpdateMap (x, y);
break;
}
}
}
// 输出地图
for(int i = 0; i < ROW; i++)
{
for(int j = 0; j < COL; j++)
{
Console.Write (MAP[i, j].ToString().PadLeft(3));
}
Console.WriteLine ();
}
}
public static void UpdateMap(int x, int y)
{
// 八个方向
for(int i = -1; i <= 1; i++)
{
for(int j = -1; j <= 1; j++)
{
if (i == 0 && j == 0)
continue;
int index_x = x + i;
int index_y = y + j;
if (index_x < 0 || index_y < 0 || index_x >= ROW || index_y >= ROW)
continue;
if (MAP [index_x, index_y] == -1)
continue;
// 雷数+1
MAP [index_x, index_y]++;
}
}
}
}
}