Математический подсчёт, а не ручной - C#

Узнай цену своей работы

Формулировка задачи:

Привет! Я тут эксперементирую. Пытаюсь сделать некое подобие детской игры фортуны. Вроде бы всё получилось, только когда я захотел увеличить количество цифр я столкнулся с тем, что вручную замучаюсь переписывать все возможные комбинации, которые могут выпасть. Я понимаю, что для этого нужно использовать цикл. Но я в монитор долблюсь и не понимаю, как это сделать. Помогите пожалуйста.
static void Main()
        {
            Game();
 
            Console.ReadKey();
        }
 
        static void Game()
        {
            Random random = new Random();
            int a, b, c;
 
            do
            {
                a = random.Next(1, 4);
                b = random.Next(1, 4);
                c = random.Next(1, 4);
 
                Console.WriteLine("{0} {1} {2}", a, b, c);
 
                while (true)
                {
                    if ((a == b && a == c))
                    {
                        if (a == 1)
                        {
                            Console.WriteLine("Единицы! Выигрыш x10.\n");
                            break;
                        }
 
                        if (a == 2)
                        {
                            Console.WriteLine("Двойки! Выигрыш x20.\n");
                            break;
                        }
 
                        if (a == 3)
                        {
                            Console.WriteLine("Тройки! Выигрыш x30.\n");
                            break;
                        }
                    }
 
                    if (a == (b - 1) && a == (c - 2)
                    || a == (b - 2) && a == (c - 1)
                    || b == (a - 1) && b == (c - 2)
                    || b == (a - 2) && b == (c - 1)
                    || c == (a - 1) && c == (b - 2)
                    || c == (a - 2) && c == (b - 1)
                        )
                    {
                        Console.WriteLine("Лесенка! Выигрыш x5.\n");
                        break;
                    }
 
                    if (a == b || a == c || b == c)
                    {
                        Console.WriteLine("Пара! Выигрыш x2.\n");
                        break;
                    }
                }
            } while (Console.ReadKey().Key == ConsoleKey.Enter);
      }
}
Кто по опытнее, чем я, то вы можете увеличить количество чисел до 10, а количество ячеек до 5. Добавить 4 и 5 совпадений подряд одинаковых чисел, плюс лесенки и остальное я просто не разбирал, что там может выпадать. Вы поймёте, что я имел ввиду.

Решение задачи: «Математический подсчёт, а не ручной»

textual
Листинг программы
        static void Main()
        {
            Game();
 
            Console.ReadKey();
        }
 
        static void Game()
        {
            Random random = new Random();
            int a, b, c;
            string[] outcomes = {
                        "Единицы! Выигрыш x10.\n",
                        "Двойки! Выигрыш x20.\n",
                        "Тройки! Выигрыш x30.\n",
                        "Четверки! Выигрыш x40.\n",
                        // TODO: Дописать до 10
                        // ...
            };
 
            do
            {
                a = random.Next(1, 4);
                b = random.Next(1, 4);
                c = random.Next(1, 4);
 
                Console.WriteLine("{0} {1} {2}", a, b, c);
 
                do
                {
                    if ((a == b && a == c))
                    {
                        bool leave_flag = false;
                        for (int i = 0; i < outcomes.Length; ++i)
                        {
                            if (a == 1 + i)
                            {
                                leave_flag = true;
                                Console.WriteLine(outcomes[i]);
                                break;
                            }
                        }
 
                        if (leave_flag) break;
                    }
 
                    if (
                       a == (b - 1) && a == (c - 2)
                    || a == (b - 2) && a == (c - 1)
                    || b == (a - 1) && b == (c - 2)
                    || b == (a - 2) && b == (c - 1)
                    || c == (a - 1) && c == (b - 2)
                    || c == (a - 2) && c == (b - 1)
                        )
                    {
                        Console.WriteLine("Лесенка! Выигрыш x5.\n");
                        break;
                    }
 
                    if (a == b || a == c || b == c)
                    {
                        Console.WriteLine("Пара! Выигрыш x2.\n");
                        break;
                    }
                }while (false) ;
            } while (Console.ReadKey().Key == ConsoleKey.Enter);
        }

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


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

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

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