Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import *
- from random 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,0,-1):
- pickos=self.ListePickosAuCentre[k]
- if points==pickos:
- self.ListePickosAuCentre.remove(points)
- self.ListePickosJoueurs[i].append(points)
- 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]:
- self.LancerLesDes()
- relancer=True
- PickosAuCentre=self.ListePickosAuCentre
- PickosJoueurs=self.ListePickosJoueurs[i]
- while not (self.EstCeQueTourTermine()) and relancer:
- print("Votre jeté de dé : ",self.ListeDesNouveauLancer[i])
- DesGardes=self.ListeDesGardes[i]
- DesLances=self.ListeDesNouveauLancer[i]
- Num=i
- Type="ChoixDé"
- choix_de=MonIA(Type,DesGardes,DesLances,PickosAuCentre,PickosJoueurs,Num)
- while not (self.GarderLesDes(choix_de)):
- choix_de=MonIA(Type,DesGardes,DesLances,PickosAuCentre,PickosJoueurs,Num)
- print(self.ListeNomsJoueurs[i]," ne peut pas garder le dé ",choix_de)
- print(self.ListeNomsJoueurs[i]," a gardé le dé ",choix_de)
- Type="Relancer"
- relancer=MonIA(Type,DesGardes,DesLances,PickosAuCentre,PickosJoueurs,Num)
- if self.PeutPrendrePicko() and 6 in DesGardes:
- self.PrendPicko()
- relancer=False
- # Si le joueur n'a pas gagné de pickos pendant son tour, il en perd un
- if PickosJoueurs==ListePickosJoueurs[i]:
- self.PerdPicko()
- else:
- self.JoueurSuivant()
- else:
- relancer=True
- self.LancerLesDes()
- PickosJoueurs=self.ListePickosJoueurs[i]
- if PickosJoueurs==[]:
- OldPicko=0
- else:
- OldPicko=PickosJoueurs[-1]
- while not (self.EstCeQueTourTermine()) and relancer:
- self.LancerLesDes()
- print("Votre jeté de dé : ",self.ListeDesNouveauLancer[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)
- choix_de=int(input("Entrez le numéro du dé à garder \n> "))
- if self.EstCeQueTourTermine():
- break
- print(self.ListeNomsJoueurs[i],"a gardé le dé ",choix_de)
- 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
- print("Votre tour est terminé.")
- if self.ListePickosJoueurs[i] == [] or OldPicko==self.ListePickosJoueurs[i][-1]:
- self.PerdPicko()
- else:
- print("Au joueur suivant !")
- self.JoueurSuivant()
- def MonIA(Type,DesGardes,DesLances,PickosAuCentre,PickosJoueurs,Num):
- if Type=="Relancer":
- r=randint(0,1)
- if r==1:
- return(True)
- else:
- return(False)
- else:
- r=randint(0,len(DesLances)-1)
- return(DesLances[r])
- """
- MonJeu=Jeu();MonJeu.NouveauJoueur("Arnold");MonJeu.NouveauJoueur("Gégé");MonJeu.NouveauJoueur("Dédé");MonJeu.NouveauJoueur("Jostophe !");MonJeu.Initialisation();MonJeu.JoueUnTour()
- """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement