c #Console App KeyPress检查

时间:2015-04-05 13:06:29

标签: c# if-statement keypress cycle

如果是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

                }

1 个答案:

答案 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
        }