Моя игра-шахта не может генерировать мины на границах сетки 10х10.C#

Место общения программистов C#
Ответить
Anonymous
 Моя игра-шахта не может генерировать мины на границах сетки 10х10.

Сообщение Anonymous »

Я делаю игру с минами для домашнего задания по информатике, в которой игрок начинает с нижнего левого угла и должен добраться до верхнего правого угла сетки 10x10 со случайно сгенерированными минами, однако на границах моей сетки мины не печатаются. Я использовал 2D-массив, чтобы отслеживать, какие квадраты являются пустыми, миной или игроком.
Код:
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.Linq;
using System.Media;
using System.Text;
using System.Threading.Tasks;

namespace MinegameHW
{
internal class Program
{
// Procedure that prints the board
static void printBoard(string[,] board)
{
string undiscovered = "\x1b[100m \x1b[0m";
string player = "\x1b[42m \x1b[0m";
string discovered = "\x1b[43m \x1b[0m";
string minetemp = "\x1b[44m \x1b[0m";
Console.WriteLine(" 0 1 2 3 4 5 6 7 8 9");
for (int i = 0; i < 10; i++)
{
Console.Write($" {i} ");
for (int j = 0; j < 10; j++)
{
if (board[i, j] == "empty")
{
Console.Write(undiscovered + " ");
}
else if (board[i, j] == "mine")
{
Console.Write(minetemp + " ");
}
else if (board[i, j] == "player")
{
Console.Write(player + " ");
}
else if (board[i, j] == "discovered")
{
Console.Write(discovered + " ");
}
}
Console.WriteLine();
Console.WriteLine();
}
}
static void Main(string[] args)
{
// Defining the array and filling out the board initially with empty spaces
string[,] board = new string[10, 10];
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
board[i, j] = "empty";
}
}
Random rnd = new Random();

// While loop that places 15 mines. Checks if tile is beginning position or already a mine, and if so regenerates coordinates.
int mines = 0;
while (mines < 15)
{
int mineX = rnd.Next(0, 10);
int mineY = rnd.Next(0, 10);
if ((board[mineX, mineY] != "mine") && (mineX != 0 && mineY != 0) && (mineX != 9 && mineY != 9))
{
board[mineX, mineY] = "mine";
mines++;
}
}

// Sets the player at 0, 9
board[9, 0] = "player";

// Calls the procedure to output the board
while (true)
{
printBoard(board);
Console.ReadLine();
Console.Clear();
}
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... 10x10-grid
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»