我创造了一个简单的健康和弹药游戏'。它应该显示当前的健康和弹药值,但是在按键时,一些代码运行两次,有时根本不运行,但我看不到任何异常。
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的压力下。
答案 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--;
}
你首先打印这些值似乎很奇怪,然后发生了减少,所以你可能想要转过它。