Сохранения координат кораблей в морском бою C#
Сохранения координат кораблей в морском бою. Нужно сделать морской бой. Никак не могу понять, как сохранять значения, где находятся корабли. Вводить желательно через консоль
Корабли обычные: один 4-палубный, два 3-палубных, три 2-палубных, четыре 1-палубных
А ещё как можно сделать два поля в консоли?
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Я предлагаю массив символов char[,].
Начать можно с этого
class Program
{
static void Main(string[] args)
{
char[,] area = CreateArea();
Console.Write("Введите четырехпалубный (row column v/h): ");
string input = Console.ReadLine();
string[] tokens = input.Split();
int row = int.Parse(tokens[0]);
int column = int.Parse(tokens[1]);
bool isHorizontal = tokens[2] == "h";
AddShip(area, row, column, isHorizontal, 4);
PrintArea(area);
}
private static void AddShip(char[,] area, int row, int column, bool isHorizontal, int length)
{
int h, v;
if (isHorizontal)
{
h = length;
v = 1;
}
else
{
h = 1;
v = length;
}
for (int i = row; i < row + v; i++)
for (int j = column; j < column + h; j++)
area[i, j] = '*';
}
private static char[,] CreateArea()
{
char[,] area = new char[10, 10];
for (int i = 0; i < area.GetLength(0); i++)
for (int j = 0; j < area.GetLength(1); j++)
area[i, j] = ' ';
return area;
}
private static void PrintArea(char[,] area)
{
Console.WriteLine(" А Б В Г Д Е Ж З И К");
for (int i = 0; i < area.GetLength(0); i++)
{
Console.Write((i + 1).ToString().PadLeft(2) + " [");
for (int j = 0; j < area.GetLength(1); j++)
Console.Write($"{area[i, j]} ");
Console.WriteLine("\b]");
}
}
}
Вывод в консоль
Введите четырехпалубный (row column v/h): 3 5 h
А Б В Г Д Е Ж З И К
1 [ ]
2 [ ]
3 [ ]
4 [ * * * * ]
5 [ ]
6 [ ]
7 [ ]
8 [ ]
9 [ ]
10 [ ]