/
MrFish
/
CSharpGameProject
Обзор
Документация
Войти
/
MrFish
/
CSharpGameProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
MainGameProject/TimeoutValidators.cs
61 строка
2 KB
Yaroslav4444-bauer
Кодстайл - исправлены сообщения
20 дек 2025, 14:46
20 дек 2025, 14:46
5149f1a
Код
Авторство
О чём код?
namespace MainGameProject { // Класс отслеживания действий пользователя с заданным дедлайном class TimeoutValidators { // Фиксируем нажатие на клавишу до дедлайна public static bool WaitForInputWithTimeout(string message, DateTime deadline) { Console.Write(message); while (DateTime.Now < deadline && !Console.KeyAvailable) { Thread.Sleep(100); // Проверяем каждые 100 мс } if (Console.KeyAvailable) { Console.ReadKey(true); return true; // Если клавиша нажата } return false; // Если пользователь не успел нажать } // Фиксируем ввод текста с клавиатуры до дедлайна public static string? ReadLineWithTimeout(DateTime deadline) { var input = new System.Text.StringBuilder(); while (DateTime.Now < deadline) { if (Console.KeyAvailable) // Контроль каждого введённого символа { var key = Console.ReadKey(true); if (key.Key == ConsoleKey.Enter) // Enter, завершение ввода { Console.WriteLine(); return input.ToString(); } else if (key.Key == ConsoleKey.Backspace && input.Length > 0) // Пробел { input.Remove(input.Length - 1, 1); Console.Write("\b \b"); } else if (!char.IsControl(key.KeyChar)) // Остальные символы просто добавляем { input.Append(key.KeyChar); Console.Write(key.KeyChar); } } else { Thread.Sleep(50); // Проверяем каждые 50 мс } } return null; // Тайм-аут } } }