Проверка введенного числа через Console.ReadKey и исключение - C#
Формулировка задачи:
Прохожу уроки по C# на канале youtube, там достаточно быстро проходят темы связанные с циклами и операторами if, без особых примеров их использования, в принципе все понятно, но в комментариях люди спрашивают как их использовать, и я решил сделать небольшой пример, на основании того что понял..
Задача консольной игры, выводить варианты из 3х выборов, в данном случае ящиков, в которых находится, в одном 50 очков во втором 100 очков и третий "яд" или 1 в коде.
Классом Random должно перебираться значение переменной которая в свою очередь определяет в каком ящике что лежит..
Ниже код, большой кривой и да, его наверно можно как-то сделать компактней и логичней, но моих знаний для этого не достаточно, потому как есть, приношу извинения за косяки..
ПРОБЛЕМА: Программа исполняется нормально, доходит до введения числа "console.readkey" при введение любого числа, Visual Studio жутко виснит, выдает окно проблемы, просит выслать отчёты, а в самом коде указать на проблемную точку не может. Скрин ошибки:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Random cointRand = new Random(); int box = 0, box1 = 0, box2 = 0; int triger; int start; int coint = 0; int life = 0; int score = 0; int lvl = 0; string a, b, c, d; a = "Игра действительно не для слабых, удачи!"; b = "Вам не хватило везения, и вы выбрали яд, прощайте."; c = "Повезло, ящик содержал очки!"; d = "Уровень № " + lvl; // Вступительная речь Console.WriteLine("Давай поиграем!"); Console.WriteLine("Ты должен выбрать один из 3х ящиков, в одном из них яд!"); Console.WriteLine("В двух других очки, набери как можно больше очков."); Console.WriteLine("Ты готов?! yes = 1 \\ no = 2 "); // Проверка согласия игрока на игру start = Convert.ToInt32(Console.ReadLine()); if (start == 1) Console.WriteLine("Храбрец, угадывай."); else if (start == 2) { life = 2; Console.WriteLine(a); } // Перебор вариантов зависящий от числа выданного Рандомизатором содержания ящиков. if (coint == 0){ box = 1; box1 = 50; box2 = 100; } else if (coint == 1) { box = 50; box1 = 1; box2 = 100; } else if (coint == 2) { box = 100; box1 = 50; box2 = 1; } // Цикл предоставления выбора ящиков, с обновлением рандомного числа, и перезаписью содержания переменной score do { coint = cointRand.Next(0, 2); // Рандомизируем содержание боксов if (life != 2) // проверяем не отказался ли игрок от игры, если нет начинаем игру { Console.WriteLine(d + lvl++); // Вывод на экран переменной d и номер уровня Console.WriteLine("Набраные очки = " + score); // Вывод на экран текста + переменной score Console.WriteLine("Ящик 1, Ящик 2, Ящик 3"); [COLOR="Red"] triger = Convert.ToInt32(Console.ReadKey()); [/COLOR] // Запрашиваем число от 1 до 3 с последующей записью числа в переменную triger } // Варианты выбора разных чисел, при разных значениях переменной coint и последствия такого выбора. // Вариант №1 if (triger == 1 && coint == 0) { life = 2; Console.WriteLine(b); } else if (triger == 2 && coint == 0){ Console.WriteLine(c); score = score + box1; } else if(triger == 3 && coint == 0){ Console.WriteLine(c); score = score + box2; } // Вариант №2 else if (triger == 2 && coint == 1) { life = 2; Console.WriteLine(b); } else if (triger == 1 && coint == 1) { Console.WriteLine(c); score = score + box; } else if (triger == 3 && coint == 1) { Console.WriteLine(c); score = score + box2; } // Вариант №3 else if (triger == 1 && coint == 2) { Console.WriteLine(c); score = score + box; } else if (triger == 2 && coint == 2) { Console.WriteLine(c); score = score + box1; } else if (triger == 3 && coint == 2) { Console.WriteLine(c); score = score + box2; } } while (life == 1); // Проверка жизни игрока, и повтор цикла Console.ReadKey(); } } }
Ещё один вид ошибки:
И ещё один скрин
Решение задачи: «Проверка введенного числа через Console.ReadKey и исключение»
textual
Листинг программы
// Цикл предоставления выбора ящиков, с обновлением рандомного числа, и перезаписью содержания переменной score do { coint = cointRand.Next(0, 2); // Рандомизируем содержание боксов if (life != 2) // проверяем не отказался ли игрок от игры, если нет начинаем игру { Console.WriteLine(d + lvl++); // Вывод на экран переменной d и номер уровня Console.WriteLine("Набраные очки = " + score); // Вывод на экран текста + переменной score Console.WriteLine("Ящик 1, Ящик 2, Ящик 3"); ConsoleKeyInfo key; key = Console.ReadKey(); triger = Convert.ToInt32(key.KeyChar); // Запрашиваем число от 1 до 3 с последующей записью числа в переменную triger }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д