Sehen Sie sich udemys [Video zur Objektorientierung] an (https://www.udemy.com/course/oop-python/) Ich dachte, es könnte objektorientiert sein, also machte ich einen Blackjack, anstatt meine Fähigkeiten zu testen!
import random
CARDS = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
CARDS_DIC = {"A": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7,
             "8": 8, "9": 9, "10": 10, "J": 10, "Q": 10, "K": 10}
class Hit(list): #Spieler oder Dealer getroffen
    
    def __init__(self, list):
        self.list = list
        
    def player_hit(self):
        self.list.append(random.choice(CARDS))
        print(self.list[-1] + "Ich zog")
        show_hand(self.list)
        
    def dealer_hit(self):
        
        while True:
            if sum_cards(self.list) >= 17 and sum_cards(self.list) <= 21:
                return False
            elif sum_cards(self.list) < 17:
                self.list.append(random.choice(CARDS))
            else:
                return False
        
    
class Interface(list): #Ast
    
     def __init__(self, list):
        self.list = list
    
     def hit_or_stand(self): 
        while True:
            answer = input("hit or stand?:").lower()
            if answer == "hit":
                Hit(self.list).player_hit()
            elif answer == "stand":
                return False
            else:
                print("Bitte geben Sie hit oder stand ein")
            if sum_cards(self.list) > 21:
                print("Platzen")
                return False
            
def classification(player_list, dealer_list): #Urteil über Sieg oder Niederlage
    
    sum_player = sum_cards(player_list)
    sum_dealer = sum_cards(dealer_list)
    
    if 21 >= sum_player > sum_dealer or sum_dealer > 21 >= sum_player:
        print(f"Sie: {sum_player}")
        print(f"Händler: {sum_dealer}")
        print("Du gewinnst")
        
    elif 21 >= sum_dealer > sum_player or sum_player > 21 >= sum_dealer or sum_player and sum_dealer > 21:
        print(f"Sie: {sum_player}")
        print(f"Händler: {sum_dealer}")
        print("Du verlierst")
        
    else:
        print(f"Sie: {sum_player}")
        print(f"Händler: {sum_dealer}")
        print("Es ist eine Zeichnung")
        
def sum_cards(lists): #Aggregierte Karten
    
    sum_card = 0
    for list in lists:
        sum_card += CARDS_DIC[list]
        
    return sum_card
def show_hand(list): #Zeigen Sie die Karten in Ihrer Hand und die Summe der Karten
    player_hand_info = "Wann".join(list)
    print( "Deine Hand ist" + player_hand_info + "ist")
    print("gesamt" + str(sum_cards(list)) + "ist")
    
def main():
    # 1,Der Spieler zieht eine Karte(2 Blatt)
    player_hand = random.choices(CARDS, k=2)
    player_interface = Interface(player_hand)
    
    # 2,Händler zieht Karte(2 Blatt)
    dealer_hand = random.choices(CARDS, k=2)
    dealer_hit = Hit(dealer_hand)
    
    print("Spielbeginn")
    print()
    
    # 3,Der Spieler wählt Treffer oder Stand(Bis zum Platzen oder Stehen)
    print("Du bist dran")
    show_hand(player_hand)
    player_interface.hit_or_stand()
    print()
    
    #4,Der Händler wählt Treffer oder Stand(Bis die Summe 17 oder mehr ist)
    print("Der Händler ist an der Reihe")
    dealer_hit.dealer_hit()
    print()
    
    # 5,Beurteilen und beenden
    print("Beurteilung")
    classification(player_hand, dealer_hand)#Hauptverarbeitungsschicht
    
if __name__ == "__main__": 
    main()
Spielbeginn
Du bist dran
Deine Hand ist K und 9
Insgesamt 19
hit or stand?:hit
Ich habe 7 gezeichnet
Deine Hand ist K, 9 und 7
Insgesamt 26
Platzen
Der Händler ist an der Reihe
Beurteilung
Sie: 26
Händler: 18
Du verlierst
Während der Entwicklung habe ich die Klasse nicht verstanden Ich denke, dass das Ergebnis seltsamer Code ist. (Im Vergleich zu dem von anderen geschriebenen Code befindet sich mein Code in einem halbfertigen Zustand ohne Personenklasse, nur Hit-Klasse und Interface-Klasse.)
Ich möchte die Objektorientierung noch einmal studieren und es erneut versuchen.
Es ist schwierig zu denken, dass objektorientiert schwierig ist!
Recommended Posts