Partage
  • Partager sur Facebook
  • Partager sur Twitter

black jack

    25 novembre 2021 à 18:19:16

    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

    • Partager sur Facebook
    • Partager sur Twitter
      25 novembre 2021 à 18:36:48

      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)
      • Partager sur Facebook
      • Partager sur Twitter
        25 novembre 2021 à 18:40:08

        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.
        • Partager sur Facebook
        • Partager sur Twitter

        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é.
        • Editeur
        • Markdown