Сохранения координат кораблей в морском бою 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 [                   ]
→ Ссылка