NotAComputerScienceStudent Ответов: 2

Как назначить два возможных значения одной переменной


В основном я пытаюсь сделать игру в блэкджек на c#, проблема, с которой я сталкиваюсь, заключается в том, что Туз имеет два возможных значения: 1 и 11. Мне было интересно, как я мог бы дать два значения одной переменной "int Count"

Что я уже пробовал:

Я нашел код для игры в блэк джек онлайн игральные карты - C# Singleplayer Blackjack Game - Code Review Stack Exchange[^]

Это в основном использовало это
switch (Face)
            {
                case Ten:
                case Jack:
                case Queen:
                case King:
                    Value = 10;
                    break;
                case Ace:
                    Value = 11;
                    break;
                default:
                    Value = (int)Face + 1;
                    break;
            }


Во-первых, мне было интересно, как они преобразуют нечисловое перечисление в целое число, а во-вторых, как это даст ему два значения.

То, что я сделал, было
if (Settings.FirstCard == "A" && Settings.SecondCard == "A")
                        {
                            Console.WriteLine("Your Cards are A and A");
                            Console.WriteLine("Your Count is 12");
                            Settings.FirstCount = 12;

                        }
                        else
                        {
                            if (Settings.FirstCard == "A")
                            {
                                Console.WriteLine("Your Cards are 'A' and {0}", Settings.SecondCard);
                                Console.WriteLine("Your Possible counts are {0} and {1}", Settings.SecondCount + 1, Settings.SecondCount + 11);
                            }
                            else
                            {
                                Console.WriteLine("Your Cards are {0} and A", Settings.FirstCard);
                                Console.WriteLine("Your Possible counts are {0} and {1}", Settings.FirstCount + 1, Settings.FirstCount + 11);
                            }
                        }

Хотя это прекрасно работало для первоначальной сделки, когда человек ударит, она развалится

2 Ответов

Рейтинг:
17

OriginalGriff

Вы должны закодировать его как "особый случай" и проверить наличие туза, когда вы делаете подсчеты везде, где вы его используете.
Подумайте об этом: туз и Туз имеют три возможных значения, которые должны быть проверены как четыре:

 1 +  1  ==  2
 1 + 11  == 12
11 +  1  == 12
11 + 11  == 22


NotAComputerScienceStudent

Хорошо, поэтому я проверяю, приводит ли 11 к бюсту, и если он его игнорирует, но если он его не использует

OriginalGriff

Это должно сработать.

Рейтинг:
1

RickZeeland

Вы можете использовать перечисление с битовыми флагами, см. пример здесь: Типы перечислений - Справочник по C# | Microsoft Docs[^]