Попытка использовать внутренние объекты ООП, приводящая к действительно странной ошибке - PullRequest
0 голосов
/ 18 января 2019

Хорошо, я пытаюсь создать довольно простую игру в блэкджек, и я довольно новичок в Python.При попытке запустить программу после организации большей ее части (программа не завершена) я продолжаю получать эту ошибку, и я не слишком уверен, как ее исправить.В нем говорится, что «блэкджек не определен при неизвестном», однако блэкджек четко определен.Вот мой код,

import random
import time
import os
def clear():
  os.system( 'cls' )


# Globals
global pointcount
pointcount = []
global balance
balance = 100
global cardsuits
cardsuits = ['Diamonds','Spades','Hearts','Clubs'],
global cardsuitsym
cardsuitsym = ['♦','♠','♥','♣'],
global level
level = ["2",'3','4','5','6','7','8','9','10'],


randomsuit = random.choice(cardsuitsym)

randomlevel = random.choice(level)


class blackjack(object):

  cardvalues = {
    '2':2,
    '3':3,
    '4':4,
    '5':5,
    '6':6,
    '7':7,
    '8':8,
    '9':9,
    '10':10,
    'J':10,
    'Q':10,
    'K':10,
    'A':11
  }

  class dealer(): #Handles all functions related to the dealer and its operations
    pass

  class player(): #All Player Functions

    def game_card_deal():#Draws the cards for the player and the dealer


      upcardsuit = random.choice(cardsuitsym)
      upcardlevel = random.choice(level)
      random_cardsuit = random.choice(upcardsuit)
      random_cardlevel = random.choice(upcardlevel)

      print("┌────┐")
      print("│ {}  │").format(random_cardlevel)
      print("│  {} │").format(random_cardsuit)
      print("│    │")
      print("└────┘")

      pointcount.append(random_cardlevel)

  class system(): #Handles all things system related, not dealing with the dealer or player


      def game_begin(): #First thing ran, starts the game

        print("Welcome to Blackjack, the rules are simple,")
        print("")
        print("Blackjack is played with one or more standard 52-card decks,\nwith each denomination assigned a point value.\n The cards 2 through 10 are worth their face value. Kings, queens, and jacks are each worth 10, and aces may be used as either 1 or 11.\n  The object for the player is to draw cards totaling closer to 21, without going over, than the dealer's cards.")
        print("██████████████████████████████████████████████████")
        play_prompt = input("\nWould you like to play?")
        if play_prompt == "yes" or "Yes" or "YES" or "y" or "YeS" or "YEs":
          clear()
          loadsym = "⌛"
          for x in range(0, 5):
            newloadsym = loadsym + "⌛"
            print(newloadsym)
            loadsym = newloadsym
            time.sleep(1)
            clear()
          blackjack.game_card_deal()
          blackjack.game_card_deal()

      def game_point_finder(pointcount): #Finds the amount of points the player has

        level = ["2",'3','4','5','6','7','8','9','10']
        int(level[0])
        int(level[1])
        int(level[2])
        int(level[3])
        int(level[4])
        int(level[5])
        int(level[6])
        int(level[7])
        int(level[8])
        amt_of_points = len(pointcount)
        amt_of_points = amt_of_points - 1
        int_points = pointcount[amt_of_points]
        for x in range(0, amt_of_points):
          int(int_points)
        totalpoints = sum(pointcount)
        print("Value:")
        print(totalpoints)
        blackjack.game_hit_or_stand()


      def game_hit_or_stand(): #Third Prompt
        hit_stand = input("Would you like to hit, or stand?")
        if hit_stand == "hit" or "Hit" or "HIT" or "h":
          blackjack.game_card_deal()
        elif hit_stand == "stand" or "Stand" or "STAND" or "s":
          blackjack.game_cards_show()

      def game_card_show(): #End Game













blackjack.system.game_begin()

1 Ответ

0 голосов
/ 18 января 2019

здесь исправленный код, и он отлично работает

</p>

<p>import random
import time
import os
def clear():
  os.system( 'cls' )</p>

<h1>Globals</h1>

<p>global pointcount
pointcount = []
global balance
balance = 100
global cardsuits
cardsuits = ['Diamonds','Spades','Hearts','Clubs'],
global cardsuitsym
cardsuitsym = ['♦','♠','♥','♣'],
global level
level = ["2",'3','4','5','6','7','8','9','10'],</p>

<p>randomsuit = random.choice(cardsuitsym)</p>

<p>randomlevel = random.choice(level)</p>

<p>class blackjack(object):</p>

<p>cardvalues = {
    '2':2,
    '3':3,
    '4':4,
    '5':5,
    '6':6,
    '7':7,
    '8':8,
    '9':9,
    '10':10,
    'J':10,
    'Q':10,
    'K':10,
    'A':11
  }</p>

<p>class dealer(): #Handles all functions related to the dealer and its operations
    pass</p>

<p>class player(): #All Player Functions</p>

<pre><code>def game_card_deal():#Draws the cards for the player and the dealer


  upcardsuit = random.choice(cardsuitsym)
  upcardlevel = random.choice(level)
  random_cardsuit = random.choice(upcardsuit)
  random_cardlevel = random.choice(upcardlevel)

  print("┌────┐")
  print("│ {}  │".format(random_cardlevel))
  print("│  {} │".format(random_cardsuit))
  print("│    │")
  print("└────┘")

  pointcount.append(random_cardlevel)
</code>

система классов (): # Обрабатывает все, что связано с системой, не имея дело с дилером или игроком

def game_begin(): #First thing ran, starts the game print("Welcome to Blackjack, the rules are simple,") print("") print("Blackjack is played with one or more standard 52-card decks,\nwith each denomination assigned a point value.\n The cards 2 through 10 are worth their face value. Kings, queens, and jacks are each worth 10, and aces may be used as either 1 or 11.\n The object for the player is to draw cards totaling closer to 21, without going over, than the dealer's cards.") print("██████████████████████████████████████████████████") play_prompt = input("\nWould you like to play?") if play_prompt == "yes" or "Yes" or "YES" or "y" or "YeS" or "YEs": clear() loadsym = "⌛" for x in range(0, 5): newloadsym = loadsym + "⌛" print(newloadsym) loadsym = newloadsym time.sleep(1) clear() blackjack.player.game_card_deal() blackjack.player.game_card_deal() def game_point_finder(pointcount): #Finds the amount of points the player has level = ["2",'3','4','5','6','7','8','9','10'] int(level[0]) int(level[1]) int(level[2]) int(level[3]) int(level[4]) int(level[5]) int(level[6]) int(level[7]) int(level[8]) amt_of_points = len(pointcount) amt_of_points = amt_of_points - 1 int_points = pointcount[amt_of_points] for x in range(0, amt_of_points): int(int_points) totalpoints = sum(pointcount) print("Value:") print(totalpoints) blackjack.game_hit_or_stand() def game_hit_or_stand(): #Third Prompt hit_stand = input("Would you like to hit, or stand?") if hit_stand == "hit" or "Hit" or "HIT" or "h": blackjack.player.game_card_deal() elif hit_stand == "stand" or "Stand" or "STAND" or "s": blackjack.game_cards_show() def game_card_show(): pass#End Game

блэкджек.system.game_begin ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...