Advertisement
csmine

TP 8 Pickominos

Apr 5th, 2019
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.90 KB | None | 0 0
  1. from math import *
  2. from random import *
  3.  
  4. class Jeu:
  5.    
  6.     def __init__(self):
  7.         self.ListeNomsJoueurs=[]
  8.        
  9.         self.ListeFichiersIA=[]
  10.        
  11.         self.ListePickosAuCentre=[]
  12.        
  13.         self.QuiJoue=0
  14.        
  15.         self.ListeDesGardes=[]
  16.      
  17.         self.ListeDesNouveauLancer=[]
  18.        
  19.         self.ListePickosJoueurs=[]
  20.        
  21.     def __repr__(self):
  22.         deux=""
  23.         for i in range(0,len(self.ListeNomsJoueurs)):
  24.             joueur=self.ListeNomsJoueurs[i]
  25.             deux+=str(joueur)
  26.             if self.ListeFichiersIA[i]:
  27.                 deux+=" (BOT)"
  28.             else:
  29.                 deux+=""
  30.             deux+="'s pickos :"+str(self.ListePickosJoueurs[i])+"\n"
  31.        
  32.         trois="Pickos au centre : "+str(self.ListePickosAuCentre)+"\n"
  33.        
  34.         quatre="Qui joue : "+str(self.QuiJoue)+"\n"
  35.         trois2="Dés gardés:"+str(self.ListeDesGardes)+"\n"
  36.         trois3="Dés lancés:"+str(self.ListeDesNouveauLancer)
  37.         return(deux+trois+quatre+trois2+trois3)
  38.        
  39.        
  40.        
  41.     def NouveauJoueur(self,joueur,bot=False):
  42.         (self.ListeNomsJoueurs).append(joueur)
  43.        
  44.         self.ListePickosJoueurs.append([])
  45.         self.ListeDesGardes.append([])
  46.         self.ListeDesNouveauLancer.append([])
  47.        
  48.        
  49.         if bot==False:
  50.             (self.ListeFichiersIA).append(bot)
  51.         else:
  52.             (self.ListeFichiersIA).append(True)
  53.        
  54.     def Initialisation(self):
  55.         self.ListePickosAuCentre=[i for i in range(21,37)]
  56.    
  57.         self.QuiJoue=randint(0,len(self.ListeNomsJoueurs)-1)
  58.        
  59.         for i in range(0,len(self.ListeNomsJoueurs)):
  60.             self.ListeDesGardes[i]=[]
  61.             self.ListeDesNouveauLancer[i]=[]
  62.        
  63.     def JoueurSuivant(self):
  64.         for i in range(0,len(self.ListeNomsJoueurs)):
  65.             self.ListeDesGardes[i]=[]
  66.             self.ListeDesNouveauLancer[i]=[]
  67.         if self.QuiJoue==len(self.ListeNomsJoueurs)-1:
  68.             self.QuiJoue=0
  69.         else:
  70.             self.QuiJoue+=1
  71.        
  72.     def LancerLesDes(self):
  73.         i=self.QuiJoue
  74.        
  75.         self.ListeDesNouveauLancer[i]=[]
  76.        
  77.         nombre_a_lancer=8-len(self.ListeDesGardes[i])
  78.         for k in range(0,nombre_a_lancer):
  79.             r=randint(1,6)
  80.             self.ListeDesNouveauLancer[i].append(int(r))
  81.        
  82.     def EstCeQueTourTermine(self):
  83.         i=self.QuiJoue
  84.        
  85.         if len(self.ListeDesGardes[i])==8:
  86.             return(True)
  87.        
  88.         else:
  89.             L_nouv=self.ListeDesNouveauLancer[i]
  90.             L_gard=self.ListeDesGardes[i]
  91.             for k in range(0,len(L_nouv)):
  92.                 if L_nouv[k] not in L_gard:
  93.                     return(False)
  94.             return(True)
  95.    
  96.     def GarderLesDes(self,valeur):
  97.         i=self.QuiJoue
  98.         if valeur not in self.ListeDesNouveauLancer[i]:
  99.             print("La valeur n'est pas dans les dés.")
  100.             return(False)
  101.         elif valeur in self.ListeDesGardes[i]:
  102.             print("Vous avez déjà cette face en main !")
  103.             return(False)
  104.         else:
  105.             compteur=0
  106.             for face in self.ListeDesNouveauLancer[i]:
  107.                 if face==valeur:
  108.                     compteur+=1
  109.                     self.ListeDesGardes[i].append(valeur)
  110.             for k in range(0,compteur):
  111.                 self.ListeDesNouveauLancer[i].remove(valeur)
  112.             return(True)
  113.    
  114.     def Points(self):
  115.         i=self.QuiJoue
  116.         compteur=0
  117.        
  118.         for face in self.ListeDesGardes[i]:
  119.             if face!=6:
  120.                 compteur+=face
  121.             else:
  122.                 compteur+=5
  123.         return(compteur)
  124.            
  125.     def PeutPrendrePicko(self):
  126.         i=self.QuiJoue
  127.         points=self.Points()
  128.        
  129.         if self.ListePickosAuCentre[0] <= points:
  130.             return(True)
  131.         else:
  132.             for k in range(0,len(self.ListePickosJoueurs)):
  133.                 liste_pickos=self.ListePickosJoueurs[k]
  134.                 if liste_pickos!=[] and k!=i :
  135.                     if points==liste_pickos[-1]:
  136.                         return(True)
  137.             return(False)
  138.    
  139.     def PrendPicko(self):
  140.         i=self.QuiJoue
  141.         points=self.Points()
  142.        
  143.         if self.PeutPrendrePicko():
  144.             for k in range(0,len(self.ListePickosJoueurs)):
  145.                 liste_pickos=self.ListePickosJoueurs[k]
  146.                 if liste_pickos!=[] and k!=i :
  147.                     if points==liste_pickos[-1]:
  148.                         liste_pickos.remove(points)
  149.                         self.ListePickosJoueurs[i].append(points)
  150.                         return(True)
  151.            
  152.             for k in range(len(self.ListePickosAuCentre)-1,0,-1):
  153.                 pickos=self.ListePickosAuCentre[k]
  154.                 if points==pickos:
  155.                     self.ListePickosAuCentre.remove(points)
  156.                     self.ListePickosJoueurs[i].append(points)
  157.                     return(True)
  158.                    
  159.         else:
  160.             print("Vous ne pouvez pas prendre un picko.")
  161.             return(False)
  162.            
  163.        
  164.     def PerdPicko(self):
  165.         i=self.QuiJoue
  166.         Liste_Du_Joueur=self.ListePickosJoueurs[i]
  167.         if Liste_Du_Joueur!=[]:
  168.             picko_perdu=Liste_Du_Joueur[-1]
  169.             Liste_Du_Joueur.remove(picko_perdu)
  170.             self.ListePickosAuCentre.append(picko_perdu)
  171.             self.ListePickosAuCentre.sort()
  172.             self.ListePickosAuCentre.remove(self.ListePickosAuCentre[-1])
  173.             print("Vous avez perdu le picko ",picko_perdu)
  174.             return(True)
  175.         else:
  176.             print("Vous ne pouvez pas perdre de picko, vous êtes déjà pauvre")
  177.             return(False)
  178.    
  179.     def Memo(self,string):
  180.         fichier = open("memo.txt","a")
  181.         fichier.write("\n"+string)
  182.         fichier.close()
  183.        
  184.     def JoueUnTour(self):
  185.         i=self.QuiJoue
  186.         print("C'est au tour de ",self.ListeNomsJoueurs[i],"!")
  187.         # Tour de l'IA ?
  188.         if self.ListeFichiersIA[i]:
  189.             self.LancerLesDes()
  190.             relancer=True
  191.             PickosAuCentre=self.ListePickosAuCentre
  192.             PickosJoueurs=self.ListePickosJoueurs[i]
  193.             while not (self.EstCeQueTourTermine()) and relancer:
  194.                 print("Votre jeté de dé : ",self.ListeDesNouveauLancer[i])
  195.                 DesGardes=self.ListeDesGardes[i]
  196.                 DesLances=self.ListeDesNouveauLancer[i]
  197.                
  198.                 Num=i
  199.                
  200.                
  201.                 Type="ChoixDé"
  202.                 choix_de=MonIA(Type,DesGardes,DesLances,PickosAuCentre,PickosJoueurs,Num)
  203.                 while not (self.GarderLesDes(choix_de)):
  204.                     choix_de=MonIA(Type,DesGardes,DesLances,PickosAuCentre,PickosJoueurs,Num)
  205.                     print(self.ListeNomsJoueurs[i]," ne peut pas garder le dé ",choix_de)
  206.                 print(self.ListeNomsJoueurs[i]," a gardé le dé ",choix_de)
  207.                
  208.                 Type="Relancer"
  209.                 relancer=MonIA(Type,DesGardes,DesLances,PickosAuCentre,PickosJoueurs,Num)
  210.                
  211.                 if self.PeutPrendrePicko() and 6 in DesGardes:
  212.                     self.PrendPicko()
  213.                     relancer=False
  214.             # Si le joueur n'a pas gagné de pickos pendant son tour, il en perd un
  215.             if PickosJoueurs==ListePickosJoueurs[i]:
  216.                 self.PerdPicko()
  217.             else:
  218.                 self.JoueurSuivant()
  219.         else:
  220.             relancer=True
  221.             self.LancerLesDes()
  222.             PickosJoueurs=self.ListePickosJoueurs[i]
  223.             if PickosJoueurs==[]:
  224.                 OldPicko=0
  225.             else:
  226.                 OldPicko=PickosJoueurs[-1]
  227.             while not (self.EstCeQueTourTermine()) and relancer:
  228.                 self.LancerLesDes()
  229.                 print("Votre jeté de dé : ",self.ListeDesNouveauLancer[i])
  230.                
  231.                 choix_de=int(input("Entrez le numéro du dé à garder \n> "))
  232.                 while not (self.GarderLesDes(choix_de)):
  233.                     if self.EstCeQueTourTermine():
  234.                         break
  235.                     print(self.ListeNomsJoueurs[i],"ne peut pas garder le dé ",choix_de)
  236.                     choix_de=int(input("Entrez le numéro du dé à garder \n> "))
  237.                 if self.EstCeQueTourTermine():
  238.                         break
  239.                 print(self.ListeNomsJoueurs[i],"a gardé le dé ",choix_de)
  240.                
  241.                 print("Vous avez ",self.Points()," points")
  242.                 choix_relance=str(input("Voulez-vous relancer ? (y/n) \n> "))
  243.                 if choix_relance=="y":
  244.                     relancer=True
  245.                 else:
  246.                     relancer=False
  247.                 if relancer==False:
  248.                     if self.PeutPrendrePicko() and 6 in self.ListeDesGardes[i]:
  249.                         print("Vous pouvez prendre un picko !")
  250.                         self.PrendPicko()
  251.                         print("Vous avez pris le picko ",self.ListePickosJoueurs[i][-1])
  252.                     else:
  253.                         break
  254.             print("Votre tour est terminé.")
  255.             if self.ListePickosJoueurs[i] == [] or OldPicko==self.ListePickosJoueurs[i][-1]:
  256.                 self.PerdPicko()
  257.             else:
  258.                 print("Au joueur suivant !")
  259.                 self.JoueurSuivant()
  260.        
  261. def MonIA(Type,DesGardes,DesLances,PickosAuCentre,PickosJoueurs,Num):
  262.     if Type=="Relancer":
  263.         r=randint(0,1)
  264.         if r==1:
  265.             return(True)
  266.         else:
  267.             return(False)
  268.     else:
  269.         r=randint(0,len(DesLances)-1)
  270.         return(DesLances[r])
  271.        
  272. """
  273.  
  274. MonJeu=Jeu();MonJeu.NouveauJoueur("Arnold");MonJeu.NouveauJoueur("Gégé");MonJeu.NouveauJoueur("Dédé");MonJeu.NouveauJoueur("Jostophe !");MonJeu.Initialisation();MonJeu.JoueUnTour()
  275.  
  276. """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement