我想做一个小游戏。该程序将循环输出数字,并且该人必须通过单击“输入”键以前面指定的确切数字停止循环。像这样:
static void Main(string[] args)
{
Console.WriteLine("try to click the 'enter' button when the program shows the number 4");
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
//here will be the command which reads the enter key and stops the loop
}
}
其中一位用户告诉我使用此代码:
Console.WriteLine("try to click the 'enter' button when the program shows the number 4");
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
if (e.KeyChar == (char)13)
{
break;
}
}
问题是,当我使用这段代码时,我有一个错误,上面写着“当前上下文中不存在名称'e'”。 这是什么意思?
提前致谢。
答案 0 :(得分:2)
读取控制台输入有两种基本方法:
Console.ReadLine()
将暂停并等待用户输入文本,然后输入回车键,返回输入键之前输入的所有内容。
Console.ReadKey()
将等待按键并将其作为ConsoleKeyInfo
结构返回,其中包含按下的键的信息,它代表的字符(如果有)以及修改键(ctrl,alt) ,移动)被压了。
如果您不想等到用户按下某个键,您可以使用Console.KeyAvailable
属性来检查是否有等待读取的按键。这可以在定时循环中使用,以便为键输入提供超时:
DateTime endTime = DateTime.Now.AddSeconds(10);
while (DateTime.Now < endTime)
{
if (Console.KeyAvailable)
{
var key = Console.ReadKey();
if (key.Key == ConsoleKey.Enter)
{
// do something with key
//...
// stop waiting
break;
}
}
// sleep to stop your program using all available CPU
Thread.Sleep(0);
}
答案 1 :(得分:1)
我找到了解决问题的基本想法here。
在这个答案中,他使用Console.KeyAvaliable
属性来检查是否按下了一个键,然后检查按键是否是您所查找的键。
为了满足您的需求,您必须改变它:
static void Main (string[] args)
{
Console.WriteLine ("try to click the 'enter' button when the program shows the number 4");
int counter = 0;
int limit = 100000;
do {
while (counter < limit && !Console.KeyAvailable) {
Console.WriteLine (counter);
counter++;
}
} while (Console.ReadKey (true).Key != ConsoleKey.Enter);
}
答案 2 :(得分:0)
尝试:
ConsoleKeyInfo cki;
do
{
cki = Console.ReadKey();
//What you need to do code
} while (cki.Key != ConsoleKey.Enter);
Console.ReadKey()
将等待按键并将其作为ConsoleKey返回,您只需捕获并测试它是否是您想要的按键。