Ролевая игра для начинающих (игра) - PullRequest
0 голосов
/ 19 октября 2018

Я столкнулся с проблемой при программировании 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'

Это не весь кусок входного кода, я думаю, что это не обязательно.

Так что мой вопрос: как мне остановить нежелательное движение послепроизошла случайная встреча?

...