Aide pour blackjack
Fermé
ibokil
Messages postés
5
Date d'inscription
vendredi 3 mai 2019
Statut
Membre
Dernière intervention
10 juin 2019
-
3 mai 2019 à 22:50
ibokil Messages postés 5 Date d'inscription vendredi 3 mai 2019 Statut Membre Dernière intervention 10 juin 2019 - 10 juin 2019 à 11:15
ibokil Messages postés 5 Date d'inscription vendredi 3 mai 2019 Statut Membre Dernière intervention 10 juin 2019 - 10 juin 2019 à 11:15
A voir également:
- Black jack python
- Blackjack-Android - Télécharger - Jeux vidéo
3 réponses
ibokil
Messages postés
5
Date d'inscription
vendredi 3 mai 2019
Statut
Membre
Dernière intervention
10 juin 2019
3
Modifié le 10 juin 2019 à 11:16
Modifié le 10 juin 2019 à 11:16
Bonjour ,
Merci pour les aides apportés.
Voici mon programme Final pour ceux que ça intéresse. sous python(3.5.2.1)
Merci pour les aides apportés.
Voici mon programme Final pour ceux que ça intéresse. sous python(3.5.2.1)
#The BlackJack Game from random import * #pour indiquer qu'on fait intervenir des valeurs au hasard, (d'ou le random=hasard) prenom = input("Bienvenue dans le jeu Black jack, Entrez votre prénom : ") print ("Bonjour,", prenom) print() valeur = [ 'AS', '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '10' ,'Valet','Dame','Roi'] couleur = [' de Carreau ',' de Pique ',' de Trèfle ',' de Coeur'] list = [] #----------------------------------- (1) : Mise du joueurs -------------------------------------------- mise_1 = int(input("Mise d'argent du joueur (en e) :")) # ---------------------------------(2) : Valeure des cartes-------------------------------------------- def score(carte) : if carte[0] == '0' : return int(0) elif carte[0] == 'AS' : AS = input("Une carte AS a ete tiree , quel valeure lui attribuer, 1 ou 11 ?") if AS == '1' : return int(1) else : return int(11) elif carte[0] == '1': return int(1) elif carte[0] == '2': return int(2) elif carte[0] == '3': return int(3) elif carte[0] == '4': return int(4) elif carte[0] == '5': return int(5) elif carte[0] == '6': return int(6) elif carte[0] == '7': return int(7) elif carte[0] == '8': return int(8) elif carte[0] == '9': return int(9) elif carte[0] in ('10' , 'Valet' , 'Dame' , 'Roi'): return int(10) #-------------------------------- (3) : Reception des cartes-------------------------------------------- print("Chaque joueur recoit 2 Cartes !" ) print("Commencons par le Croupier") print() # pour faire des espaces (aerer) # A-Croupier # Reception de la premiere Carte (Croupier) carte1_Croupier= sample (valeur,1)+ sample (couleur,1) #"sapmle" est une fonction du random, pour tirer une valeur au hasard, parmi la liste proposee print("Croupier, Voici votre premiere carte : ") print(carte1_Croupier) # Reception de la deuxieme carte (Croupier) carte2_Croupier = sample (valeur,1) + sample (couleur,1) print("Voici la seconde : ") print(carte2_Croupier) # Total des cartes (Croupier) total_cartes_Croupier = score(carte1_Croupier) + score(carte2_Croupier) print("Le score de Croupier est de ",total_cartes_Croupier) print() # B-joueur # Reception de la premiere Carte (joueur1) carte1_j1= sample (valeur,1)+sample (couleur,1) print(prenom , "voici votre premiere carte : ") print(carte1_j1) # Reception de la deuxieme carte (joueur1) carte2_j1 = sample (valeur,1) + sample (couleur,1) print("Voici la seconde carte : ") print(carte2_j1) # Total des cartes (joueur1) total_cartes_j1 = score(carte1_j1) + score(carte2_j1) print(prenom ,", votre score est de ",total_cartes_j1) print() # --------------------------------------(4) : Addition des cartes----------------------------------------- nvlle_carte = input(" Quel est votre choix :'tirer carte'=1 , 'Main satisaisante' =2 ou 'Doubler la mise =3 ?") total_cartes2_Croupier = total_cartes_Croupier total_cartes2_j1 =total_cartes_j1 # A-Score Final du Croupier if total_cartes_Croupier <= 16: carte3_Croupier = sample (valeur,1) + sample (couleur,1) print("Croupier a un score inferieur ou egal a 16, donc il tire une nouvelle carte :" ,carte3_Croupier) total_cartes2_Croupier = score(carte1_Croupier) + score(carte2_Croupier) + score(carte3_Croupier) print() print("Croupier, Voici le nouveau score :" , total_cartes2_Croupier) print() # B-Score Finale du Joueur 1 if nvlle_carte == "1" : print(prenom , ", voici votre 3e carte :") carte3_j1 = sample (valeur,1) + sample (couleur,1) print(carte3_j1) total_cartes2_j1 = score(carte1_j1) + score(carte2_j1) + score(carte3_j1) print() print(prenom," Voici votre nouveau score :" , total_cartes2_j1) print() if nvlle_carte == "2" : total_cartes2_j1 = total_cartes_j1 print() print(prenom,"Voici votre nouveau score : ",total_cartes2_j1) if nvlle_carte == "3" : carte3_j1 = sample (valeur,1) + sample (couleur,1) print(carte3_j1) mise_1 = mise_1*2 total_cartes2_j1 = score(carte1_j1) + score(carte2_j1) + score(carte3_j1) print() print(prenom," Voici votre nouveau score :" , total_cartes2_j1) # ----------------------------(5) : Qui est le vainqueur ?------------------------------------------- # A-A propos du Black Jack while 1 : if total_cartes2_j1 == 21 : print() print('Blackjack!', prenom , 'a remporter la partie, voici votre argent : ' , mise_1*2 , 'e') break if total_cartes2_Croupier == 21 : print() print('Blackjack!, Le Croupier remporte la partie ! et vous perdez ') break # B-L'egalite if total_cartes2_j1 == total_cartes2_Croupier : # En cas d'egalite, Pour La somme final du croupier print() print('Score nul, Personne ne gagne !!!! ') break if total_cartes_2_j2 == total_cartes_Croupier:# Pour la premiere somme du croupier print() print('Personne gagne !!!! ') break # C-Score le plus elevee, inferieur a 21 if 21 > total_cartes2_Croupier > total_cartes2_j1 : print() print("Croupier ",total_cartes2_Croupier, " est superieur a vous",total_cartes2_j1) print("Croupier Gagne!!") break if 21 > total_cartes2_j1 > total_cartes2_Croupier: print() print("Vous etes superieur avec",total_cartes2_j1," a ", total_cartes2_Croupier) print("Vous gagnez, " , mise_1*2 ,'euros') print("fin iiiiiii") break if total_cartes2_Croupier > 21: print('Croupier PERD , Vous gagnez!') break if total_cartes2_j1 > 21 : print('Vous depassez 21 , vous perdez !') print("Vous perdez", mise_1, "euros, Croupier remporte la partie") break
quent217
Messages postés
421
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
1 mars 2024
347
5 mai 2019 à 17:46
5 mai 2019 à 17:46
Bonjour,
la fonction sum prends en paramètres une liste de nombre et les additionnes entre eux.
Par exemple
Dans votre cas, il y a 2 problèmes. D'abord,
Ensuite,
Plutôt que d'essayer de trouver le score d'une carte à partir du texte, je vous conseille de garder toutes les cartes sous une forme qui permet de trouver facilement sa valeur, par exemple un couple sous la forme
ou pour faire plus court
Une fois que vous avez fait tout ça, vous n'avez plus qu'à calculer le score de chaque carte de la liste puis additionner tous les résultats.
la fonction sum prends en paramètres une liste de nombre et les additionnes entre eux.
Par exemple
sum([1, 2, 3])va donner 6.
Dans votre cas, il y a 2 problèmes. D'abord,
Croupierdonneest une liste donc
listqui est égale à
[Croupierdonne]est une liste de listes. C'est pour ça que vous avez une erreur.
Ensuite,
Croupierdonnene contient pas des entiers mais des chaines caractères, ce qui va aussi poser problème. J'imagine que votre fonction chiffre est censé dire à quelle score correspond une carte mais dans l'état actuel de votre programme, cette fonction ne fait absolument rien.
Plutôt que d'essayer de trouver le score d'une carte à partir du texte, je vous conseille de garder toutes les cartes sous une forme qui permet de trouver facilement sa valeur, par exemple un couple sous la forme
(4, "trefle")pour un 4 de trefle et
(11, "coeur")pour un valet de coeur, ou alors
("4", "trefle")pour un 4 de trefle et
("valet", "coeur")pour un valet de coeur. Ensuite vous pouvez faire une fonction qui teste correctement le score associé à une carte en faisant
def score(carte): if carte[0] == "1": return 1 # etc. elif carte[0] == "roi": return 10
ou pour faire plus court
def score(carte): if carte[0].isdigit(): return int(carte[0]) else: return 10
Une fois que vous avez fait tout ça, vous n'avez plus qu'à calculer le score de chaque carte de la liste puis additionner tous les résultats.
ibokil
Messages postés
5
Date d'inscription
vendredi 3 mai 2019
Statut
Membre
Dernière intervention
10 juin 2019
3
5 mai 2019 à 18:49
5 mai 2019 à 18:49
Bonjour,
Dans un premier temps, merci pour votre réponse.
Dans un second temps , j'ai appliqué du moins j’espère ce que vous m'avez dit et j'obtient cela :
Or voila j'ai toujours le souci d'addition, sans être impolis pouvez-vous encore m'aider et m'expliquer comment faire ?
Cordialement
Dans un premier temps, merci pour votre réponse.
Dans un second temps , j'ai appliqué du moins j’espère ce que vous m'avez dit et j'obtient cela :
from random import* valeur= [("AS","trefle"),(2,"trefle"),(3,"trefle"),(4,"trefle"),(5,"trefle"),(6,"trefle"),(7,"trefle"),(8,"trefle"),(9,"trefle"),(10,"trefle"),(10,"trefle roi"),(10,"trefle dame"),(10,"trefle valet"),("AS","pique"),(2,"pique"),(3,"pique"),(4,"pique"),(5,"pique"),(6,"pique"),(7,"pique"),(8,"pique"),(9,"pique"),(10,"pique"),(10,"pique roi"),(10,"pique valet"),(10,"pique dame"),("AS","carreau"),(2,"carreau"),(3,"carreau"),(4,"carreau"),(5,"carreau"),(6,"carreau"),(7,"carreau"),(8,"carreau"),(9,"carreau"),(10,"carreau"),(10,"carreau roi"),(10,"carreau valet"),(10,"carreau dame"),("AS","coeur"),(2,"coeur"),(3,"coeur"),(4,"coeur"),(5,"coeur"),(6,"coeur"),(7,"coeur"),(8,"coeur"),(9,"coeur"),(10,"coeur"),(10,"coeur roi"),(10,"coeur dame"),(10,"coeur valet")] carte= [] for v in valeur: carte.append(str (v)) print(carte) #Carte du premier tour print("chaque player recois 2 carte") Nombrecarte = 1 carte_1 = sample (carte,Nombrecarte) print("Voila votre premiere cartes : ") print(carte_1) #Carte du second tours Nombrecarte = 1 carte_2 = sample (carte,Nombrecarte) print("Voila votre seconde cartes : ") print(carte_2) #Carte total: def score(valeur): sum = 0 for c in valeur: if valeur in ('roi','valet','dame'): sum += 10 else: sum += int(valeur) print(score) for c in valeur: if sum <= 10: sum += 11 else: sum += 1 return sum score=sum([carte_1+carte_2]) print(score)
Or voila j'ai toujours le souci d'addition, sans être impolis pouvez-vous encore m'aider et m'expliquer comment faire ?
Cordialement
ibokil
Messages postés
5
Date d'inscription
vendredi 3 mai 2019
Statut
Membre
Dernière intervention
10 juin 2019
3
6 mai 2019 à 01:52
6 mai 2019 à 01:52
Re-Bonsoir,
Navré de vous dérangez mais je pense que vous attendiez beaucoup plus un programme comme celui-ci ? or j'arrive toujours pas à additionner mes deux cartes.
Navré de vous dérangez mais je pense que vous attendiez beaucoup plus un programme comme celui-ci ? or j'arrive toujours pas à additionner mes deux cartes.
from random import* import os import random carte= [("AS","trefle"),(2,"trefle"),(3,"trefle"),(4,"trefle"),(5,"trefle"),(6,"trefle"),(7,"trefle"),(8,"trefle"),(9,"trefle"),(10,"trefle"),(10,"trefle roi"),(10,"trefle dame"),(10,"trefle valet"),("AS","pique"),(2,"pique"),(3,"pique"),(4,"pique"),(5,"pique"),(6,"pique"),(7,"pique"),(8,"pique"),(9,"pique"),(10,"pique"),(10,"pique roi"),(10,"pique valet"),(10,"pique dame"),("AS","carreau"),(2,"carreau"),(3,"carreau"),(4,"carreau"),(5,"carreau"),(6,"carreau"),(7,"carreau"),(8,"carreau"),(9,"carreau"),(10,"carreau"),(10,"carreau roi"),(10,"carreau valet"),(10,"carreau dame"),("AS","coeur"),(2,"coeur"),(3,"coeur"),(4,"coeur"),(5,"coeur"),(6,"coeur"),(7,"coeur"),(8,"coeur"),(9,"coeur"),(10,"coeur"),(10,"coeur roi"),(10,"coeur dame"),(10,"coeur valet")] Croupier = [] Joueur = [] score = 0 def score(carte): if carte[0] == "1": return 1 if carte[1] == "2": return 2 if carte[2] == "3": return 3 if carte[3] == "4": return 4 if carte[4] == "5": return 5 if carte[5] == "6": return 6 if carte[6] == "7": return 7 if carte[7] == "8": return 8 if carte[8] == "9": return 9 if carte[9] == "10": return 10 elif carte[10] == "roi": return 10 elif carte[11] == "dame": return 10 elif carte[12] == "valet": return 10 for v in carte: Joueur.append(str (v)) #Carte du premier tour print("chaque player recois 2 carte") Nombrecarte = 1 carte_1 = sample (carte,Nombrecarte) print("Voila votre premiere cartes : ") print(carte_1) #Carte du second tours Nombrecarte = 1 carte_2 = sample (carte,Nombrecarte) print("Voila votre seconde cartes : ") print(carte_2) #vos deux cartes les_deux_cartes = carte_1 + carte_2 print(les_deux_cartes) score= carte_1 + carte_2 print(score)
quent217
Messages postés
421
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
1 mars 2024
347
>
ibokil
Messages postés
5
Date d'inscription
vendredi 3 mai 2019
Statut
Membre
Dernière intervention
10 juin 2019
6 mai 2019 à 18:30
6 mai 2019 à 18:30
J'ai l'impression que mon explication n'était pas suffisament claire donc je vais rééxpliquer ^^
Si on prend par exemple la carte "roi de trefle", ce que j'appelle la valeur c'est "roi", la couleur c'est "trefle" et le score c'est ce que vous voulez additionner donc 10 pour le roi si j'ai bien compris.
Ensuite pour representer les cartes je vous ai proposé 2 possibilités :
Dans tous les cas il ne faut pas mélanger les 2 donc soit vous mettez des entiers partout soit vous mettez des chaines de caractère partout. Donc pas
Pour créer la liste des cartes vous pouvez faire comme vous aviez fait la première fois, c'est à dire faire une liste de couleur et une liste de valeur et faire des boucles pour créer toutes les cartes, il faut juste modifier ce que vous aviez mis dans la liste valeur et le contenu des boucles.
Ensuite dans votre fonction score vous avez des choses comme ça
la carte passé en paramètre est justement l'une des cartes que vous avez créée avant donc sous la forme
Là où je veux en venir, c'est que
Je vous invite donc à revoir les exemples de fonction score que j'ai donné dans mon message précédent et à la refaire en prennant en compte ces nouvelles informations.
Pour rappel : la fonction score doit donner le score (donc un entier) d'une carte passé en paramètre (toujours sous la forme
Pour finir, pour additionner 2 cartes, vous voulez en fait additionner le score de ces cartes (c'est à ça qu'il sert le score) donc vous faites
J'éspère que cette explication est plus claire et vous permettra de faire ce que vous voulez faire.
Si on prend par exemple la carte "roi de trefle", ce que j'appelle la valeur c'est "roi", la couleur c'est "trefle" et le score c'est ce que vous voulez additionner donc 10 pour le roi si j'ai bien compris.
Ensuite pour representer les cartes je vous ai proposé 2 possibilités :
("roi", "trefle")ou
(13, "trefle"). Dans les 2 cas c'est un couple composé de la valeur puis de la couleur mais le score n'est pas enregistré. Dans mon exemple le 13 représente le roi (valet = 11, dame = 12, roi = 13).
Dans tous les cas il ne faut pas mélanger les 2 donc soit vous mettez des entiers partout soit vous mettez des chaines de caractère partout. Donc pas
[("AS","trefle"),(2,"trefle"),...].
Pour créer la liste des cartes vous pouvez faire comme vous aviez fait la première fois, c'est à dire faire une liste de couleur et une liste de valeur et faire des boucles pour créer toutes les cartes, il faut juste modifier ce que vous aviez mis dans la liste valeur et le contenu des boucles.
Ensuite dans votre fonction score vous avez des choses comme ça
if carte[9] == "10": return 10
la carte passé en paramètre est justement l'une des cartes que vous avez créée avant donc sous la forme
("roi", "trefle"). Ce que vous avez écrit me fait penser que vous ne savez pas ce que signifie cette notation. Il s'agit de tuple. Ce sont en fait comme des listes mais qu'on ne peut pas modifier. Si vous voulez, vous pouvez remplacer
("roi", "trefle")par
["roi", "trefle"]et ça fonctionnera de la même manière.
Là où je veux en venir, c'est que
carte[0]donne
"roi"(premier élément du tuple ou de la liste) et
carte[1]donne
"trefle"(deuxième élément du tuple ou de la liste) mais
carte[9]ça n'existe pas car il n'y a que 2 éléments.
Je vous invite donc à revoir les exemples de fonction score que j'ai donné dans mon message précédent et à la refaire en prennant en compte ces nouvelles informations.
Pour rappel : la fonction score doit donner le score (donc un entier) d'une carte passé en paramètre (toujours sous la forme
("roi", "trefle")). Par exemple si la carte est
("roi", "trefle")le score retourné est
10, si la carte est
("5", "pique")le score retourné est
5.
Pour finir, pour additionner 2 cartes, vous voulez en fait additionner le score de ces cartes (c'est à ça qu'il sert le score) donc vous faites
les_deux_cartes = score(carte_1) + score(carte_2). Si votre fonction score est faite correctement, cela devrai donner le résultat recherché.
J'éspère que cette explication est plus claire et vous permettra de faire ce que vous voulez faire.
ibokil
Messages postés
5
Date d'inscription
vendredi 3 mai 2019
Statut
Membre
Dernière intervention
10 juin 2019
3
Modifié le 3 mai 2019 à 23:43
Modifié le 3 mai 2019 à 23:43
Alors voila , j'ai effectué quelque modification afin de calculer ma somme mais j'arrive pas à trouver la solution.
Cordialement
Cordialement
from random import* couleur = [' pique ', ' trefle ', ' carreau ', 'coeur '] valeur = ['j','1','2','3','4','5','6','7','8','9','10',' 10 Roi ',' 10 Pique ',' 10 trefle ', ' 10 Coeur'] def chiffre(long): "1"==1 "2"==2 "3"==3 "4"==4 "5"==5 "6"==6 "7"==7 "8"==8 "9"==9 "10"==10 "10 Pique"==10 "10 trefle"==10 "10 Roi"==10 "10 Coeur"==10 list= [chiffre] for v in valeur: for c in couleur : list.append(v+" de "+c) print(list) #Carte du premeier tour Nombrecarte = 1 print("chaque players recois ",Nombrecarte," cartes") carte_1 = sample (list,Nombrecarte) print("Voila votre premier cartes : ") print(carte_1) #Carte du second tours Nombrecarte = 1 carte_2 = sample (list,Nombrecarte) print("Voila votre second cartes : ") print(carte_2) #Carte total: Total=carte_1+carte_2 print(Total) #Additionner les cartes Somme= carte_1 +carte_2 print(Somme)