J'ai essayé de faire une stratégie de blackjack tout en étudiant Python et en renforçant l'apprentissage. Il existe une stratégie basée sur la probabilité d'une stratégie de base, mais je vais essayer de la rattraper.
Je vais procéder comme ça
--Semble bien étudier la programmation (Les examens de fin d'études des débutants devraient développer le "Blackjack") --Comparer les stratégies post-apprentissage avec les stratégies de base (il existe un repère) --Blackjack je veux aller mieux
Le Blackjack est un jeu de table populaire dans le casino. Je vais brièvement présenter les règles.
Faites un blackjack comme celui-ci.
--Utilisez 6 paires de cartes à jouer --Fonction BET disponible (Cependant, le montant est fixé à 100 $. Le retour sera une récompense pour le renforcement de l'apprentissage.)
Le code entier est répertorié à la fin.
Générez une carte à jouer. Comment compter les points des cartes illustrées spéciales de blackjack est défini ici. A est également spécial, mais ici il est généré comme un point. Le score de A est déterminé en considérant le score des autres mains dans la classe Main.
class Card:
'''
Générer une carte
Numéros: A, 2-10, J, Q, K
Suie: pique, coeurs, diamants, clubs
'''
SUITS = '♠♥♦♣'
RANKS = range(1, 14) #Rang normal
SYMBOLS = "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"
POINTS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10] #Points pour Black Jack
def __init__(self, suit, rank):
self.suit = suit
self.rank = rank
self.index = suit + self.SYMBOLS[rank - self.RANKS[0]]
self.point = self.POINTS[rank - self.RANKS[0]]
def __repr__(self):
return self.index
Définissez NUM_DECK = 6
et générez un jeu de 6 jeux de cartes à jouer.
La lecture aléatoire est effectuée en même temps que la génération de deck.
class Deck:
'''
Deck avec des cartes mélangées (générer un deck)
'''
def __init__(self):
self.cards = [Card(suit, rank) \
for suit in Card.SUITS \
for rank in Card.RANKS]
if NUM_DECK > 1:
temp_cards = copy.deepcopy(self.cards)
for i in range(NUM_DECK - 1):
self.cards.extend(temp_cards)
random.shuffle(self.cards)
・ ・ ・ Abréviation
Ajoutez des cartes à votre main et calculez des points. Le jugement de la main douce (main comprenant A) est également inclus.
class Hand:
"""
Classe de main
"""
def __init__(self):
self.hand = []
self.is_soft_hand = False
def add_card(self, card):
#Le processus d'ajout d'une carte à votre main.
・ ・ ・ Abréviation
def check_soft_hand(self):
#Vérifiez s'il s'agit d'une main douce (main comprenant A)
・ ・ ・ Abréviation
def sum_point(self):
#Calculez les points dans votre main.
#Pour les mains douces, calculez à la fois quand A est 1 et quand A est 11.
・ ・ ・ Abréviation
def calc_final_point(self):
#Calculez des points en concurrence avec le concessionnaire
#Renvoie le dernier point pas BUST
・ ・ ・ Abréviation
def is_bust(self):
#Déterminez si votre main est BUST (plus de 21)
・ ・ ・ Abréviation
def deal(self, card):
#Traitement au moment de la transaction
・ ・ ・ Abréviation
def hit(self, card):
#Traitement au moment de la frappe
・ ・ ・ Abréviation
Des choix tels que Stand et Hit sont définis ici. Si vous souhaitez ajouter un fractionnement et une assurance non mis en œuvre, cliquez ici. En bonus, j'ai ajouté un mode de jeu automatique. Vous pouvez jouer avec l'IA appropriée décrite plus tard.
class Player:
def __init__(self):
self.hand = Hand()
self.chip = Chip()
self.done = False #Drapeau indiquant la fin du tour du joueur
self.hit_flag = False #Drapeau indiquant si le joueur a sélectionné Hit
self.is_human = False # True:Les gens jouent, faux:Lecture automatique
def init_player(self):
#Initialisez votre main et chaque drapeau
・ ・ ・ Abréviation
def deal(self, card):
#Traitement au stand
・ ・ ・ Abréviation
def hit(self, card):
#Traitement au moment de la frappe
・ ・ ・ Abréviation
def stand(self):
#Traitement au stand
・ ・ ・ Abréviation
def double_down(self, card):
#Traitement au moment de doubler
・ ・ ・ Abréviation
def surrender(self):
#Traitement au moment de la remise
・ ・ ・ Abréviation
Cela aurait pu être agréable d'être avec la classe Player. Je pensais que j'avais besoin d'une méthode propre à un concessionnaire, mais je n'en avais pas.
Échange de jetons après le match. Si vous gagnez, vous recevrez le double du montant que vous avez misé, et si vous perdez, vous perdrez la totalité du montant. S'il s'agit d'un match nul, le pari sera retourné au joueur tel quel.
class Chip:
def __init__(self):
self.balance = INITIAL_CHIP
self.bet = 0
def bet_chip(self, bet):
self.balance -= bet
self.bet = bet
def pay_chip_win(self):
self.balance += self.bet * 2
def pay_chip_lose(self):
self.balance = self.balance
def pay_chip_push(self):
self.balance += self.bet
Contient une IA adaptée pour la lecture automatique. Niveau bonus. C'est pour un test avant de renforcer l'apprentissage.
class AI:
・ ・ ・ Abréviation
def select_random3(self, hand, n):
if hand < 11:
selection = 'h' # hit
elif hand == 11 and n == 2:
selection = 'd' # double down
elif hand == 16 and n == 2:
selection = 'r' # surrender
elif hand > 17:
selection = 's' # stand
else:
r = random.randint(0, 1)
if r > 0.5:
selection = 'h' # hit
else:
selection = 's' # stand
return selection
C'est la fonction principale du Blackjack. Cela peut être difficile à voir car les méthodes liées à l'affichage sont mixtes. Il y a place à amélioration. La fonction player_step est également utilisée dans la fonction step du gymnase.
class Game:
def __init__(self):
self.game_mode = 0 # 0:En attente de démarrage, 1:En jeu, 2:Jeu terminé
self.deck = Deck()
self.player = Player()
self.dealer = Dealer()
self.judgment = 0 # 1:Gagner, 0:dessiner, -1:Perdre
self.game_count = 0
self.start()
self.message_on = True #self.player.is_human # True:Afficher un message sur la console, False:Ne pas afficher de messages sur la console
def start(self):
#Mélangez le jeu, Joueur,Initialiser le concessionnaire
・ ・ ・ Abréviation
def reset_game(self):
# Player,Réinitialiser la main du concessionnaire
・ ・ ・ Abréviation
def bet(self, bet):
#Paris des joueurs
・ ・ ・ Abréviation
def deal(self, n=2):
# Player,Distribuer les cartes au concessionnaire
・ ・ ・ Abréviation
def player_turn(self):
#Tour du joueur. Entrez l'action depuis la console ou décidez automatiquement avec l'IA appropriée
・ ・ ・ Abréviation
def player_step(self, action):
# Stand, Hit, Double down,Traitement selon la reddition
・ ・ ・ Abréviation
def show_card(self):
#Affichez la carte. La carte face cachée du croupier est affichée comme "?"
・ ・ ・ Abréviation
def dealer_turn(self):
#Au tour du concessionnaire. Piochez une carte jusqu'à ce que vous ayez 17 points ou plus
・ ・ ・ Abréviation
def open_dealer(self):
#Ouvrir la carte face cachée du croupier
・ ・ ・ Abréviation
def judge(self):
#Jugement de victoire ou de défaite
・ ・ ・ Abréviation
def pay_chip(self):
#Règlement de puce
・ ・ ・ Abréviation
def check_chip(self):
#Vérifiez si la possession du joueur est inférieure à la mise minimum (montant de la mise minimum)
#S'il est en dessous, terminez le jeu
・ ・ ・ Abréviation
def show_judgement(self):
#Montrez le résultat de la victoire ou de la défaite
・ ・ ・ Abréviation
def ask_next_game(self):
#Demandez si vous souhaitez continuer le jeu
・ ・ ・ Abréviation
def check_deck(self):
#Vérifiez le nombre de cartes restantes et mélangez s'il y en a peu
・ ・ ・ Abréviation
Écrivez le traitement le long du déroulement du jeu dans la fonction principale. Si vous faites cela, vous pouvez jouer au Blackjack. Au fait, ・ NUM_DECK = 6 # nombre de jeux ・ INITIAL_CHIP = 1000 # puce initiale ・ MINIMUM_BET = 100 # montant du pari minimum C'est dit.
def main():
game = Game()
game.start()
while game.game_mode == 1:
game.reset_game() #Réinitialiser divers
game.bet(bet=100) #pari
game.deal() #Distribuer des cartes
game.player_turn() #Tour du joueur
game.dealer_turn() #Tour du concessionnaire
game.judge() #Jugement de victoire ou de défaite
game.pay_chip() #Règlement des copeaux
game.check_chip() #Vérifiez le solde du joueur
game.ask_next_game() #Demandez si vous souhaitez continuer le jeu
game.check_deck() #Vérifiez le nombre de cartes restantes
print("Quitter BlackJack")
print(str(game.game_count) + "J'ai joué les temps de jeu")
return game.player.chip, game.game_count
Après Hit (h) ou Stand (s) ou Double down (d) ou Surrender (r):
Entrez les caractères du clavier pour décider de la sélection du joueur.
$Je parie 100
Le reste$900
Tour du joueur
Player : [♠A, ♦9] = [10, 20], soft card : True
Dealer : ♣6, ? = 6
Hit(h) or Stand(s) or Double down(d) or Surrender(r): s
Tour du concessionnaire
Player : [♠A, ♦9] = 20
Dealer : [♣6, ♥K] = 16
Tour du concessionnaire
Player : [♠A, ♦9] = 20
Dealer : [♣6, ♥K, ♥3] = 19
Le joueur gagne
Puce de possession du joueur$1100
Voulez-vous continuer? y/n: y
Le nombre de cartes restantes est de 307
$Je parie 100
Le reste$1000
Tour du joueur
Player : [♠2, ♥K] = [12], soft card : False
Dealer : ♥3, ? = 3
Hit(h) or Stand(s) or Double down(d) or Surrender(r): h
Tour du joueur
Player : [♠2, ♥K, ♥2] = [14], soft card : False
Dealer : ♥3, ? = 3
Hit(h) or Stand(s) or Double down(d) or Surrender(r): h
Tour du joueur
Player : [♠2, ♥K, ♥2, ♠Q] = [24], soft card : False
Dealer : ♥3, ? = 3
Player BUST
Le joueur perd
Puce de possession du joueur$1000
Voulez-vous continuer? y/n: y
301 cartes restantes
$Je parie 100
Le reste$900
Tour du joueur
Player : [♥7, ♥5] = [12], soft card : False
Dealer : ♠8, ? = 8
Hit(h) or Stand(s) or Double down(d) or Surrender(r): d
Tour du joueur
Player : [♥7, ♥5, ♠8] = [20], soft card : False
Dealer : ♠8, ? = 8
Le double vers le bas a été sélectionné. Double la mise
Le reste$800
Tour du concessionnaire
Player : [♥7, ♥5, ♠8] = 20
Dealer : [♠8, ♥2] = 10
Tour du concessionnaire
Player : [♥7, ♥5, ♠8] = 20
Dealer : [♠8, ♥2, ♣7] = 17
Le joueur gagne
Puce de possession du joueur$1200
Voulez-vous continuer? y/n: n
295 cartes restantes
Quitter BlackJack
J'ai joué au jeu 3 fois
Gardez-le pour vos archives.
blackjack.py
import random
import copy
#constant
NUM_DECK = 6 #Nombre de ponts
NUM_PLAYER = 1 #Nombre de joueurs
INITIAL_CHIP = 1000 #Puce initiale
MINIMUM_BET = 100
class Card:
'''
Générer une carte
Numéros: A, 2-10, J, Q, K
Suie: pique, coeurs, diamants, clubs
'''
SUITS = '♠♥♦♣'
RANKS = range(1, 14) #Rang normal
SYMBOLS = "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"
POINTS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10] #Points pour Black Jack
def __init__(self, suit, rank):
self.suit = suit
self.rank = rank
self.index = suit + self.SYMBOLS[rank - self.RANKS[0]]
self.point = self.POINTS[rank - self.RANKS[0]]
def __repr__(self):
return self.index
class Deck:
'''
Deck avec des cartes mélangées (générer un deck)
'''
def __init__(self):
self.cards = [Card(suit, rank) \
for suit in Card.SUITS \
for rank in Card.RANKS]
if NUM_DECK > 1:
temp_cards = copy.deepcopy(self.cards)
for i in range(NUM_DECK - 1):
self.cards.extend(temp_cards)
random.shuffle(self.cards)
def draw(self, n=1):
'''
Une fonction qui soustrait le nombre spécifié de feuilles du jeu
'''
cards = self.cards[:n]
del self.cards[:n] #Supprimer la carte piochée du paquet
return cards
def shuffle(self):
'''
Mélangez le jeu
'''
random.shuffle(self.cards)
return
def count_cards(self):
"""
Renvoie le nombre restant de jeux
"""
count = len(self.cards)
return count
class Hand:
"""
Classe de main
"""
def __init__(self):
self.hand = []
self.is_soft_hand = False
def add_card(self, card):
self.hand.append(card)
def check_soft_hand(self):
"""
Vérifiez s'il s'agit d'une main douce (main comprenant A)
"""
hand_list = []
for i in range(len(self.hand)):
hand_list.append(self.hand[i].point)
hand_list.sort() #Triez votre main par ordre croissant
if hand_list[0] == 1 and sum(hand_list[1:]) < 11: #D'une main douce
self.is_soft_hand = True
else:
self.is_soft_hand = False
def sum_point(self):
"""
Renvoie la valeur totale des points
"""
self.check_soft_hand()
hand_list = []
for i in range(len(self.hand)):
hand_list.append(self.hand[i].point)
hand_list.sort() #Triez votre main par ordre croissant
s1 = 0 #Valeur initiale lors du comptage de A comme 1
for i in range(len(self.hand)):
s1 += self.hand[i].point
if self.is_soft_hand == True: #D'une main douce
s2 = 11 #Comptez le premier A comme 11
for i in range(len(hand_list)-1):
s2 += hand_list[i+1]
s = [s1, s2]
else:
s = [s1]
return s
def calc_final_point(self):
"""
Renvoie le dernier point pas BUST
"""
temp_point = self.sum_point()
if max(temp_point) > 22:
p = temp_point[0] #Si celui avec les plus gros points est BUST, celui avec les plus petits points
else:
p = max(temp_point)
return p
def is_bust(self):
"""
Déterminez si c'est BUST
"""
if min(self.sum_point()) > 21: #Si le point le plus petit dépasse 21
return True
else:
return False
def deal(self, card):
"""
Ajoutez la carte distribuée à votre main
"""
for i in range(len(card)):
self.add_card(card[i])
def hit(self, card):
#Frappez un par un
if len(card) == 1:
self.add_card(card[0])
else:
print("Le nombre de cartes est incorrect")
class Player:
def __init__(self):
self.hand = Hand()
self.chip = Chip()
self.done = False #Drapeau indiquant la fin du tour du joueur
self.hit_flag = False #Drapeau indiquant si le joueur a sélectionné Hit
self.is_human = True # True:Les gens jouent, faux:Lecture automatique
def init_player(self):
self.hand = Hand()
self.done = False
self.hit_flag = False
def deal(self, card):
self.hand.deal(card)
def hit(self, card):
#Ajoutez 1 carte à votre main
self.hand.hit(card)
self.hit_flag = True
def stand(self):
#Fin de tour
self.done = True
def double_down(self, card):
#Doublez la mise et ne frappez qu'une seule fois pour terminer le tour
self.chip.balance -= self.chip.bet
self.chip.bet = self.chip.bet * 2
self.hand.hit(card)
self.done = True #Faites-en une règle selon laquelle vous ne pouvez toucher qu'une seule fois après avoir doublé
def surrender(self):
#Réduire de moitié la mise (remettre la moitié de la mise en main) et terminer le tour
# self.chip.balance += int(self.chip.bet / 2)
self.chip.bet = int(self.chip.bet / 2)
self.chip.balance += self.chip.bet
self.done = True
def insurance(self):
#Non mis en œuvre
pass
def split(self):
#Non mis en œuvre
pass
class Dealer:
def __init__(self):
self.hand = Hand()
def init_dealer(self):
self.hand = Hand()
def deal(self, card):
self.hand.deal(card)
def hit(self, card):
self.hand.hit(card)
class Chip:
def __init__(self):
self.balance = INITIAL_CHIP
self.bet = 0
def bet_chip(self, bet):
#Si vous accrochez Chip, réduisez de la main
self.balance -= bet
self.bet = bet
def pay_chip_win(self):
#Lorsque vous gagnez, vous obtenez deux fois plus que BET
self.balance += self.bet * 2
def pay_chip_lose(self):
#Quand tu perds, tu perds tous les paris
self.balance = self.balance
def pay_chip_push(self):
#Lors du tirage, retournez par le montant de BET
self.balance += self.bet
class AI:
def select_random1(self):
r = random.randint(0, 1)
if r > 0.5:
selection = 'h' # hit
else:
selection = 's' # stand
return selection
def select_random2(self, hand):
if hand <= 11:
selection = 'h'
else:
r = random.randint(0, 1)
if r > 0.5:
selection = 'h' # hit
else:
selection = 's' # stand
return selection
def select_random3(self, hand, n):
if hand < 11:
selection = 'h' # hit
elif hand == 11 and n == 2:
selection = 'd' # double down
elif hand == 16 and n == 2:
selection = 'r' # surrender
elif hand > 17:
selection = 's' # stand
else:
r = random.randint(0, 1)
if r > 0.5:
selection = 'h' # hit
else:
selection = 's' # stand
return selection
class Game:
def __init__(self):
self.game_mode = 0 # 0:En attente de démarrage, 1:En jeu, 2:Jeu terminé
self.deck = Deck()
self.player = Player()
self.dealer = Dealer()
self.judgment = 0
self.game_count = 0
self.start()
self.message_on = True #self.player.is_human # True:Afficher un message sur la console, False:Ne pas afficher de messages sur la console
def start(self):
self.deck.shuffle()
self.game_mode = 1
self.player = Player()
self.dealer = Dealer()
self.game_count = 0
def reset_game(self):
self.player.init_player()
self.dealer.init_dealer()
self.game_count += 1
def bet(self, bet):
self.player.chip.bet_chip(bet=bet)
if self.message_on:
print("$" + str(self.player.chip.bet) + "je parie")
print("Le reste$" + str(self.player.chip.balance))
#Distribuer des cartes
def deal(self, n=2):
'''
Distribuer des cartes
'''
card = self.deck.draw(n)
self.player.deal(card)
# print(self.player.hand.hand)
card = self.deck.draw(n)
self.dealer.deal(card)
# print(self.dealer.hand.hand)
self.judgment = 0 #Jugement de victoire ou de défaite
self.player.done = False
self.show_card()
#Tour du joueur
def player_turn(self):
'''
Tour du joueur
'''
if self.player.hand.calc_final_point() == 21: #Si le total est de 21, passez immédiatement au tour du croupier
self.player.done = True
while not self.player.done and not self.player.hand.is_bust():
if self.player.is_human is True:
action = input("Hit(h) or Stand(s) or Double down(d) or Surrender(r): ")
elif self.player.is_human is True and self.player.hit_flag:
action = input("Hit(h) or Stand(s): ") #Coup après coup/se tenir debout seulement
else:
action = AI().select_random3(hand=self.player.hand.calc_final_point(), n=len(self.player.hand.hand))
self.player_step(action=action)
def player_step(self, action):
if action == 'h': # Hit
card = self.deck.draw(1)
self.player.hit(card)
self.show_card()
if self.player.hand.calc_final_point() == 21: #Lorsque le score total atteint 21, vous ne pouvez plus frapper
self.player.done = True
if self.player.hand.is_bust():
self.player.done = True
self.judgment = -1 #Si le joueur BUST, perd immédiatement
if self.message_on:
print("Player BUST")
elif action == 's': # Stand
self.player.stand()
elif action == 'd' and self.player.hit_flag is False: # Double down.Oui si Hit n'est pas sélectionné
card = self.deck.draw(1)
if self.player.chip.balance >= self.player.chip.bet: #Double Down est possible si le solde est supérieur au montant du pari
self.player.double_down(card)
self.show_card()
if self.message_on:
print("Le double vers le bas a été sélectionné. Double la mise")
print("Le reste$" + str(self.player.chip.balance))
if self.player.hand.is_bust():
self.player.done = True
self.judgment = -1 #Si le joueur BUST, perd immédiatement
if self.message_on:
print("Player BUST")
else: #Frapper si le solde est inférieur au pari
print("Frappez parce qu'il n'y a pas assez de jetons")
self.player.hit(card)
self.show_card()
if self.player.hand.calc_final_point() == 21: #Lorsque le score total atteint 21, vous ne pouvez plus frapper
self.player.done = True
if self.player.hand.is_bust():
self.player.done = True
self.judgment = -1 #Si le joueur BUST, perd immédiatement
if self.message_on:
print("Player BUST")
elif action == 'r' and self.player.hit_flag is False: # Surrender.Oui si Hit n'est pas sélectionné
self.player.surrender()
self.judgment = -1 #Perdu parce que j'ai choisi Surrender
if self.message_on:
print("Remise sélectionnée")
else:
if self.message_on:
print("Choisissez la bonne option")
def show_card(self):
'''
Afficher la carte du joueur
'''
if self.message_on:
print("Tour du joueur")
print("Player : " + str(self.player.hand.hand) + " = " +
str(self.player.hand.sum_point()) + ", soft card : " + str(self.player.hand.is_soft_hand))
print("Dealer : " + str(self.dealer.hand.hand[0].index) +
", ? = " + str(self.dealer.hand.hand[0].point))
else:
pass
def dealer_turn(self):
'''
Tour du concessionnaire
'''
if self.judgment == -1:
return
self.open_dealer()
while self.dealer.hand.calc_final_point() < 17 and self.judgment == 0:
card = self.deck.draw(1)
self.dealer.hit(card)
self.open_dealer()
if self.dealer.hand.calc_final_point() > 21:
self.judgment = 1
if self.message_on:
print("Dealer BUST")
def open_dealer(self):
'''
Ouvrez une carte fermée
'''
if self.message_on:
print("Tour du concessionnaire")
print("Player : " + str(self.player.hand.hand) + " = " +
str(self.player.hand.calc_final_point()))
print("Dealer : " + str(self.dealer.hand.hand) + " = " +
str(self.dealer.hand.calc_final_point()))
else:
pass
def judge(self):
'''
Jugement de victoire ou de défaite
'''
if self.judgment == 0 and self.player.hand.calc_final_point() > \
self.dealer.hand.calc_final_point():
self.judgment = 1
elif self.judgment == 0 and self.player.hand.calc_final_point() < \
self.dealer.hand.calc_final_point():
self.judgment = -1
elif self.judgment == 0 and self.player.hand.calc_final_point() == \
self.dealer.hand.calc_final_point():
self.judgment = 0
if self.message_on:
self.show_judgement()
def pay_chip(self):
previous_chip = self.player.chip.balance
if self.judgment == 1: # Player win
self.player.chip.pay_chip_win()
elif self.judgment == -1: # Player lose
self.player.chip.pay_chip_lose()
elif self.judgment == 0: # Push
self.player.chip.pay_chip_push()
if self.message_on:
print("Puce de possession du joueur$" + str(self.player.chip.balance))
reward = self.player.chip.balance - previous_chip #Récompenses gagnées dans ce jeu
return reward
def check_chip(self):
if self.player.chip.balance < MINIMUM_BET:
self.game_mode = 2
if self.message_on:
print("Le jeu se termine car le jeton est en dessous de la mise minimum")
def show_judgement(self):
'''
Affichage de la victoire ou de la défaite
'''
if self.message_on:
print("")
if self.judgment == 1:
print("Le joueur gagne")
elif self.judgment == -1:
print("Le joueur perd")
elif self.judgment == 0:
print("dessiner")
print("")
else:
pass
def ask_next_game(self):
'''
Demandez si vous souhaitez continuer le jeu
'''
if self.player.is_human == True:
while self.game_mode == 1:
player_input = input("Voulez-vous continuer? y/n: ")
if player_input == 'y':
break
elif player_input == 'n':
self.game_mode = 2
break
else:
print('y/Veuillez entrer n')
else:
pass #Continuer avec la lecture automatique
print('Le nombre de cartes restantes' + str(self.deck.count_cards()))
print("")
def check_deck(self):
'''
Vérifiez le nombre de cartes restantes et mélangez s'il y en a peu
'''
if self.deck.count_cards() < NUM_PLAYER * 10 + 5:
self.deck = Deck()
if self.message_on:
print("Initialisation du deck")
print('Le nombre de cartes restantes' + str(self.deck.count_cards()))
print("")
def main():
game = Game()
game.start()
while game.game_mode == 1:
game.reset_game() #Réinitialiser divers
game.bet(bet=100) #pari
game.deal() #Distribuer des cartes
game.player_turn() #Tour du joueur
game.dealer_turn() #Tour du concessionnaire
game.judge() #Jugement de victoire ou de défaite
game.pay_chip() #Règlement des copeaux
game.check_chip() #Vérifiez le solde du joueur
game.ask_next_game() #Demandez si vous souhaitez continuer le jeu
game.check_deck() #Vérifiez le nombre de cartes restantes
print("Quitter BlackJack")
print(str(game.game_count) + "J'ai joué les temps de jeu")
return game.player.chip, game.game_count
if __name__ == '__main__':
main()
J'ai fait un blackjack avec Python. J'ai également essayé de mettre en œuvre Double down et Surrender pour me rapprocher le plus possible de la stratégie de base. Je veux ajouter Split un jour. J'ai ajouté la fonction BET en supposant que j'apprendrai, mais même si je n'ai aucun argent, cela double, etc. De nombreux bugs ont été trouvés et il était difficile de les corriger. (Veuillez préciser s'il y a encore des bogues)
Ensuite, enregistrez le blackjack créé cette fois comme votre propre environnement dans la salle de gym d'OpenAI. Essayez de faire une stratégie de blackjack en renforçant l'apprentissage (② Enregistrez l'environnement dans la salle de sport)
Recommended Posts