Ich habe einen Blackjack mit Python gemacht!

zunaechst

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!

Voraussetzungen

Code

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()

Verarbeitungsergebnis

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

Reflexionen

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

Ich habe einen Blackjack mit Python gemacht!
Ich habe mit Python einen Blackjack gemacht.
Ich habe mit Python einen einfachen Blackjack gemacht
Ich habe Wordcloud mit Python gemacht.
Ich habe mit Python eine Lotterie gemacht.
Ich habe mit Python einen Daemon erstellt
Ich habe mit Python einen Zeichenzähler erstellt
Ich habe mit Python eine Hex-Map erstellt
Ich habe mit Python ein schurkenhaftes Spiel gemacht
Ich habe mit Python eine Einstellungsdatei erstellt
Ich habe mit Python einen Neuronensimulator erstellt
Ich habe mit Python eine Bot-Wettervorhersage gemacht.
Ich habe eine GUI-App mit Python + PyQt5 erstellt
Ich habe versucht, mit Python einen Twitter-Blocker für faule Mädchen zu machen
[Python] Ich habe mit Tkinter einen Youtube Downloader erstellt.
Ich habe mit Python ein Bin-Picking-Spiel gemacht
Mattermost Bot mit Python gemacht (+ Flask)
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Ich habe einen Python-Text gemacht
Ich habe gRPC mit Python ausprobiert
Ich habe COVID19_simulator mit JupyterLab erstellt
Ich habe versucht, mit Python zu kratzen
Ich habe Word2Vec mit Pytorch gemacht
Othello gemacht mit Python (wie GUI)
Ich habe einen Twitter BOT mit GAE (Python) gemacht (mit einer Referenz)
Ich habe mit Python ein Weihnachtsbaum-Beleuchtungsspiel gemacht
Ich habe mit Python eine App für die Benachrichtigung über Netznachrichten erstellt
Ich habe eine Python3-Umgebung unter Ubuntu mit direnv erstellt.
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Mit Flask erstellte SNS Python-Grundlagen
Ich habe einen Line-Bot mit Python gemacht!
Ich habe versucht, WebScraping mit Python.
Ich habe meine eigene Python-Bibliothek erstellt
Numer0n mit Elementen, die mit Python erstellt wurden
Ich habe eine SMS mit Python gesendet
Othello-Spieleentwicklung mit Python
Ich mochte den Tweet mit Python. ..
Ich habe mit PyQt5 und Python3 gespielt
Ich möchte mit Python debuggen
Ich habe versucht, Prolog mit Python 3.8.2 auszuführen.
Ich habe die SMTP-Kommunikation mit Python versucht
Als ich CaboCha in Python3 verfügbar machte, blieb ich stecken (Windows 10)
Ich habe ein einfaches Tippspiel mit tkinter of Python gemacht
Ich habe ein Paket erstellt, um Zeitreihen mit Python zu filtern
Ich habe versucht, LINE-Bot mit Python + Flask + ngrok + LINE Messaging API zu erstellen
Ich habe eine einfache Buch-App mit Python + Flask ~ Introduction ~ erstellt
[Ich habe es mit Python gemacht] Tool für die Stapelausgabe von XML-Daten
Ich habe mit Tkinter of Python ein Puzzlespiel (wie) gemacht
Lebensspiel mit Python [ich habe es geschafft] (auf Terminal & Tkinter)
FizzBuzz in Python3
Ich habe eine einfache Schaltung mit Python gemacht (AND, OR, NOR, etc.)
Scraping mit Python
Ich habe eine Bibliothek erstellt, die Konfigurationsdateien mit Python einfach lesen kann
Statistik mit Python
Ich habe Othello dazu gebracht, Kindern Python3 beizubringen (4)
Ich habe ein Pay-Management-Programm in Python erstellt!
Scraping mit Python
HTTP Split Download Typ mit Python gemacht
Python mit Go