Bonsoir, étant débutant, je bloque au niveau de la fonction partieJoueur, j'aimerais
Affiche: numéro du tour, nom du joueur, son total de la partie courante (inferieur `a 21)
– Lui propose de continuer ou d’arrêter et lit sa réponse
–Si le joueur continue, pioche la première carte de la pioche, calcule sa valeur, l’ajoute au total, vérifie la victoire ou la défaite (égale ou dépasse 21)
– Si le joueur a choisi d’arrêter ou a perdu, il faut le retirer de la liste des joueurs encore en jeu
Si quelqu'un pourrai m'aider s'il vous plaît
import random
#-----------------------------------------PAQUET DE CARTE-----------------------------------------------#
def paquet():
""" Définition d'un paquet de cartes """
cartes = [2,3,4,5,6,7,8,9,10,'As','Valet','Dame','Roi']
couleurs = ['coeur', 'carreau', 'pique', 'trefle']
liste_cartes = []
for couleur in couleurs:
for carte in cartes:
liste_cartes.append(f'{carte} de {couleur}')
return liste_cartes
def valeurCarte(carte):
"""Définition de la valeur des cartes"""
nom_carte = carte[0]
valeur = 0
for i in nom_carte:
liste_nb = ['2','3','4','5','6','7','8','9']
if i=='D' or i=='V' or i=='R' or i=='1':
valeur += 10
if i=='A':
pts = int(input("Valeur de l'As (1 ou 11): "))
while pts!=11 and pts!=1:
pts = int(input("1 ou 11: "))
valeur+=pts
if i in liste_nb:
valeur = i
return valeur
def initPioche(n):
""" n (nombre de joueur) paquet de carte mélanger représentant la pioche"""
pioche = []
for _ in range(n):
pioche.extend(paquet())
random.shuffle(pioche)
return pioche
def piochecarte(pioche,x=1):
""" pioche une carte"""
liste_carte_pioche = []
for _ in range(x):
liste_carte_pioche.append(pioche[0])
"""Retire la carte pioché de la pioche"""
pioche.pop(0)
return liste_carte_pioche
#-----------------------------------------JOUEURS ET SCORES-----------------------------------------------#
def initJoueurs(n):
Liste_joueurs = []
for i in range(n):
print("Nom du joueurs",1+i,end=' ')
Liste_joueurs.append(input())
return Liste_joueurs
def initScores(joueurs,v=0):
dico_score = {}
for i in joueurs:
dico_score[i] = v
return dico_score
def premierTour(liste_joueurs):
Dico_SCORE = initScores(liste_joueurs)
Pioche = initPioche(len(liste_joueurs))
for pio in Dico_SCORE:
carte_piochée = (piochecarte(Pioche,2))
Dico_SCORE[pio] = int(valeurCarte(carte_piochée[0]))+int(valeurCarte(carte_piochée[1]))
return Dico_SCORE
# a = initJoueurs(2)
# print(premierTour(a))
def gagnant(dico_joueurs):
meilleurs_score = 0
meilleurs_joueurs = "Croupier"
for i in dico_joueurs:
score = dico_joueurs[i]
if score > meilleurs_score and score <= 21:
meilleurs_score = score
meilleurs_joueurs = i
gagne = "Le gagnant est "+str(meilleurs_joueurs)+" avec "+ str(meilleurs_score)+" points"
elif score == meilleurs_score:
ret = "Tous les deux égaux"
return ret
#-----------------------------------------Tour d'un joueur-----------------------------------------------#
def continuer():
i = True
while i:
j = input('Voulez-vous continuer (O/N): ')
if j!='O':
i = False
def tourJoueur(j):
- Edité par ManuteaTAVITA 25 novembre 2021 à 18:20:32
tu as toutes les fonctions de base, il suffit presque uniquement de les appeler à tour de rôle.
On peut supposer que ta fonction partieJoueur prend en paramètre un joueur j
pour afficher le numéro du tour, tu as une fonction tourJoueur qui semble faire l'affaire
le nom du joueur est a priori simplement j (si j'en crois initJoueurs)
avec piocherCarte, tu va pouvoir calculer la valeur de la main du joueur
Cependant, quelques incohérences dès le départ (il doit y en avoir d'autres qui en découlent):
tourJoueur prend a priori un joueur, cette fonction appelle premierTour qui, elle, semble prendre une liste de joueurs
premierTour renvoie un dictionnaire de score (score étant la valeur des mains des joueurs, me semble-t-il) ; or dans tourJoueur, tu affectes son retour à une variable nb_tour, donc a priori un entier.
Tu devrais donc revérifier les fonctions de base avant (et si tu as un descriptif de ce qu'elles doivent faire, vérifier que ton code fait effectivement ce qui est décrit)
Qu'est-ce qui te bloque dans cette fonction? Es-ce que tu passes tous les joueurs dans la fonction? Je pense que c'est comme ça que je ferais. Il y a un problème, c'est quand on élimine un élément d'une liste qu'on est en train de parcourir. Je ferais donc une nouvelle liste de joueurs et j'ajoute les joueurs que je désire garder et c'est cette liste que je retourne.
Le Tout est souvent plus grand que la somme de ses parties.
black jack
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.