2013-04-22 34 views
0

问题是在第二个行(cards =),从我可以告诉,但我不知道如何解决它解释者说卡片没有定义(这是一个类)有没有人知道为什么?

import random 
cards = [Card('Spade', 10, 'Ace'), Card('Diamond', 5, '5')] 

def play_game(): 

    print("Welcome to Black Jack! The Game of 21!") 
    print() 
    x = input("Do you want to play?: ") 
    if x == 'y': 
     print() 
     print("WOOOOO :)") 
     print() 
     draw_card() 
    if x == 'n': 
     print("FINE! YOU ARE MEAN!!! :(") 


def draw_card(): 


    a1 = random.randint(0, len(cards) -1) 
    print("Player's card: ", a1) 
    print() 

    x = input("Hit again?: ") 
    print() 

    if x == 'y': 
     a2 = random.randint(0, len(cards) -1) 
     print("Player's next card: ", a2) 
     print() 
     print("Player Total so far: ", a1 + a2) 

     print() 
     x = input("Hit again?: ") 

    if x == 'y': 
     a3 = random.randint(0, len(cards) -1) 
     sum_ = a1 + a2 + a3 
     print() 
     print("Player new Total: ", a1 + a2 + a3) 
     print() 

    b1 = random.randint(0, len(cards) -1) 
    print("Dealer's card: ", b1) 

    print() 
    y = input("Dealer Hit Again?: ") 
    print() 

    if y == 'y': 
     b2 = random.randint(0, len(cards) -1) 
     print("Dealer's next card: ", b2) 
     print() 
     print("Dealer Total so far: ", b1 + b2) 
     print() 


    y = input("Dealer Hit Again: ") 
    print() 

    if y == 'y': 
     b3 = random.randint(0, len(cards) -1) 
     sum2_ = b1 + b2 + b3 
     print("Dealer new Total: ", b1 + b2 + b3) 
     print() 

    player = sum_ 

    dealer = sum2_ 


    if player == dealer: 
     print("ITS A TIE") 
    if player <= 21: 
     print("Player wins IN YOUR FACE COMPUTER") 
    if player > 21: 
     print("PLAYER YOU LOSE") 
    if dealer == 21: 
     print("Computer wins IN YOUR FACE PLAYER") 
    if dealer >= 22: 
     print("Computer FAIL") 

class Card(object): 
    suit = '' 
    name = '' 
    value = '' 

    def __init__(self, suit, value, name): 
     self.suit = suit 
     self.value = value 
     self.name = name 

    def __str__(self): 
     return '%s %ss %i' % (self.name, self.suit, self.value) 

    def main(): 
     c = Card('Spade', 8, '8') 
     d = Card('Diamond', 10, 'King') 

if __name__ == '__main__': 
    play_game() 
+0

你有没有发现什么是错的呢? – SonicKing4467 2013-04-22 17:24:51

+0

这并不能解决我的问题 – SonicKing4467 2013-04-22 17:26:13

回答

2

您尚未定义Card直到在文件中要晚得多。将cards定义移动到以下class Card行。

只是if __name__行之前所说的那样:

cards = [Card('Spade', 10, 'Ace'), Card('Diamond', 5, '5')] 

if __name__ == '__main__': 
    play_game() 
+0

谢谢你的帮助 – SonicKing4467 2013-04-22 17:30:21

相关问题