c# Console App KeyPress 检查
c# ConsoleApp KeyPressed check
我需要检查按下哪个键,如果是 LeftArrow 做某事,如果是 RightArrow 做其他事情,但是当按下 none 键时,主循环必须继续。
我有这个代码,但是当处理到这部分时它只是在等待按键,当按下 none 键时它不会跳过它。第二个问题是我需要将“+”在字段中的位置更改为 1,如果我长时间按下该键,它会移动 XXX
if (Console.ReadKey(true).Key == ConsoleKey.LeftArrow)
{
int levo;
levo = pozice;
if (levo == 1) //Zajištění, že se nedosáhne hodnoty vyšší, než je rozsah pole
{
levo = levo + 1;
}
p18[levo - 1] = "*+*"; //Samotný posun panáčka
p18[levo] = " "; //Smazání panáčka z původní pozice
}
if (Console.ReadKey(true).Key == ConsoleKey.RightArrow)
{
int pravo;
pravo = pozice;
if (pravo == 18) //Zajištění, že se nedosáhne hodnoty vyšší, než je rozsah pole
{
pravo = pravo - 1;
}
p18[pravo + 1] = "*+*"; //Samotný posun panáčka
p18[pravo] = " "; //Smazání panáčka z původní pozice
}
您应该在每个循环中只从控制台读取一次密钥,然后根据读取的值执行操作。在编写代码时,您将在每个 if 语句中读取一个新键。下面是执行此操作的代码的修改版本。
var key = Console.ReadKey(true).Key;
if (key == ConsoleKey.LeftArrow)
{
int levo = pozice;
if (levo == 1) //Zajištění, že se nedosáhne hodnoty vyšší, než je rozsah pole
{
levo = levo + 1;
}
p18[levo - 1] = "*+*"; //Samotný posun panáčka
p18[levo] = " "; //Smazání panáčka z původní pozice
}
if (key == ConsoleKey.RightArrow)
{
int pravo = pozice;
if (pravo == 18) //Zajištění, že se nedosáhne hodnoty vyšší, než je rozsah pole
{
pravo = pravo - 1;
}
p18[pravo + 1] = "*+*"; //Samotný posun panáčka
p18[pravo] = " "; //Smazání panáčka z původní pozice
}
我需要检查按下哪个键,如果是 LeftArrow 做某事,如果是 RightArrow 做其他事情,但是当按下 none 键时,主循环必须继续。
我有这个代码,但是当处理到这部分时它只是在等待按键,当按下 none 键时它不会跳过它。第二个问题是我需要将“+”在字段中的位置更改为 1,如果我长时间按下该键,它会移动 XXX
if (Console.ReadKey(true).Key == ConsoleKey.LeftArrow)
{
int levo;
levo = pozice;
if (levo == 1) //Zajištění, že se nedosáhne hodnoty vyšší, než je rozsah pole
{
levo = levo + 1;
}
p18[levo - 1] = "*+*"; //Samotný posun panáčka
p18[levo] = " "; //Smazání panáčka z původní pozice
}
if (Console.ReadKey(true).Key == ConsoleKey.RightArrow)
{
int pravo;
pravo = pozice;
if (pravo == 18) //Zajištění, že se nedosáhne hodnoty vyšší, než je rozsah pole
{
pravo = pravo - 1;
}
p18[pravo + 1] = "*+*"; //Samotný posun panáčka
p18[pravo] = " "; //Smazání panáčka z původní pozice
}
您应该在每个循环中只从控制台读取一次密钥,然后根据读取的值执行操作。在编写代码时,您将在每个 if 语句中读取一个新键。下面是执行此操作的代码的修改版本。
var key = Console.ReadKey(true).Key;
if (key == ConsoleKey.LeftArrow)
{
int levo = pozice;
if (levo == 1) //Zajištění, že se nedosáhne hodnoty vyšší, než je rozsah pole
{
levo = levo + 1;
}
p18[levo - 1] = "*+*"; //Samotný posun panáčka
p18[levo] = " "; //Smazání panáčka z původní pozice
}
if (key == ConsoleKey.RightArrow)
{
int pravo = pozice;
if (pravo == 18) //Zajištění, že se nedosáhne hodnoty vyšší, než je rozsah pole
{
pravo = pravo - 1;
}
p18[pravo + 1] = "*+*"; //Samotný posun panáčka
p18[pravo] = " "; //Smazání panáčka z původní pozice
}