nice96
Messages postés3Date d'inscriptionjeudi 22 janvier 2015StatutMembreDernière intervention22 janvier 2015
-
22 janv. 2015 à 13:55
Mints
Messages postés69Date d'inscriptionmercredi 1 novembre 2000StatutMembreDernière intervention 1 juin 2018
-
26 janv. 2015 à 19:28
Bonjour,
Je dois realiser un jeux sous python,dans ce jeu deux joueurs font face à un tas de cailloux et on leur a donné une liste de tailles. Chacun leur tour ils ont le choix de prendre un nombre de cailloux correspondant à une des tailles valides.
Celui qui prend le dernier caillou à gagner.
Il y a 4 listes:
L=[1,2,5] pour 15 cailloux donc si la liste 1 sort je n'ai le droit que de jouer 1 ou 2 ou 5 et il y a 15 cailloux en tout.
L=[1,2,3,5,7,11,13,17] 300 cailloux
L=[1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484] 500 cailloux
L=[1,10,100,100] 2000 cailloux
J'ai réussi à faire un programme mais celui ci me permet de gagner seulement pour les 2 premières listes.
Pour les 2 dernières je n'y arrive pas.
Merci de votre aide
Whismeril
Messages postés18622Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention28 septembre 2023629 22 janv. 2015 à 14:07
Bonjour,
pour que l'on puisse t'aider, il faudrait:
- Poser une question.
- Montrer le code que tu as écrit, avec la coloration syntaxique.
- S"il y a un message d'erreur, retranscrire entièrement et préciser quelle ligne le génère.
Je sais pas si j'ai tout compris à ton problème et sans connaître les contraintes imposées par ton professeur j'ai fait ce petit bout de code qui pourra peut-être répondre a ta question ou du moins te faire progresser :
# -*- coding:UTF-8 -*-
print "Jeu dans lequel 2 joueurs piochent à tour de rôle un nombre de cailloux dans \nun éventail de choix imposé dans le but de rammasser le ou les derniers du tas.\n\n"
#dictionnaire clé:nombre de cailloux, valeur pour chaque clé:les choix possibles
NBR_CAILLOUX__CHOIX_POSSIBLES = {15:[1,2,5],
300:[1,2,3,5,7,11,13,17],
500:[1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484],
2000:[1,10,100,200]}
#nombre de cailloux initiaux désirés, la 'rep' sera la clé du dictionnaire
rep = 0
while not int(rep) in NBR_CAILLOUX__CHOIX_POSSIBLES.keys():
rep = raw_input("Nombre de cailloux dans le tas (15,300,500,2000) ? : ") # 'raw_input() renvoie un objet String
if not rep.isdigit():
rep = 0
nbrCailloux = int(rep) # on doit donc convertir la 'rep' en entier pour son affectation
CHOIX_POSSIBLES = NBR_CAILLOUX__CHOIX_POSSIBLES[nbrCailloux] # accès à la valeur du dictionnaire par sa clé
choixValides = [] # contiendra les choix valides en fonction des cailloux restants
#qui sont les joueurs ?
JOUEUR1 = raw_input("Nom du Joueur 1 : ")
JOUEUR2 = raw_input("Nom du Joueur 2 : ")
joueurActuel = JOUEUR1 #joueur 1 à la main
# petite boucle principale
partieTerminee = False
while not partieTerminee:
#on remplie la liste des choix valides
choixValides = []
for choixPossible in CHOIX_POSSIBLES:
if nbrCailloux - choixPossible >= 0:
choixValides.append(choixPossible)
print " "
print "Il y a %s cailloux"%nbrCailloux
print "Choix valides : ",choixValides
#on récupère un choix valide du joueur actuel
choixJoueur = 0
while choixJoueur == 0:
choixJoueur = raw_input("Votre choix %s ? : "%joueurActuel)
if not choixJoueur.isdigit() :
print "Un chiffre svp ..."
choixJoueur = 0
elif choixJoueur.isdigit() and int(choixJoueur) not in choixValides :
print "Choix invalide !... "
choixJoueur = 0
#on vérifie si le joueur à gagné sinon la main passe
nbrCailloux -= int(choixJoueur)
if nbrCailloux == 0:
partieTerminee = True
else :
if joueurActuel == JOUEUR1:
joueurActuel = JOUEUR2
else:
joueurActuel = JOUEUR1
print "Félicitation %s, vous avez gagné !!!"%joueurActuel