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
-----