我想我的代码有点问题,但我想不出来。我实际上是从一本书中复制了代码,但它是无序的,我试图以一种似乎合理的方式排列代码。但是每当我运行这个程序时,它就是不起作用。没有错误消息,程序运行,但什么也没有发生
我还是编程新手,我想知道为什么我会遇到这种情况,以及如何解决这个问题
import random
# Card Class
class Card:
def __init__(self, suit, value):
self.suit = suit
self.value = value
def __repr__(self):
return " of ".join((self.value, self.suit))
# Deck class
class Deck:
def __init__(self):
self.cards = [Card(s, v) for s in ["Spades", "Clubs", "Hearts", "Diamonds"]
for v in ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]]
def shuffle(self):
if len(self.cards) > 1:
random.shuffle(self.cards)
def deal(self):
if len(self.cards) > 1:
return self.cards.pop(0)
# Hand Class
class Hand:
def __init__(self, dealer=False):
self.dealer = dealer
self.cards = []
self.value = 0
def add_card(self, card):
self.cards.append(card)
def calculate_value(self):
self.value = 0
has_ace = False
for card in self.cards:
if card.value.isnumeric():
self.value += int(card.value)
else:
if card.value == "A":
has_ace = True
self.value += 11
else:
self.value += 10
if has_ace and self.value > 21:
self.value -= 10
def get_value(self):
self.calculate_value()
return self.value
def display(self):
if self.dealer:
print("hidden")
print(self.cards[1])
else:
for card in self.cards:
print(card)
print("Value: ", self.get_value())
# Game class and main loop
class Game:
def __init__(self):
playing = True
while playing:
self.deck = Deck()
self.deck.shuffle()
self.player_hand = Hand()
self.dealer_hand = Hand(dealer=True)
for i in range(2):
self.player_hand.add_card(self.deck.deal())
self.dealer_hand.add_card(self.deck.deal())
print("Your hand is:")
self.player_hand.display()
print()
print("Dealer's hand is:")
self.dealer_hand.display()
game_over = False
while not game_over:
player_has_blackjack, dealer_has_blackjack = self.check_for_blackjack()
def check_for_blackjack(self):
player = False
dealer = False
if self.player_hand.get_value() == 21:
player = True
if self.dealer_hand.get_value == 21:
dealer = True
return player, dealer
if player_has_blackjack or dealer_has_blackjack:
game_over = True
self.show_blackjack_results(player_has_blackjack, dealer_has_blackjack)
continue
def show_blackjack_results(self, player_has_blackjack, dealer_has_blackjack):
if player_has_blackjack and dealer_has_blackjack:
print("Both players have blackjack! Draw!")
elif player_has_blackjack:
print('You have blackjack! You win!')
elif dealer_has_blackjack:
print("Dealer has blackjack! Dealer wins!")
choice = input("Please choose [Hit / Stick] ").lower()
while choice not in ("h", "s", "hit", "stick"):
choice = input("Please choose [Hit / Stick] ").lower()
if choice in ["hit", "h"]:
self.player_hand.add_card(self.deck.deal())
self.player_hand.display()
def player_is_over(self):
return self.playe_hand.get_value() > 21
if self.player_is_over():
print("You have lost!")
has_won = True
else:
print("Final Results")
print("Your hand:", self.player_hand.get_value())
print("Dealer's hand:", self.dealer_hand.get_value())
if self.player_hand.get_value > self.dealer_hand.get_value():
print("You Win!")
else:
print("Dealer Wins!")
has_won = True
again = input("Play again? [Y/N] ")
while again.lower() not in ["y", "n"]:
again = input("Play again? [Y/N] ")
if again.lower() == "n":
print("Thanks for playing!")
playing = False
else:
has_won = False
if __name__ == "__main__":
game = Game()
目前没有回答
相关问题 更多 >
编程相关推荐