Так что я все еще работаю над своей игрой, и я борюсь с размещением персонажей с первого дня. Я хочу разместить символ "@" на моей карте, где вы, игрок, находитесь. Как только этот символ "@" переместится, плитка карты должна быть перерисована за ним. Проблема здесь в том, что карта рисуется в ASCII (в консоли), а определенные символы карты имеют определенные цвета (например, # использует Console.Foregroundcolor = ConsoleColor.DarkYellow
).
Карта хранится в файле .txt и читается символ за символом с помощью потокового ридера. Затем он сохраняется в двумерном массиве, который называется «data». Для применения цвета к этой плитке программа проверяет, какой символ указан в операторе switch, и соответственно применяет цвет.
Это самое близкое к правильному размещению персонажа, которое я хотел бы достичь:
public static void DrawCharacter()
{
lastmapchar = data[oldy][oldx];
Console.SetCursorPosition(oldx, oldy);
Console.Write(lastmapchar);
Console.ForegroundColor = ConsoleColor.White;
Console.SetCursorPosition(x, y);
Console.Write("@");
Console.SetCursorPosition(x, y);
ClearKeyBuffer();
Randomnumber = 100;
}
Это рисует символ «@» белым, но также рисует «lastmapchar» белым, что заставляет игрока оставить за собой белый след.
Удаление строки Console.ForegroundColor = ConsoleColor.White;
приводит к тому, что игрок будет того же цвета, что и первая плитка, на которой он находится.
Итак, мой вопрос: как бы я заставил игру написать символ "@" белым, перерисовав карту позади него в нужный цвет?