Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import *
- from random import *
- from time import *
- class Jeu:
- def __init__(self):
- self.ListeNomsJoueurs=[]
- self.ListeFichiersIA=[]
- self.ListePickosAuCentre=[]
- self.QuiJoue=0
- self.ListeDesGardes=[]
- self.ListeDesNouveauLancer=[]
- self.ListePickosJoueurs=[]
- def __repr__(self):
- deux=""
- for i in range(0,len(self.ListeNomsJoueurs)):
- joueur=self.ListeNomsJoueurs[i]
- deux+=str(joueur)
- if self.ListeFichiersIA[i]:
- deux+=" (BOT)"
- else:
- deux+=""
- deux+="'s pickos :"+str(self.ListePickosJoueurs[i])+"\n"
- trois="Pickos au centre : "+str(self.ListePickosAuCentre)+"\n"
- quatre="Qui joue : "+str(self.QuiJoue)+"\n"
- trois2="Dés gardés:"+str(self.ListeDesGardes)+"\n"
- trois3="Dés lancés:"+str(self.ListeDesNouveauLancer)
- return(deux+trois+quatre+trois2+trois3)
- def NouveauJoueur(self,joueur,bot=False):
- (self.ListeNomsJoueurs).append(joueur)
- self.ListePickosJoueurs.append([])
- self.ListeDesGardes.append([])
- self.ListeDesNouveauLancer.append([])
- if bot==False:
- (self.ListeFichiersIA).append(bot)
- else:
- (self.ListeFichiersIA).append(True)
- def Initialisation(self):
- self.ListePickosAuCentre=[i for i in range(21,37)]
- self.QuiJoue=randint(0,len(self.ListeNomsJoueurs)-1)
- for i in range(0,len(self.ListeNomsJoueurs)):
- self.ListeDesGardes[i]=[]
- self.ListeDesNouveauLancer[i]=[]
- def JoueurSuivant(self):
- for i in range(0,len(self.ListeNomsJoueurs)):
- self.ListeDesGardes[i]=[]
- self.ListeDesNouveauLancer[i]=[]
- if self.QuiJoue==len(self.ListeNomsJoueurs)-1:
- self.QuiJoue=0
- else:
- self.QuiJoue+=1
- def LancerLesDes(self):
- i=self.QuiJoue
- self.ListeDesNouveauLancer[i]=[]
- nombre_a_lancer=8-len(self.ListeDesGardes[i])
- for k in range(0,nombre_a_lancer):
- r=randint(1,6)
- self.ListeDesNouveauLancer[i].append(int(r))
- def EstCeQueTourTermine(self):
- i=self.QuiJoue
- if len(self.ListeDesGardes[i])==8:
- return(True)
- else:
- L_nouv=self.ListeDesNouveauLancer[i]
- L_gard=self.ListeDesGardes[i]
- for k in range(0,len(L_nouv)):
- if L_nouv[k] not in L_gard:
- return(False)
- return(True)
- def GarderLesDes(self,valeur):
- i=self.QuiJoue
- if valeur not in self.ListeDesNouveauLancer[i]:
- print("La valeur n'est pas dans les dés.")
- return(False)
- elif valeur in self.ListeDesGardes[i]:
- print("Vous avez déjà cette face en main !")
- return(False)
- else:
- compteur=0
- for face in self.ListeDesNouveauLancer[i]:
- if face==valeur:
- compteur+=1
- self.ListeDesGardes[i].append(valeur)
- for k in range(0,compteur):
- self.ListeDesNouveauLancer[i].remove(valeur)
- return(True)
- def Points(self):
- i=self.QuiJoue
- compteur=0
- for face in self.ListeDesGardes[i]:
- if face!=6:
- compteur+=face
- else:
- compteur+=5
- return(compteur)
- def PeutPrendrePicko(self):
- i=self.QuiJoue
- points=self.Points()
- if self.ListePickosAuCentre[0] <= points:
- return(True)
- else:
- for k in range(0,len(self.ListePickosJoueurs)):
- liste_pickos=self.ListePickosJoueurs[k]
- if liste_pickos!=[] and k!=i :
- if points==liste_pickos[-1]:
- return(True)
- return(False)
- def PrendPicko(self):
- i=self.QuiJoue
- points=self.Points()
- if self.PeutPrendrePicko():
- for k in range(0,len(self.ListePickosJoueurs)):
- liste_pickos=self.ListePickosJoueurs[k]
- if liste_pickos!=[] and k!=i :
- if points==liste_pickos[-1]:
- liste_pickos.remove(points)
- self.ListePickosJoueurs[i].append(points)
- return(True)
- for k in range(len(self.ListePickosAuCentre)-1,-1,-1):
- pickos=self.ListePickosAuCentre[k]
- if points>=pickos:
- self.ListePickosAuCentre.remove(pickos)
- self.ListePickosJoueurs[i].append(pickos)
- return(True)
- else:
- print("Vous ne pouvez pas prendre un picko !")
- return(False)
- def PerdPicko(self):
- i=self.QuiJoue
- Liste_Du_Joueur=self.ListePickosJoueurs[i]
- if Liste_Du_Joueur!=[]:
- picko_perdu=Liste_Du_Joueur[-1]
- Liste_Du_Joueur.remove(picko_perdu)
- self.ListePickosAuCentre.append(picko_perdu)
- self.ListePickosAuCentre.sort()
- self.ListePickosAuCentre.remove(self.ListePickosAuCentre[-1])
- print("Vous avez perdu le picko ",picko_perdu)
- return(True)
- else:
- print("Vous ne pouvez pas perdre de picko, vous êtes déjà pauvre")
- return(False)
- def Memo(self,string):
- fichier = open("memo.txt","a")
- fichier.write("\n"+string)
- fichier.close()
- def JoueUnTour(self):
- i=self.QuiJoue
- print("C'est au tour de ",self.ListeNomsJoueurs[i],"!")
- # Tour de l'IA ?
- if self.ListeFichiersIA[i]:
- relancer=True
- self.LancerLesDes()
- PickosJoueurs=self.ListePickosJoueurs[i]
- if PickosJoueurs==[]:
- OldPicko=0
- else:
- OldPicko=PickosJoueurs[-1]
- while relancer:
- self.LancerLesDes()
- print("Votre jeté de dé : ",self.ListeDesNouveauLancer[i])
- if not (self.EstCeQueTourTermine()):
- choix_de=MonIA("choix_de",self.ListeDesGardes,self.ListeDesNouveauLancer,self.ListePickosAuCentre,self.ListePickosJoueurs,self.QuiJoue,self.PeutPrendrePicko())
- while not (self.GarderLesDes(choix_de)):
- if self.EstCeQueTourTermine():
- break
- print(self.ListeNomsJoueurs[i],"ne peut pas garder le dé ",choix_de)
- choix_de=MonIA("choix_de",self.ListeDesGardes,self.ListeDesNouveauLancer,self.ListePickosAuCentre,self.ListePickosJoueurs,self.QuiJoue,self.PeutPrendrePicko())
- print(self.ListeNomsJoueurs[i],"a gardé le dé ",choix_de,"\n")
- print("Vous avez ",self.Points()," points")
- choix_relance=MonIA("Relancer",self.ListeDesGardes,self.ListeDesNouveauLancer,self.ListePickosAuCentre,self.ListePickosJoueurs,self.QuiJoue,self.PeutPrendrePicko())
- if choix_relance=="y":
- relancer=True
- print("Vous relancez")
- else:
- relancer=False
- print("Vous ne relancez plus")
- if relancer==False:
- if self.PeutPrendrePicko() and 6 in self.ListeDesGardes[i]:
- print("Vous pouvez prendre un picko !")
- self.PrendPicko()
- print("Vous avez pris le picko ",self.ListePickosJoueurs[i][-1])
- else:
- break
- else:
- print("Vous ne pouvez plus rien prendre.")
- break
- print("Votre tour est terminé.")
- if relancer==True and self.PeutPrendrePicko() and 6 in self.ListeDesGardes[i]:
- print("Vous pouvez prendre un picko !")
- self.PrendPicko()
- print("Vous avez pris le picko ",self.ListePickosJoueurs[i][-1])
- elif self.ListePickosJoueurs[i] != [] and OldPicko==self.ListePickosJoueurs[i][-1]:
- self.PerdPicko()
- print("Au joueur suivant !","\n")
- self.JoueurSuivant()
- else:
- relancer=True
- self.LancerLesDes()
- PickosJoueurs=self.ListePickosJoueurs[i]
- if PickosJoueurs==[]:
- OldPicko=0
- else:
- OldPicko=PickosJoueurs[-1]
- while relancer:
- self.LancerLesDes()
- print("Votre jeté de dé : ",self.ListeDesNouveauLancer[i])
- if not (self.EstCeQueTourTermine()):
- print("Les dés que vous avez déjà gardés sont : ",self.ListeDesGardes[i])
- choix_de=int(input("Entrez le numéro du dé à garder \n> "))
- while not (self.GarderLesDes(choix_de)):
- if self.EstCeQueTourTermine():
- break
- print(self.ListeNomsJoueurs[i],"ne peut pas garder le dé ",choix_de)
- print("Les dés que vous avez déjà gardés sont : ",self.ListeDesGardes[i])
- choix_de=int(input("Entrez le numéro du dé à garder \n> "))
- print(self.ListeNomsJoueurs[i],"a gardé le dé ",choix_de,"\n")
- print("Vous avez ",self.Points()," points")
- choix_relance=str(input("Voulez-vous relancer ? (y/n) \n> "))
- if choix_relance=="y":
- relancer=True
- else:
- relancer=False
- if relancer==False:
- if self.PeutPrendrePicko() and 6 in self.ListeDesGardes[i]:
- print("Vous pouvez prendre un picko !")
- self.PrendPicko()
- print("Vous avez pris le picko ",self.ListePickosJoueurs[i][-1])
- else:
- break
- else:
- print("Vous ne pouvez plus rien prendre.")
- break
- print("Votre tour est terminé.")
- if self.PeutPrendrePicko() and 6 in self.ListeDesGardes[i] and relancer==True:
- print("Vous pouvez prendre un picko !")
- self.PrendPicko()
- print("Vous avez pris le picko ",self.ListePickosJoueurs[i][-1])
- elif self.ListePickosJoueurs[i] == [] or OldPicko==self.ListePickosJoueurs[i][-1]:
- self.PerdPicko()
- inutile=input("\nAppuyez sur ENTER pour continuer.")
- print("\nAu joueur suivant !\n")
- sleep(1)
- self.JoueurSuivant()
- def JoueUnePartie(self):
- global gagnant
- while self.ListePickosAuCentre != []:
- self.JoueUnTour()
- print("\n-----------------------------------------\n\n")
- print("La partie est terminée !")
- deux=""
- Liste_Points=[]
- for i in range(0,len(self.ListeNomsJoueurs)):
- pickos_dun_joueur=(self.ListePickosJoueurs[i])
- pickos_dun_joueur.sort()
- joueur=self.ListeNomsJoueurs[i]
- deux+=str(joueur)
- if self.ListeFichiersIA[i]:
- deux+=" (BOT)"
- else:
- deux+=""
- deux+="'s pickos :"+str(pickos_dun_joueur)+"\n"
- a=0
- for picko in self.ListePickosJoueurs[i]:
- a+=picko
- deux+="points totaux : "+str(a)+"\n"
- Liste_Points.append(a)
- print(deux)
- Liste_Premiers=[]
- for i in range(0,len(self.ListeNomsJoueurs)):
- maximum = max(Liste_Points)
- if Liste_Points[i]==maximum:
- Liste_Premiers.append(i)
- maximum=0
- for k in Liste_Premiers:
- if max(self.ListePickosJoueurs[k])>maximum:
- premier=k
- print("Le joueur qui a gagné est : ",self.ListeNomsJoueurs[premier])
- gagnant= self.ListeNomsJoueurs[premier]
- def MonIA(Type,DesGardes,DesLances,PickosAuCentre,PickosJoueurs,Num,PeutPrendre):
- if Type=="Relancer":
- r=randint(0,1)
- if PeutPrendre:
- return("n")
- else:
- return("y")
- else:
- if 6 in DesLances[Num] and 6 not in DesGardes[Num]:
- return(6)
- r=randint(0,len(DesLances[Num])-1)
- while DesLances[Num][r] in DesGardes[Num]:
- r=randint(0,len(DesLances[Num])-1)
- return(DesLances[Num][r])
- # Ecris "PartyBots()" pour jouer une partie ! Enlève les True pour mettre de vrais joueurs.
- def PartyBots(n=1,k=0):
- global Dictionnaire
- if k==0:
- Dictionnaire = {"Arnold":0,"Gégé":0,"Jostophe":0,"Marize":0,"Jean-Emmanuel":0,"René":0,"Henry":0,"Minihenry":0,"Nathan":0,}
- if k<n:
- MonJeu=Jeu()
- MonJeu.NouveauJoueur("Arnold",True)
- MonJeu.NouveauJoueur("Gégé",True)
- MonJeu.NouveauJoueur("Jostophe",True)
- MonJeu.NouveauJoueur("Marize",True)
- MonJeu.NouveauJoueur("Jean-Emmanuel",True)
- MonJeu.NouveauJoueur("René",True)
- MonJeu.NouveauJoueur("Henry",True)
- MonJeu.NouveauJoueur("Minihenry",True)
- MonJeu.NouveauJoueur("Nathan",True)
- MonJeu.Initialisation()
- MonJeu.JoueUnePartie()
- Dictionnaire[gagnant]+=1
- PartieBots(n,k+1)
- if n!=1:
- return(Dictionnaire)
- """
- MonJeu=Jeu();MonJeu.NouveauJoueur("Arnold",True);MonJeu.NouveauJoueur("Gégé",True);MonJeu.NouveauJoueur("Jostophe",True);MonJeu.NouveauJoueur("Marize",True);MonJeu.NouveauJoueur("Jean-Emmanuel",True);MonJeu.Initialisation();MonJeu.JoueUnePartie()
- MonJeu=Jeu();MonJeu.NouveauJoueur("Arnold");MonJeu.NouveauJoueur("Gégé");MonJeu.NouveauJoueur("Jostophe");MonJeu.Initialisation();MonJeu.JoueUnePartie()
- """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement