Я создаю консольную игру так же просто, как «Я генерирую случайное число, найдите его», но со многими вариантами.Остановить метод зацикленной нити через 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