Example #1
0
	def p2_appel_et_chien(self,joueurs,dog):
		joueurs[self.appelant].appel_roi()
		self.roi_appele=joueurs[self.appelant].roi_appele
		roi=self.roi_appele
		if (carte(roi,"roi") in dog) or (carte(roi,"roi") in joueurs[self.appelant].main):
			self.appele=self.appelant
		else:
			for i in xrange(1,5):
				if carte(roi,"roi") in joueurs[(self.appelant + i)%5].main:
					self.appele=(self.appelant + i)%5
					joueurs[self.appele].attaquant=True
		if self.annonce == "garde contre":
			i=0
			while i < 5 and (i != self.appelant) and ( i!=self.appele): # A TESTER : verifier que le booleen 0 != None marche comme on veut
				i+=1
			joueurs[i].tas.extend(dog) #on a trouve un joueur de l'equipe defenseurs
		else:
			if self.annonce=="garde sans":
				joueurs[self.appelant].tas.extend(dog)
			else:
				joueurs[self.appelant].main.extend(dog)
				joueurs[self.appelant].tri_main()
				joueurs[self.appelant].fait_son_chien()
			if (self.annonce=="garde" or self.annonce=="petite") and (carte(self.roi_appele,"roi") in dog):
				self.appele_connu=True
Example #2
0
	def joue_un_tour(self,joueurs):
		self.pli=[]
		for i in xrange(0,5):
			j=(self.maitre+i)%5
			#if joueurs[j].type !="humain":
				#print "\n   Au joueur %s de choisir une carte. \n" %(joueurs[j].nom)
			if joueurs[j].type !="joueur_intelligent":
				joueurs[j].joue_une_carte(self.pli)
			else:
				if self.tour >=18: # <============================================ ICI POUR MODULER LE DECLENCHEMENT DE L'IA PREVISION_TOTALE, SI >=16 ON NE LA DECLENCHE PAS
					joueurs[j].joue_prevision_totale(self)
				else:
					joueurs[j].joue_coup_par_coup(self)
			self.observe(j)
			if self.pli[len(self.pli)-1].couleur=="excuse": # Traitement particulier de l'excuse, partie 1
				self.joueurs[j].tas.append(self.pli[len(self.pli)-1])
				mini=42
				for c in self.joueurs[j].tas:
					if c.hauteur < mini and not c.est_un_bout():
						mini=c.hauteur
						self.remplacant_excuse=c
			'''for k in xrange(1,5):
			if "k est un bot"
			joueurs[(self.maitre+i+k)%5].observe((self.maitre+i)%5)'''
		self.tours_a[self.couleur_demandee(self.pli)]+=1
		self.maitre=(self.maitre_pli()+self.maitre)%5
		if carte("excuse","") in self.pli: # Traitement particulier de l'excuse, partie 2
			self.pli.remove(carte("excuse",""))
			if self.remplacant_excuse.couleur !="debut":
				self.pli.append(self.remplacant_excuse)
		joueurs[self.maitre].tas.extend(self.pli)
		'''Manque le sort particulier reserve a l'excuse'''
Example #3
0
	def appel_roi(self): # Ameliorable
		couleurs=["trefle","pique","carreau","coeur"]
		a=random.randint(0,3)
		if carte(couleurs[a],"roi") not in self.main:
			self.roi_appele=couleurs[a]
		else:
			for i in xrange(0,3):
				if carte(couleurs[(a+i)%4],"roi") not in self.main:
					self.roi_appele=couleurs[(a+i)%4]
				else:
					self.roi_appele="trefle"
Example #4
0
	def creation_cartes(self):
		couleurs=["excuse","atout","trefle","pique","carreau","coeur"]
		rangs=["as","2","3","4","5","6","7","8","9","10","valet","cavalier","dame","roi"]
		liste_cartes=[]
		for i in couleurs:
			if i=="atout":
				for j in xrange(1,22):
					liste_cartes.append(carte(i,str(j)))
			else:
				if i=="excuse":
					liste_cartes.append(carte(i,""))
				else:
					for j in rangs:
						liste_cartes.append(carte(i,j))
		self.liste_cartes=liste_cartes
Example #5
0
	def p0_reinitialisation(self,joueurs):
		for i in xrange(0,5):
			joueurs[i].main=[]
			joueurs[i].tas=[]
			joueurs[i].chien=[]
			joueurs[i].role=""
			joueurs[i].etat_annonce=None
			joueurs[i].attaquant=False
			self.joueurs[i]=joueurs[i]
		pack=paquet()
		pack.distribution_paquet(joueurs)
		self.pli=[]
		self.annonce=None
		self.appelant=None
		self.appele=None
		self.roi_appele=None
		#MODIFIE A PARTIR D'ICI--------------------------------------------------------------
		self.tour=1
		self.cartes_restantes=pack.liste_cartes
		self.atouts_restants=pack.liste_cartes[1:22]
		self.excuse_restante=True
		self.remplacant_excuse=carte("debut","as")
		self.coupes=[]
		for i in xrange(0,5):
			self.coupes.append({"atout":False, "trefle":False,"pique":False,"carreau":False,"coeur":False})
		self.appele_connu=False
		self.tours_a= {"trefle":0,"pique":0,"carreau":0,"coeur":0,"atout":0}
		self.appelant_gagnant=False
		#FIN MODIF ----------------------------------------------------
		'''Fin de la reinitialisation'''
		return pack.chien
Example #6
0
	def observe(self,n): # Le joueur numero n vient de jouer. La fonction observe rend compte de ce que peut enregistrr un observateur exterieur qui ne voit
		#le jeu de personne, qui ne voit que le plateau de jeu
		
		#Deja on enregistre le fait que la carte c ait ete jouee
		c=self.pli[len(self.pli)-1]
		col=c.couleur
		if col=="excuse":
			self.excuse_restante=False
		if col=="atout":
			self.atouts_restants.remove(c)
		'''if c in self.tetes_restantes:
			self.tetes_restantes.remove(c)'''
		self.cartes_restantes.remove(c)
		#Puis on enregistre le fait que le joueur ait eventuellement coupe/pisse
		col=self.couleur_demandee(self.pli)
		if col != "choix" and c.couleur != col and c.couleur!="excuse":
			self.coupes[n][col]=True #Ameliorable, on le refait a chaque tour ou le mec coupe
			if col!="atout" and c.couleur!="atout":
				self.coupes[n]["atout"]=True # Le joueur n'a plus d'atouts
		#Puis on regarde si le roi appele a ete joue, ou si on sait avec certitude qui est le roi appele ( dans l'ordre )
		if self.appele_connu==False:
			if carte(self.roi_appele,"roi") in self.pli:
				self.appele_connu=True
			else:
				k=1
				while k<5 and self.coupes[((self.appele)+k)%5][self.roi_appele]==True:
					k+=1
				if k==5: #L'appelant s'est appele lui-meme, ou du moins le roi est dans le chien ou dans son jeu
					self.appele_connu=True
Example #7
0
 def appel_roi(self): # Annonce a la couleur ou il a la plus haute carte ( sauf le roi ), sinon, c'est qu'il a les 4 rois, il s'appelle tout seul
     self.tri_main()
     maximum=-1
     col=None
     for c in self.main:
         if c.couleur != "atout" and carte(c.couleur,"roi") not in self.main and c.hauteur > maximum:
             maximum=c.hauteur
             col=c.couleur
     if col == None:
         col="trefle"
     self.roi_appele=col