Black Jack ajout d'un croupier à mon programme
Répondre à la discussion
Affichage des résultats 1 à 1 sur 1

Black Jack ajout d'un croupier à mon programme



  1. #1
    NaomieIo

    Black Jack ajout d'un croupier à mon programme


    ------

    Bonjour à tous,

    C'est la première fois que je demande de l'aide sur un forum, mais je commence à désespérer et j'espère que vous pourrez m'aider!

    Je suis en L3 Ingénierie Physique et un de nos projets de fin d'année est de créer un programme avec à la fois du Python et du LabVIEW, ma binôme et moi avons choisi de simuler une partie de Blackjack.
    Cependant nous avons un soucis avec la partie Python: nous avons un programme qui marche presque parfaitement(erreur qd tous les joueurs quittent la partie, mais je vais arranger ça), sauf qu'il n'y a pas de croupier mais que des joueurs qui jouent entre eux. Nous pensions naïvement que si nous faisions d'abord une première étape sans le croupier ça nous ferait gagner du temps, mais après des heures et des heures d'essais je n'arrive pas à faire fonctionner le programme avec croupier sans qu'une erreur apparaisse.

    Je ne peux hélas pas vous faire parvenir le fichier en .py car ça ne fonctionne pas sur ce site, mais je vous fait un copier coller ci-dessous avec le programme en entier (il est long! désolé!), et si quelqu'un a une idée ou une piste pour ajouter le croupier ça me sauverait la vie!

    Je vous remercie d'avance

    Naomie

    Code:
    #### ## INITIALISATION DE LA PARTIE
    #Partie A
    import random
    def paquet(): #Initialisation des différentes cartes
    	couleur = ["trèfle","carreau","coeur","pique"]
    	valeur = ["As","2","3","4","5","6","7","8","9","10","valet","dame","roi"]
    	liste = []
    	i=0
    	j=0
    	while i<len(couleur):
    		while j<len(valeur):
    			x=valeur[j] + " de " + couleur[i] #valeur complète de la carte
    			liste.append(x)
    			j+=1
    		j=0
    		i+=1
    	return liste #toutes les cartes sont répertoriées
    
    def valeur_carte(carte): #Choix valeur de l'as et valeur particulière des figures
    	if list(carte)[0]=="A":
    		valeur = int(input("Valeur de l'as, 1 ou 11? "))
    	elif list(carte)[0]=="1" or list(carte)[0]=="v" or list(carte)[0]=="r" or list(carte)[0]=="d":
    		valeur = 10 
    	else:
    		valeur = int(list(carte)[0])
    	return valeur #valeur finale de la carte
    
    def initPioche(n): #n est le nb de joueurs dans la partie
            pioche=[]
            for i in range(n):
                p=paquet()
                pioche.extend(p)
                random.shuffle(pioche)
            return pioche
    
    
    def pioche_carte(p,x=21):
        cartepioche=[]
        for i in range (0,x):
            cartepioche.append(pioche[0])
            pioche.pop(0)
        return cartepioche
    
    def initJoueurs(n): #Qui joue?
        joueurs=[]
        for i in range (n):
            nom= (input("Saisir le nom du joueur: "))
            joueurs.append(nom)
        return joueurs
    
    
    def initScores(joueurs, v=0): #score initial chaque joueur
        scores ={} #on crée un dictionnaire
        for i in range (len(joueurs)):
            scores[joueurs[i]]=v
        return scores
    
    
    
    def premierTour(joueurs): #début de la partie
        scores=initScores(joueurs)and initScoreCroupier(croupier)
        pioche=initPioche(len(joueurs))
    
        for i in range(len(joueurs)):
            print ("Tour de ", joueurs[i])#annonce qui joue
            cartes=pioche_carte(pioche,2)#on distribue d'abord 2 cartes par joueur
            print(cartes[0], cartes[1], sep="; ")
            v1=int(valeur_carte(cartes[0])) 
            v2=int(valeur_carte(cartes[1]))
            valeurtotale=v1+v2
            scores[joueurs[i]]=valeurtotale
        return scores
    
    def gagnants(scores):
            x=21
            gagn=[]
            noms=scores.keys()
            croupier=scores.keys()
            while gagn==[]:
                    
            return gagn
    #Partie B
    
    def continuer(): #Pour rejouer
        x=input("Voulez-vous encore tirer? Oui ou non? ")
        while x not in (["oui","non"]):
            x
        if x=="oui":
            return True
        if x=="non":
            return False
            
    
    def tourJoueur(j,scores,pioche,ljoueurs): #Annonce qui joue, et son score
        print("Tour de ", j," (votre score ",scores[j],"): ",sep="")
        if continuer()==True:
            carte=pioche_carte(pioche)
            print(carte[0])
            val=int(valeur_carte(carte[0]))
            scores[j]+=val
        if scores[j]>21:
            ljoueurs.remove(j)
        else:
            ljoueurs.remove(j)
    
    def tourComplet(nTour,scores,pioche,ljoueurs): #Décompte nb de tours
        print("Tour n°",nTour)
        i=0
        while i!=len(ljoueurs):
            v=len(ljoueurs)
            tourJoueur(ljoueurs[i],scores,pioche,ljoueurs)
            if v!=len(ljoueurs):
                i-=1
            i+=1
    
    def PartieFinie(ljoueurs): #Plus aucun joueur dans la partie
        if ljoueurs==[]:
            statut=True
        else:
            statut=False 
        return statut
    
    def partieComplete(ljoueurs, scores, pioche, victoires, mises, liste_totale_joueurs, portefeuille):
        nTour=2
        while PartieFinie(ljoueurs)==False:
            tourComplet(nTour,scores,pioche,ljoueurs)
            nTour+=1
        gagnants=gagnant(scores)
        if gagnants==[]:
            print("\nIl n'y a pas de gagnant!")
            for m in mises:
                portefeuille[m]+=mises[m]
            print("Les mises initiales vous sont rendues")
        else:
            ch=" et "
            print("\n\nLe(s) gagnant(s) est(sont): ",ch.join(gagnants))
            for i in gagnants: #nb de victoires par joueur
                victoires[i]+=1
            totalmises=0
            for j in mises: #calcul des mises
                totalmises+=mises[j]
            print("\nLes mises totales:",totalmises)
            for k in gagnants: #portefeuille du gagnant
                          if gagnants==croupier:
                                  print("Vous avez perdu!")
                          else:portefeuille[k]+=portefeuille[k]
        var=len(scores)
        for a in list(portefeuille):
            if portefeuille[a]<=0:#qd un joueur n'a plus d'argent: élimination
                joueurelimine=a
                print(a,"n'a plus d'argent: Vous êtes out!")
                liste_totale_joueurs.remove(a)
                del victoires[a]
                del scores[a]
            if len(scores)!=var:
                del portefeuille[joueurelimine]
    
        #DEBUT DU PROGRAMME PRINCIPAL
    
    rejouer="oui"
    njoueurs=int(input("Combien y a t'il de joueurs? "))
    ljoueurs=initJoueurs(njoueurs)
    croupier=initCroupier()
    liste_totale_joueurs=list(ljoueurs)
    victoires=initScores(ljoueurs)or initScoreCroupier
    portefeuille=initScores(ljoueurs,100)or initScores(croupier,100)
    while rejouer=="oui":
        ljoueurs=list(liste_totale_joueurs)
        pioche=initPioche(njoueurs)
        scores=initScores(ljoueurs)
        scores=premierTour(ljoueurs)
        #Les mises de chaque joueur, mise à jour du portefeuille
        mises={}
        print("Il est temps de miser!")
        for i in portefeuille:
            print(i,", combien voulez-vous miser? (en poche: ",portefeuille[i]," kopecs, et score: ",scores[i],")",sep="")
            mise=-1
            while mise<=0 or mise>portefeuille[i]:
                mise= int(input())
            mises[i]=mise
            portefeuille[i]-=mise
           
    
        partieComplete(ljoueurs,croupier,scores, pioche, victoires, mises, liste_totale_joueurs, portefeuille)
        print("\nscores de fin de partie: ")
        for i in scores:
            print(" ",i,":",scores[i])
        print("\nSomme d'argent détenue par chaque joueur: ")
        for i in portefeuille:
            print(" ",i,":",portefeuille[i],"kopecs")
    #Demander à un joueur si il veut partir
        partir= input("\n\n Est-ce que quelqu'un veut quitter la partie? ")
        while partir=="oui":
            joueurpartant=""
            while joueurpartant not in portefeuille:
                joueurpartant=input("Qui part?")
            print("Bravo ",joueurpartant,",vous partez en remportant ",portefeuille[joueurpartant]," kopecs!",sep="")
            liste_totale_joueurs.remove(joueurpartant)
            del victoires[joueurpartant]
            del scores[joueurpartant]
            del portefeuille[joueurpartant]
            while liste_totale_joueurs==[]:
                print("Fin du jeu")
                sys.exit()
            partir=input("Quelqu'un d'autre veut partir? ")
    
        print("Nombre de parties remportées: ")
        for p in victoires:
            print(" ",p,":",victoires[p],"partie(s) gagnée(s)")
        rejouer=input("Partie finie\nVoulez-vous rejouer? ")
        if rejouer=="oui":
            print("Nouvelle partie")
        else:
            print("Fin du jeu")
            sys.exit()
            
    #FIN DU PROGRAMME PRINCIPAL

    -----
    Dernière modification par JPL ; 03/12/2020 à 13h30. Motif: ajout de la balise Code (#) pour garder l’indentation

Discussions similaires

  1. [Analogique] Ajout d'une entrée aux/jack sur autoradio Kenwood
    Par Fabienlapiere dans le forum Électronique
    Réponses: 5
    Dernier message: 30/12/2016, 12h23
  2. Ajout d'une entrée aux/jack sur autoradio Kenwood
    Par invite17d933de dans le forum Électronique
    Réponses: 14
    Dernier message: 29/11/2009, 13h22
  3. TPE 1ereS black jack ?
    Par invite23960809 dans le forum TPE / TIPE et autres travaux
    Réponses: 3
    Dernier message: 06/03/2006, 16h18