Regardez la [Vidéo sur l'orientation des objets] d'udemy (https://www.udemy.com/course/oop-python/) Je pensais que cela pouvait être orienté objet, alors j'ai fait un blackjack au lieu d'essayer mes compétences!
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): #Joueur ou croupier touché
def __init__(self, list):
self.list = list
def player_hit(self):
self.list.append(random.choice(CARDS))
print(self.list[-1] + "J'ai tiré")
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): #Branche
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("Veuillez entrer frapper ou rester")
if sum_cards(self.list) > 21:
print("Éclater")
return False
def classification(player_list, dealer_list): #Jugement de victoire ou de défaite
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"tu: {sum_player}")
print(f"Marchand: {sum_dealer}")
print("Vous gagnez")
elif 21 >= sum_dealer > sum_player or sum_player > 21 >= sum_dealer or sum_player and sum_dealer > 21:
print(f"tu: {sum_player}")
print(f"Marchand: {sum_dealer}")
print("Tu as perdu")
else:
print(f"tu: {sum_player}")
print(f"Marchand: {sum_dealer}")
print("C'est un tirage au sort")
def sum_cards(lists): #Cartes agrégées
sum_card = 0
for list in lists:
sum_card += CARDS_DIC[list]
return sum_card
def show_hand(list): #Montrez les cartes de votre main et le total des cartes
player_hand_info = "Quand".join(list)
print( "Votre main est" + player_hand_info + "est")
print("total" + str(sum_cards(list)) + "est")
def main():
# 1,Le joueur pioche une carte(2 feuilles)
player_hand = random.choices(CARDS, k=2)
player_interface = Interface(player_hand)
# 2,Le croupier tire une carte(2 feuilles)
dealer_hand = random.choices(CARDS, k=2)
dealer_hit = Hit(dealer_hand)
print("Début du jeu")
print()
# 3,Le joueur choisit de toucher ou de se tenir debout(Jusqu'à éclater ou se tenir debout)
print("C'est ton tour")
show_hand(player_hand)
player_interface.hit_or_stand()
print()
#4,Le concessionnaire choisit de toucher ou de rester(Jusqu'à ce que le total soit de 17 ou plus)
print("C'est au tour du concessionnaire")
dealer_hit.dealer_hit()
print()
# 5,Juger et terminer
print("Jugement")
classification(player_hand, dealer_hand)#Couche de traitement principale
if __name__ == "__main__":
main()
Début du jeu
C'est ton tour
Votre main est K et 9
19 au total
hit or stand?:hit
J'ai dessiné 7
Votre main est K, 9 et 7
26 au total
Éclater
C'est au tour du concessionnaire
Jugement
tu: 26
Marchand: 18
Tu as perdu
Pendant le développement, je n'ai pas compris la classe J'ai l'impression que le résultat est un code étrange. (Comparé au code écrit par d'autres, mon code est dans un état semi-fini sans classe de personne, seulement la classe Hit et la classe Interface)
Je voudrais étudier à nouveau l'orientation des objets et réessayer.
Il est difficile de penser que l'orientation objet est difficile!
Recommended Posts