我想检测是否有任何按键被按下,但据我所知,if语句没有被触发,否则程序会因Enviroment.Exit(0)
而关闭。
public static int GameLoop()
{
while(true)
{
if(Console.KeyAvailable == true)
{
Environment.Exit(0); //test to see if being used
Player.KeyPressed = Console.ReadKey().KeyChar;
Player.Movement();
}
Console.Clear();
Console.SetCursorPosition(playerX, playerY);
Console.Write(playerDirection);
input = (char)Console.ReadKey().KeyChar;
正在调用 GameLoop()
,因为正在执行Console.WriteLine("working")
。关于为什么Console.KeyAvailable == true
未能在关键媒体上得到满足的任何想法?谢谢!
答案 0 :(得分:1)
代码if(Console.KeyAvailable == true)
永远不会被发现是真的,因为在几个刻度(非常短的时间内)中,正在读取密钥使其不可用input = (char)Console.ReadKey().KeyChar;
。
正如@Hans Passant所说:“在ReadKey()
和KeyAvailable
电话之间按键的速度非常快”
基本上Console.KeyAvailable
不应与Console.ReadKey
位于同一方法或循环中。
因此,如果您想记录按下了哪个键,请从if
语句中读取密钥,如下所示:
if (Console.KeyAvailable == true)
{
Player.KeyPressed = Console.ReadKey().KeyChar;
Player.Movement();
}