Создание базовой игры в блэкджек на Python - изо всех сил, чтобы присвоить и общее количество карт - PullRequest
0 голосов
/ 19 декабря 2018

Я заранее прошу прощения за абсолютного новичка.

Так что это была моя попытка присвоить значения каждой карточке (программа выбирает из отдельного файла .txt, в котором есть список карточек)

cardAvalue = int   
if cardA == 'Jack of Spades' or 'Queen of Spades' or 'King of Spades' or '10 of Spades' or 'Jack of Hearts' or 'Queen of Hearts' or 'King of Hearts' or '10 of Hearts' or 'Jack of Clubs' or 'Queen of Clubs' or 'King of Clubs' or '10 of Clubs' or  'Jack of Diamonds' or 'Queen of Diamonds' or 'King of Diamonds' or '10 of Diamonds':
         cardAvalue = int(10)
elif cardA == '2 of Spades' or '2 of Hearts' or '2 of Clubs' or '2 of Diamonds':
         cardAvalue = int(2)
elif cardA == '3 of Spades' or '3 of Hearts' or '3 of Clubs' or '3 of Diamonds':
         cardAvalue = int(3)
elif cardA == '4 of Spades' or '4 of Hearts' or '4 of Clubs' or '4 of Diamonds':
        cardAvalue = int(4)
elif cardA == '5 of Spades' or '5 of Hearts' or '5 of Clubs' or '5 of Diamonds':
         cardAvalue = int(5)
elif cardA == '6 of Spades' or '6 of Hearts' or '6 of Clubs' or '6 of Diamonds':
         cardAvalue = int(6)
elif cardA == '7 of Spades' or '7 of Hearts' or '7 of Clubs' or '7 of Diamonds':
         cardAvalue = int(7)
elif cardA == '8 of Spades' or '8 of Hearts' or '8 of Clubs' or '8 of Diamonds':
         cardAvalue = int(8)
elif cardA == '9 of Spades' or '9 of Hearts' or '9 of Clubs' or '9 of Diamonds':
         cardAvalue = int(9)
elif cardA == ('Ace of Spades' or 'Ace of Hearts' or 'Ace of Clubs' or 'Ace of Diamonds'):
         cardAvalue = int(11)
cardCvalue = int
if cardC == 'Jack of Spades' or 'Queen of Spades' or 'King of Spades' or '10 of Spades' or 'Jack of Hearts' or 'Queen of Hearts' or 'King of Hearts' or '10 of Hearts' or 'Jack of Clubs' or 'Queen of Clubs' or 'King of Clubs' or '10 of Clubs' or  'Jack of Diamonds' or 'Queen of Diamonds' or 'King of Diamonds' or '10 of Diamonds':
        cardCvalue = int(10)
elif cardC == '2 of Spades' or '2 of Hearts' or '2 of Clubs' or '2 of Diamonds':
        cardCvalue = int(2)
elif cardC == '3 of Spades' or '3 of Hearts' or '3 of Clubs' or '3 of Diamonds':
        cardCvalue = int(3)
elif cardC == '4 of Spades' or '4 of Hearts' or '4 of Clubs' or '4 of Diamonds':
        cardCvalue = int(4)
elif cardC == '5 of Spades' or '5 of Hearts' or '5 of Clubs' or '5 of Diamonds':
        cardCvalue = int(5)
elif cardC == '6 of Spades' or '6 of Hearts' or '6 of Clubs' or '6 of Diamonds':
        cardCvalue = int(6)
elif cardC == '7 of Spades' or '7 of Hearts' or '7 of Clubs' or '7 of Diamonds':
        cardCvalue = int(7)
elif cardC == '8 of Spades' or '8 of Hearts' or '8 of Clubs' or '8 of Diamonds':
        cardCvalue = int(8)
elif cardC == '9 of Spades' or '9 of Hearts' or '9 of Clubs' or '9 of Diamonds':
        cardCvalue = int(9)
elif cardC == ('Ace of Spades' or 'Ace of Hearts' or 'Ace of Clubs' or 'Ace of Diamonds') and (cardAvalue <= 10):
        cardCvalue = int(11)
elif cardC == ('Ace of Spades' or 'Ace of Hearts' or 'Ace of Clubs' or 'Ace of Diamonds') and (cardAvalue > 10):
        cardCvalue = int(1)
cardA = cardAvalue
print(cardAvalue)

Оба cardAvalue и cardCvalue оба продолжают выходить как 10, номер данной переменной, несмотря на то, что я явно не смог присвоить числовые значения.Извините за предоставленные излишние теги int (), я расстроился из-за своего кода.

Я пытаюсь вычислить общее количество рук игрока.Куда я иду не так / Каков наилучший способ сделать это?

1 Ответ

0 голосов
/ 19 декабря 2018

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

  1. Откажитесь от масти карты, вы, кажется, не используете это, если я что-то пропустил.
  2. Если счет уже не превышает какое-то число score_threshold туз считается за 11, иначе 1.
  3. Количество лицевых карт равно 10, число числовых карт равно их количеству.

Итакзатем мы можем закодировать эти правила в функции:

def process_cards(cards, score_threshold):
      score = 0
      face_cards = ["Jack", "Queen", "King"]
      for x in cards:
        card = x.split()[0] # Discard suit
        if card in face_cards: # Face cards are ten
          score = score + 10
        elif card == "Ace":
          # Score based on score_threshold arg
          if score <= score_threshold:
            score = score + 11
          else:
            score = score + 1
        # If it's a digit, pass through that number to score
        elif card.isdigit():
          score = score + int(card)
        # Everything else is an error case
        else: 
          print("Invalid card!")
      # Make the score accessible outside the function
      return score

p = process_cards(["Queen of Spades", "Ace of Hearts"], 9)
print(p) # 11

В конце мы можем присвоить значение return этой функции переменной, а затем использовать его для всего, что будет дальше.

...