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