Я столкнулся с проблемой при программировании RPG, над которой я работаю.Эта проблема возникает, когда происходит случайное столкновение.
Мне важно сообщить вам, что игра основана на консоли, а карта, которую я использую, создана с использованием символов ascii.Он использует w, a, s, d для движения.Всякий раз, когда нажимается одна из этих клавиш, персонаж игрока перемещает одну плитку в этом направлении.Вы можете удерживать кнопку, чтобы двигаться в соответствующем направлении с более высокой скоростью.
В моем коде я сохраняю координаты игрока, когда встреча происходит так:
oldx = Console.CursorLeft;
oldy = Console.CursorTop;
RandomEncounter();
С этим я запускаю подпрограмму случайного столкновения, которая выглядит следующим образом:
public static void RandomEncounter()
{
Console.Clear();
Console.WriteLine("Random Encounter!");
System.Threading.Thread.Sleep(1000);
Console.WindowHeight = 33;
Console.Clear();
map = @"D:\personal\tests\Tests\ascii map tools\map1.txt";
DrawMap(map);
Console.WindowHeight = 32;
}
Это случайное столкновение просто временное, я заменю его битвой некоторых видов, но это то, что яЯ сделаю это позже.
Карта может быть найдена здесь: https://drive.google.com/open?id=1wzsHS7iz9OS-WndihFFNOMXt4h18PPwl
В любом случае, проблема возникает, когда случайное столкновение закончено.Карта будет перерисована, как показано в коде.Затем курсор будет установлен на правильные координаты.Однако он сразу же переместится примерно на десять плиток в направлении кнопки (w, a, s, d), которая была нажата в последний раз, когда произошло случайное столкновение.
Система движения, которую я использую, очень простаодин:
switch (input);
case 'w'
case 'a'
case 's'
case 'd'
Это не весь кусок входного кода, я думаю, что это не обязательно.
Так что мой вопрос: как мне остановить нежелательное движение послепроизошла случайная встреча?