Pour le lycée, on a un mini-projet en python : en gros on doit faire un programme qui regroupe toutes les connaissances depuis le début de l'année, étant sûr de moi et de mon groupe on décide de lancer dans la création d'un jeu du loup-garou solo. Donc pour m'aider ce serait plus facile si vous connaissez déjà le jeu, même si dans le principe c'est pas indispensable, bref voici mon soucis.
En fait, l'utilisateur choisit avec combien de bots il veut jouer, donc combien de joueurs en tout (de 6 à 10), ça c'est bon. Maintenant, pour chaque bot + le joueur je veux leur assigner un rôle (listés dans la liste roles). j'ai pensé à assigner un numéro (en guise d'identifiant) à chaque joueur puis assigner à ce numéro un élément de la liste des rôles. Un autre soucis, c'est que comme vous pouvez le voir tout en bas, le nombre de loup-garou et de villageois change suivant le nombre de joueurs :/
J'espère avoir été clair, si vous avez des questions je garde un œil sur le topic, étant donné qu'on doit rendre le projet mardi.. J'aimerai aussi éviter de spammer les if, et apporter quelque chose de plus complexe/pratique
Merci d'avance, et voici mon code :
from random import *
def rules(): #fonction de rappel des règles
print("\nVous avez tapé 1, voici un rappel des règles de jeu :\n\
sachez que les rôles utilisés dans notre version du jeu sont :\n\n",' '.join(roles), "\n\
\n\
Pour plus d'infos, http://lesloupsgarous.free.fr/htm/regles.html")
def switch(nbPlayers): #switch dont dépend le jeu en fonction du nombre de joueurs
switcher = {
6: "\n6 joueurs",
7: "\n7 joueurs",
8: "\n8 joueurs",
9: "\n9 joueurs",
10: "\n10 joueurs",
}
return switcher.get(nbPlayers, "Nombre de joueurs invalide, fin du programme")
playerslist = [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
]
nbPlayers = 1
nbBots = nbPlayers - 1
print("\nBienvenue dans le jeu du Loup-Garou !") #1ère ligne visile au lancement
print("Pour commencer, entrez votre nom !\n")
player = input("Comment vous appelez-vous ? : ") #pseudo du joueur
idPlayer = choice(playerslist)
print(f"\nOk votre nom est {player} !")
roles = ["Loup-Garou", #liste des rôles
"Villageois",
"Cupidon",
"Ange",
"Sorcière",
"Chasseur",
"Petite-fille"]
player_role = choice(roles) #le joueur a un role aléatoire parmis ceux de la liste
print(f"Votre rôle pour cette partie est {player_role}, jouez-le sérieusement ! \n\
Si vous voulez un rappel des règles tapez 1, sinon tapez 0.\n")
# ----------------------------------------------------------------------- RAPPEL DES REGLES ---------------------------------------------------------------------------
rappel = int(input("1 ou 0 ? : ")) #variable booléenne dont la valeur définira si le joueur a besoin d'un rappel des règles ou non
if rappel == 1:
rules()
elif rappel != 0 and rappel != 1:
print("\nTriple idiot t'as déjà réussi à te tromper, relance la partie !")
exit #sortie du programme
# ----------------------------------------------------------------------- RAPPEL DES REGLES ---------------------------------------------------------------------------
nbPlayers = int(input("\nVous voulez jouer à combien ? Saisissez un nombre entre 6 et 10 : "))
print(switch(nbPlayers))
if nbPlayers == 6 and nbPlayers == 7: #règle sur le nombre de Villageois et de LG en fonction du nombre de joueurs
nbLG = 1
nbVi = 0
elif nbPlayers == 8 and nbPlayers == 9:
nbLG = 2
nbVi = 1
elif nbPlayers == 10:
nbLG = 2
nbVi = 2
C'est quoi le problème en fait ? Ce que tu as codé ne fonctionne pas ? Ou bien la façon dont tu l'a codé ne te convient pas et tu voudrais quelque chose de mieux ? Sachant que si l'objectif est de condenser ce que vous avez appris cette année, ce n'est pas très intéressant pour toi qu'on te propose quelque chose que tu n'as jamais vu?
Je ne sais pas comment m'y prendre pour coder mon idée, et s'il existe un moyen plus simple de le faire alors dites-le moi, et si, si vous me proposez quelque chose que je n'ai jamais vu alors j'apprendrai à me servir de ça (comme pour le dictionnaire pour faire un switch)
pour l'instant tout fonctionne mais ce n'est que le début du code, sans ça je vois pas comment avancer dans le projet
Et bien pour l'instant ça m'a l'air plutôt bien, tu peux également utiliser un dictionnaire pour gérer le nombre de loup garou/villageois en fonction du nombre de joueur.
Je sais que c'est bien pour l'instant, c'est la suite qui me pose problème
Comment gérer le rôle des "bots", comment faire pour qu'un rôle ne soit pas assigné deux fois, comment faire pour séparer le rôle du joueur des autres? C'est bien ça qui me pose problème, je viendrai pas sur le forum si mon programme marchait et que je cherchais des encouragements, là je cherche de l'aide..
j'ai un peu avancé dessus mais rien de prometteur j'ai réussi à faire changer le nombre de LG/Villageois en fonction du nombre de joueurs mais j'ai un problème quant à l'assignation de ceux-ci
from random import *
def rules(): #fonction de rappel des règles
print("\nVous avez tapé 1, voici un rappel des règles de jeu :\n\
sachez que les rôles utilisés dans notre version du jeu sont :\n\n",' '.join(roles), "\n\
\n\
Pour plus d'infos, http://lesloupsgarous.free.fr/htm/regles.html")
def switch(nbPlayers): #switch dont dépend le jeu en fonction du nombre de joueurs
switcher = {
6: "\n6 joueurs",
7: "\n7 joueurs",
8: "\n8 joueurs",
9: "\n9 joueurs",
10: "\n10 joueurs",
}
return switcher.get(nbPlayers, "Nombre de joueurs invalide, fin du programme")
def player_role(player_role):
player_role = choice(roles) #le joueur a un role aléatoire parmis ceux de la liste
del roles[player_role]
return player_role
playerslist = [ #nombre de joueurs en tout
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
]
roles = ["Loup-Garou", #liste des rôles
"Cupidon",
"Ange",
"Sorcière",
"Chasseur",
"Petite-fille"]
nbPlayers = 1 #sera redéfini quand le joueur dira avec combien de joueurs il va jouer
idPlayer = playerslist[1]
# ----------------------------------------------------------------------- DÉBUT DU SCRIPT ---------------------------------------------------------------------------
print("\nBienvenue dans le jeu du Loup-Garou !") #1ère ligne visile au lancement
print("Pour commencer, entrez votre nom !\n")
player = input("Comment vous appelez-vous ? : ") #pseudo du joueur
print(f"\nOk votre nom est {player} !")
print("Votre rôle pour cette partie est", end = '')
print(player_role)
print("jouez-le sérieusement ! \n\
Si vous voulez un rappel des règles tapez 1, sinon tapez 0.\n")
# ----------------------------------------------------------------------- RAPPEL DES REGLES ---------------------------------------------------------------------------
rappel = int(input("1 ou 0 ? : ")) #variable booléenne dont la valeur définira si le joueur a besoin d'un rappel des règles ou non
if rappel == 1:
rules()
elif rappel != 0 and rappel != 1:
print("\nTriple idiot t'as déjà réussi à te tromper, relance la partie !")
exit #sortie du programme
# ----------------------------------------------------------------------- RAPPEL DES REGLES ---------------------------------------------------------------------------
nbPlayers = int(input("\nVous voulez jouer à combien ? Saisissez un nombre entre 6 et 10 : "))
if nbPlayers == 6: #on supprime les slots de players vides et on ajoute des roles si besoin, puis on mélange la liste
del playerslist[6:10]
elif nbPlayers == 7:
del playerslist[7:10]
elif nbPlayers == 8:
del playerslist[8:10]
roles.append("Loup-Garou")
roles.append("Villageois")
shuffle(roles)
elif nbPlayers == 9:
del playerslist[10]
roles.append("Loup-Garou")
roles.append("Villageois")
roles.append("Villageois")
shuffle(roles)
elif nbPlayers == 10:
roles.append("Loup-Garou")
roles.append("Loup-Garou")
roles.append("Villageois")
roles.append("Villageois")
shuffle(roles)
print(switch(nbPlayers))
print(roles.index(player_role))
A partir de là il te manque une boucle principale du jeu pour enchaîner les tours jusqu'à ce que les conditions de fin de jeu soient réunies.
Pour gagner du temps tu peux déterminer simplement les décisions des bots en les faisant choisir au hasard parmi les choix possibles en fonction de leur rôle.
Blond, bouclé, toujours le sourire aux lèvres...
Problème sur la gestion de listes
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Blond, bouclé, toujours le sourire aux lèvres...