Проверка введенного числа через 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
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы