J'ai fait un blackjack avec du python!

en premier

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!

Conditions préalables

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

Résultat du traitement

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

Réflexions

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

J'ai fait un blackjack avec du python!
J'ai fait un blackjack avec Python.
J'ai fait un simple blackjack avec Python
J'ai créé wordcloud avec Python.
J'ai fait une loterie avec Python.
J'ai créé un démon avec Python
J'ai fait un compteur de caractères avec Python
J'ai fait une carte hexadécimale avec Python
J'ai fait un jeu rogue-like avec Python
J'ai créé un fichier de configuration avec Python
J'ai fait un simulateur de neurones avec Python
J'ai fait une prévision météo de type bot avec Python.
J'ai créé une application graphique avec Python + PyQt5
J'ai essayé de créer un bloqueur de filles pourries sur Twitter avec Python ①
[Python] J'ai créé un téléchargeur Youtube avec Tkinter.
J'ai fait un jeu de cueillette avec Python
Made Mattermost Bot avec Python (+ Flask)
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
J'ai fait un texte Python
J'ai essayé gRPC avec Python
J'ai créé COVID19_simulator avec JupyterLab
J'ai essayé de gratter avec du python
J'ai créé Word2Vec avec Pytorch
Othello fait avec python (comme GUI)
J'ai fait un Twitter BOT avec GAE (python) (avec une référence)
J'ai fait un jeu d'éclairage de sapin de Noël avec Python
J'ai créé une application de notification de nouvelles en ligne avec Python
J'ai créé un environnement Python3 sur Ubuntu avec direnv.
J'ai essayé de faire LINE BOT avec Python et Heroku
Bases de SNS Python faites avec Flask
J'ai fait un Line-bot avec Python!
J'ai essayé webScraping avec python.
J'ai créé ma propre bibliothèque Python
Numer0n avec des objets fabriqués avec Python
J'ai envoyé un SMS avec Python
Développement de jeux Othello avec Python
J'ai aimé le tweet avec python. ..
J'ai joué avec PyQt5 et Python3
Je veux déboguer avec Python
J'ai essayé d'exécuter prolog avec python 3.8.2.
J'ai essayé la communication SMTP avec Python
Quand j'ai rendu CaboCha disponible en python3, je suis resté bloqué (Windows 10)
J'ai fait un jeu de frappe simple avec tkinter de Python
J'ai créé un package pour filtrer les séries chronologiques avec python
J'ai essayé de créer LINE-bot avec Python + Flask + ngrok + LINE Messaging API
J'ai créé une application de livre simple avec python + Flask ~ Introduction ~
[Je l'ai fait avec Python] Outil pour la sortie par lots de données XML
J'ai fait un jeu de puzzle (comme) avec Tkinter of Python
Jeu de vie avec Python [je l'ai fait] (sur terminal et Tkinter)
FizzBuzz en Python3
J'ai fait un circuit simple avec Python (AND, OR, NOR, etc.)
Grattage avec Python
J'ai créé une bibliothèque qui lit facilement les fichiers de configuration avec Python
Statistiques avec python
J'ai fait Othello pour enseigner Python3 aux enfants (4)
J'ai fait un programme de gestion de la paie en Python!
Grattage avec Python
Type de téléchargement de partage HTTP réalisé avec Python
Python avec Go