/
anya155
/
Bingo
Обзор
Документация
Войти
/
anya155
/
Bingo
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Program.cs
299 строк
9 KB
Элина Зезаева
Изменения вывода режима любой строки
20 дек 2025, 14:45
20 дек 2025, 14:45
d7290ed
Код
Авторство
О чём код?
using LotoGame.Data; using LotoGame.GameLogic; using LotoGame.UI; namespace LotoGame { /// <summary> /// Главный класс программы. /// </summary> internal class Program { private static bool _skipAllIntro = false; /// <summary> /// Точка входа в программу. /// </summary> /// <param name="args">Аргументы командной строки.</param> static void Main(string[] args) { Console.OutputEncoding = System.Text.Encoding.UTF8; Console.InputEncoding = System.Text.Encoding.UTF8; Console.Title = "🎮 Игра ЛОТО 🎮"; Console.ForegroundColor = ConsoleColor.White; Console.BackgroundColor = ConsoleColor.Black; Console.Clear(); ShowWelcomeScreen(); var repository = new GameRepository(); var highScores = new HighScoreTable(); var consoleUi = new ConsoleUI(); var gameInterface = new GameInterface(consoleUi, repository, highScores); gameInterface.Run(); } static void ShowWelcomeScreen() { Console.Clear(); Console.ForegroundColor = ConsoleColor.DarkGray; Console.WriteLine("💡 Управление интро:"); Console.WriteLine(" Enter - пропустить анимацию текущей строки"); Console.WriteLine(" Пробел - пропустить всё интро и начать игру"); Console.ResetColor(); Console.WriteLine(); CheckForSpaceSkip(); if (_skipAllIntro) { Console.Clear(); return; } Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine(new string('═', 60)); CheckForSpaceSkip(); if (_skipAllIntro) { return; } WaitOrSkip(300); Console.ForegroundColor = ConsoleColor.Yellow; ShowTextWithInstantDisplay(" 🎮 ДОБРО ПОЖАЛОВАТЬ В ИГРУ ЛОТО! 🎮 ", 40); CheckForSpaceSkip(); if (_skipAllIntro) { return; } WaitOrSkip(400); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(" "); CheckForSpaceSkip(); if (_skipAllIntro) { return; } WaitOrSkip(100); Console.ForegroundColor = ConsoleColor.Magenta; ShowTextWithInstantDisplay(" 🎲 Игра на удачу и внимание 🎲 ", 40); CheckForSpaceSkip(); if (_skipAllIntro) { return; } WaitOrSkip(400); Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine(new string('═', 60)); CheckForSpaceSkip(); if (_skipAllIntro) { return; } WaitOrSkip(500); Console.ResetColor(); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\n📜 ПРАВИЛА ИГРЫ:"); Console.ResetColor(); Console.ForegroundColor = ConsoleColor.White; ShowTextWithInstantDisplay("1. Каждый игрок получает карточку с 15 числами", 20); CheckForSpaceSkip(); if (_skipAllIntro) { return; } WaitOrSkip(200); ShowTextWithInstantDisplay("2. 🎯 Ваша задача - закрыть любую строку на вашей карточке или все 15 чисел", 20); CheckForSpaceSkip(); if (_skipAllIntro) { return; } WaitOrSkip(300); Console.ForegroundColor = ConsoleColor.White; ShowTextWithInstantDisplay("3. Игроки по очереди отмечают выпавшие числа", 20); CheckForSpaceSkip(); if (_skipAllIntro) { return; } WaitOrSkip(200); ShowTextWithInstantDisplay("4. Побеждает тот, кто первым закроет строку!", 20); CheckForSpaceSkip(); if (_skipAllIntro) { return; } WaitOrSkip(400); Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("\n" + new string('─', 60)); Console.ResetColor(); Console.ForegroundColor = ConsoleColor.Yellow; ShowTextWithInstantDisplay("Загрузка игры...", 30); Console.ResetColor(); CheckForSpaceSkip(); if (_skipAllIntro) { return; } WaitOrSkip(1000); Console.Clear(); } static void CheckForSpaceSkip() { if (Console.KeyAvailable) { var key = Console.ReadKey(true); if (key.Key == ConsoleKey.Spacebar) { _skipAllIntro = true; Console.Clear(); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("🚀 Пропуск интро..."); Console.ResetColor(); Thread.Sleep(600); Console.Clear(); } } } static void WaitOrSkip(int milliseconds) { int elapsed = 0; const int checkInterval = 100; while (elapsed < milliseconds) { if (Console.KeyAvailable) { var key = Console.ReadKey(true); if (key.Key == ConsoleKey.Enter) { return; } else if (key.Key == ConsoleKey.Spacebar) { _skipAllIntro = true; Console.Clear(); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("🚀 Пропуск интро..."); Console.ResetColor(); Thread.Sleep(600); Console.Clear(); return; } } Thread.Sleep(checkInterval); elapsed += checkInterval; } } static void ShowTextWithInstantDisplay(string text, int delay = 50) { if (_skipAllIntro) { return; } while (Console.KeyAvailable) { var key = Console.ReadKey(true); if (key.Key == ConsoleKey.Spacebar) { _skipAllIntro = true; return; } } for (int i = 0; i < text.Length; i++) { if (_skipAllIntro) { return; } Console.Write(text[i]); if (i % 3 == 0 && Console.KeyAvailable) { var key = Console.ReadKey(true); if (key.Key == ConsoleKey.Enter) { if (i + 1 < text.Length) { Console.Write(text.Substring(i + 1)); } break; } else if (key.Key == ConsoleKey.Spacebar) { _skipAllIntro = true; Console.Clear(); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("🚀 Пропуск интро..."); Console.ResetColor(); Thread.Sleep(600); Console.Clear(); return; } } if (!_skipAllIntro && delay > 0) { Thread.Sleep(delay); } } if (!_skipAllIntro) { Console.WriteLine(); } } static void ShowAnimatedText(string text, int delay = 50) { foreach (char c in text) { Console.Write(c); Thread.Sleep(delay); } Console.WriteLine(); } } }