如果是LeftArrow做某事,我需要检查按下哪个键,如果是RightArrow做了别的事,但是当没有按下任何键时,主循环必须继续。
我有这个代码,但是当进程到达这个部分时它只是等待按键,当没有按下任何键时它不会跳过它。第二个问题是,我需要改变" + "的位置。在1字段中,如果我按下按键很长时间按下它的按钮
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
}
答案 0 :(得分:0)
您应该只在每个循环中从控制台读取一次密钥,然后将操作基于读取的值。在编写代码时,您正在每个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
}