我有一种方法用于询问一个人想在Console
游戏中走哪条路。
上述方法:
私有静态无效 dirChoose()
{
Console.SetCursorPosition(0, 7);
Console.WriteLine("A mysterious voice says \"Which way will you go?\"");
Console.WriteLine("Type");
if (curLeft == false) { Console.WriteLine("(L)eft "); }
if (curUp == false) { Console.WriteLine("(U)p "); }
if (curRight == false) { Console.WriteLine("(R)ight "); }
if (curDown == false) { Console.WriteLine("(D)own "); }
Console.SetCursorPosition(49, 7);
userDirInput = Convert.ToChar(Console.Read());
Console.SetCursorPosition(0, 13);
Console.Write("read as " + userDirInput);
if (userDirInput == 'u' || userDirInput == 'U') { reDir = 1; userDirInput = 'y'; }//up
else if (userDirInput == 'd' || userDirInput == 'D') { reDir = 3; userDirInput = 'y'; }//down
else if (userDirInput == 'l' || userDirInput == 'L') { reDir = 0; userDirInput = 'y'; }//left
else if (userDirInput == 'r' || userDirInput == 'R') { reDir = 2; userDirInput = 'y'; }//right
else//anything besides
{
Console.SetCursorPosition(0, 14);
Console.WriteLine("You entered an incorrect direction. Please try again.");
Console.SetCursorPosition(rWALL_STOP - 1, 3);
doneBool = false;
t.Elapsed += right;
t.Start();
}
}//dirChoose()
在回答“你会走哪条路?”的问题时 应该读取输入的第一个字符。因此,如果您输入整个单词“left”或“right”,那么它会显示为“l”和“r”。然后它应该改变一个数字并让它做它应该做的事情。出于某种奇怪的原因,它在读取第一个后跳转到第二个,因此它随后将适当的方法添加到计时器并继续前进。
笔记:
static Timer t = new Timer(16);
public static char userDirInput { get; set; }
public static bool curLeft { get; set; }
public static bool curUp { get; set; }
public static bool curRight { get; set; }
public static bool curDown { get; set; }
public static bool doneBool{ get; set; }
所以我的问题是“为什么光标在第一个字符之后跳到第二个字符?我该如何解决?”