在对我正在研究的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'
这不是输入代码的全部,我认为这不是必要的。
所以我的问题是:在随机遇到之后如何停止不必要的运动?