public class MinerExeption : System.Exception
public MinerExeption() : base() { }
public MinerExeption(string message) : base(message) { }
public MinerExeption(string message, System.Exception inner) : base(message, inner) { }
protected MinerExeption(System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context) : base(info, context) { }
static string GenerateMinesweeperMap(int width, int height, int bombsCount)
if (width<=1 || height <= 1 || bombsCount <=0 ) { throw new MinerExeption("wrong input"); }
Random rand = new Random();
string minesweeperMap = "";
int[,] field = new int[width, height];
for (int i = 0; i < width; i++)
for (int j = 0; j < height; j++)
field[i, j] = rand.Next(100);
while (bombsInstalled < bombsCount)
for (int i = 0; i < width; i++)
for (int j = 0; j < height; j++)
if (minElement > field[i, j] && field[i,j] >= 0 )
minElement = field[i, j];
for (int j = 0; j < width; j++)
for (int k = 0; k < height; k++)
if (field[j + 1, k + 1] == -1) bomb++;
if (field[j + 1, k] == -1) bomb++;
if (field[j, k + 1] == -1) bomb++;
else if (j == width-1 && k == height-1)
if (field[j - 1, k - 1] == -1) bomb++;
if (field[j - 1, k] == -1) bomb++;
if (field[j, k - 1] == -1) bomb++;
else if (j == 0 && k == height-1)
if (field[j + 1, k - 1] == -1) bomb++;
if (field[j + 1, k] == -1) bomb++;
if (field[j, k - 1] == -1) bomb++;
else if (j == width-1 && k == 0)
if (field[j - 1, k + 1] == -1) bomb++;
if (field[j - 1, k] == -1) bomb++;
if (field[j, k + 1] == -1) bomb++;
else if (j > 0 && j < width-1 && k == 0)
if (field[j + 1, k + 1] == -1) bomb++;
if (field[j - 1, k] == -1) bomb++;
if (field[j + 1, k] == -1) bomb++;
if (field[j, k + 1] == -1) bomb++;
if (field[j - 1, k + 1] == -1) bomb++;
else if (j > 0 && j < width-1 && k == height-1)
if (field[j + 1, k - 1] == -1) bomb++;
if (field[j - 1, k] == -1) bomb++;
if (field[j + 1, k] == -1) bomb++;
if (field[j, k - 1] == -1) bomb++;
if (field[j - 1, k - 1] == -1) bomb++;
else if (k > 0 && k < height-1 && j == width-1)
if (field[j - 1, k - 1] == -1) bomb++;
if (field[j - 1, k] == -1) bomb++;
if (field[j - 1, k + 1] == -1) bomb++;
if (field[j, k - 1] == -1) bomb++;
if (field[j, k + 1] == -1) bomb++;
else if (k > 0 && k < height-1 && j == 0)
if (field[j + 1, k - 1] == -1) bomb++;
if (field[j + 1, k] == -1) bomb++;
if (field[j + 1, k + 1] == -1) bomb++;
if (field[j, k - 1] == -1) bomb++;
if (field[j, k + 1] == -1) bomb++;
if (field[j - 1, k - 1] == -1) bomb++;
if (field[j - 1, k] == -1) bomb++;
if (field[j, k - 1] == -1) bomb++;
if (field[j + 1, k + 1] == -1) bomb++;
if (field[j, k + 1] == -1) bomb++;
if (field[j + 1, k] == -1) bomb++;
if (field[j - 1, k + 1] == -1) bomb++;
if (field[j + 1, k - 1] == -1) bomb++;
for (int j = 0; j < width; j++)
for (int k = 0; k < height; k++)
minesweeperMap = (minesweeperMap + "*" + " ");
else if (field[j, k] == 0)
minesweeperMap = (minesweeperMap + " " + " ");
else { minesweeperMap = (minesweeperMap + field[j, k].ToString() + ' '); }
minesweeperMap = (minesweeperMap + "\n");
public static void Main(string[] args)
Console.Write("Введите ширину: ");
Console.Write("Введите высоту: ");
Console.Write("Введите кол-во бомб ");
int bombsCount = InputInt();
string map = GenerateMinesweeperMap(width, height, bombsCount);
catch (IndexOutOfRangeException ex)
if (Int32.TryParse(Console.ReadLine(), out i))
Console.Write("Ошибка ввода! Введите еще раз: ");