Консоль Запись в позицию курсора - PullRequest
0 голосов
/ 11 декабря 2011

Я рисую крест в консоли.Вот мой код:

for (int x = 0; x < 320; x++)
{
    for (int y = 0; y < 100; y++)
    {
        Console.SetCursorPosition(Convert.ToInt32(x / 4),Convert.ToInt32(y / 4));

        if (x == 160)
        {
            if (y == 50)
            {
                Console.Write("┼");
            }
            else
            {
                Console.Write("│");
            }
        }
        else
        {
            if (y == 50)
            {
                Console.Write("─");
            }
        }                    
    }               
}

Консоль рисует крест, кроме среднего символа «┼».Когда я отлаживал программу, она попала в строку Console.Write("┼");.Вместо этого программа написала символ «─».Что я делаю не так и как решить эту проблему?

1 Ответ

4 голосов
/ 11 декабря 2011

Кажется, проблема в том, что вы пишете в каждое местоположение несколько раз из-за части, где вы делите на 4.

Когда (x, y) равно (160, 50), вы пишете крестик в(40, 12).Тогда (x, y) равно (160, 51), поэтому вы пишете вертикальную трубу в том же месте, перезаписывая крест.Затем, когда (x, y) становится (161, 50), вы перезаписываете трубу тире.

Попробуйте вместо этого:

for (int x = 0; x < 80; x++)
{
    Console.SetCursorPosition(x, 12);
    Console.Write("─");
}

for (int y = 0; y < 25; y++)
{
    Console.SetCursorPosition(40, y);
    Console.Write("|");
}

Console.SetCursorPosition(40, 12);
Console.Write("┼");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...