我创建了一个控制台游戏,就像“我生成一个随机数,找到它”一样简单,但有很多选项。x秒后停止循环线程方法
我当前的代码(没有什么,我想在这里)是availlable在GitHub上:https://github.com/crakmaniaque/trouvezmoi
我要的是创造我的游戏版本将被定时,所以计算机生成号码,用户发现,它会产生一个新的玩家,玩家有90秒可以找到最多的随机数。我可以很容易地编码。
我需要帮助的是在90秒后停止游戏(一个线程)并检索从线程创建的答案的数量。 Console.Title
也应该显示剩余时间。我尝试过的尝试可行,但如果控制台要求输入号码(Console.ReadLine()
),线程不会中断。但是计时器是针对整个过程的,不仅仅是用户输入。
private static void timerb()
{
int t = 90;
for (int i = 0; i < 90; i++)
{
Console.Title = t + " seconds remaining";
Thread.Sleep(1000);
t--;
}
}
private static void cGame()
{
Thread t = new Thread(timerb);
t.Start();
while (t.IsAlive)
{
bool good = false;
int rnd = new Random().Next(0,10); // 0 and 10 are sample
while (!good)
{
try
{
Console.Write("Enter a number between x and y >");
int i = int.Parse(Console.ReadLine());
if (i == rnd)
{
good = true;
}
}
catch (FormatException)
{
Console.WriteLine("Invalid answer.");
}
}
}
}
我对线程知之甚少,在那一点上我被困住了。 有人可以帮我解决我的问题吗?我正在使用.NET 2.0。
可能重复[如何添加超时到Console.ReadLine()?](http://stackoverflow.com/questions/57615/how-to-add-a-timeout-to-console-readline) – Amit
我读过这个话题,实际上这里的超时只是用户输入并不是所有的流程,验证等。 –
这就是你遇到问题的地方。你自己说过:*但是如果控制台要求输入数字(Console.ReadLine())*,线程不会中断。使用该答案中的信息来解决您的问题。 – Amit