如果ReadKey代码运行两次

时间:2018-02-02 16:21:32

标签: c# .net

我创造了一个简单的健康和弹药游戏'。它应该显示当前的健康和弹药值,但是在按键时,一些代码运行两次,有时根本不运行,但我看不到任何异常。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FGameF
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 100, y = 100;
            Console.WriteLine("FGameF -- Hacking Test Game -- For DLL Injection");
            Console.WriteLine("Aim: Change Health And Ammo Values");
            Console.Write("Health: " + x + " Ammo: " + y);
            while (true)
            {
                try
                {
                    if (Console.ReadKey(true).Key == ConsoleKey.D1)
                    {
                        Console.Write("\rHealth: " + x + " Ammo: " + y);                       
                        x--;
                    }
                    else if (Console.ReadKey(true).Key == ConsoleKey.D2)
                    {                 
                        Console.Write("\rHealth: " + x + " Ammo: " + y);        
                        y--;
                    }
                }
                catch (Exception)
                {
                    throw;
                }

            }
        }
    }
}

编辑: 对不起,我不是最好的。有时,当只按下一个键时,2会被取消x,对于y则相同。但有时候,在几次x反之后,没有任何事情发生在y的压力下。

1 个答案:

答案 0 :(得分:3)

您的内部代码应该读取键盘一次,然后检查两个if语句中的值,如下所示:

var c = Console.ReadKey(true).Key;
if (c == ConsoleKey.D1)
{
    Console.Write("\rHealth: " + x + " Ammo: " + y);                       
    x--;
}
else if (c == ConsoleKey.D2)
{                 
    Console.Write("\rHealth: " + x + " Ammo: " + y);        
    y--;
}

你首先打印这些值似乎很奇怪,然后发生了减少,所以你可能想要转过它。