Кажется, проблема в том, что вы пишете в каждое местоположение несколько раз из-за части, где вы делите на 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("┼");