c#控制台应用程序按空格键而不在屏幕上显示

时间:2019-11-14 19:56:13

标签: c# .net

我想使用c#控制台应用程序制作一个真正简单的cookie单击器。 这个想法是,每次您单击 spacebar 时,您都会获得一个cookie(无休止) 但是我的代码不起作用,有人知道我做错了或忘记了什么吗?

这是我的代码:

    static void Main(string[] args)
    {
        int cookie = 0;
        Console.WriteLine("Coockie Clicker, druk op spatie om te beginnen...");
        Console.ReadKey();
        Console.Clear();
        while (cookie <1000000)
        {
            Console.ReadLine();

        if(Console.ReadLine() == " ")
             {
                 cookie++;
                 Console.WriteLine("Cookies ="+cookie);
             }
            else
            {

            }
        Console.ReadKey();

        }

    }

我希望什么工作?=每次我按空格键(if(Console.ReadLine()==“”)<---在那里的那一点应该将+1添加到int cookie并执行此操作直到1.000。 000,但显然有些东西不起作用

3 个答案:

答案 0 :(得分:3)

希望这就是您想要的。

    static void Main(string[] args)
    {
        int cookie = 0;
        Console.WriteLine("Coockie Clicker, druk op spatie om te beginnen...");

        Console.Clear();
        while (cookie < 1000000)
        {

            if (Console.ReadKey(true).Key == ConsoleKey.Spacebar)
            {
                cookie++;
                Console.Clear();
                Console.WriteLine("Cookies =" + cookie);
            }

        }
    }

答案 1 :(得分:2)

如果您只是想为每个空格键单击提供cookie,则可以使用Console.ReadKey。有一个过载,它带有一个布尔值,指示您是否要“拦截”按键。当您拦截按键时,该值不会显示给用户。

另一方面,

Console.ReadLine仅在您按回车键时返回一个值。无论如何,该值都会显示给用户。

这是更新的代码示例:

static void Main(string[] args)
{
    int cookie = 0;
    Console.WriteLine("Coockie Clicker, druk op spatie om te beginnen...");
    Console.ReadKey();
    Console.Clear();
    while (cookie <1000000)
    {
        var ch = Console.ReadKey(true);

        if(ch.KeyChar == ' ')
        {
            cookie++;
            Console.WriteLine("Cookies ="+cookie);
        }
    }
}

答案 2 :(得分:1)

首先,如果您想使其永无止境,则应使用

while (true)

代替

while (cookie <1000000)

但是请注意,尽管我怀疑您会获得比int.MaxValue更多的cookie,但是从技术上讲,它可能会溢出。

第二Console.ReadLine()读取一行,因此最后需要输入Enter键,您应该只使用Console.ReadKey()

第三个是您有一个额外的阅读行:

  Console.ReadLine();
  if(Console.ReadLine() == " ")

因此,它希望您输入一行(不用,只是等待用户最后单击Enter),然后阅读另一行并将其与" "

进行比较。
 if(Console.ReadKey().Key == ConsoleKey.Spacebar)
 {
      //generate your cookie here
 }