from random import *
#On identifie les potencielles erreurs afin de faciliter la lecture du programme pour l'utilisateur
erreur = []
for i in range (52):
erreur.append(i)
def bataille(cartes1,cartes2,joueur):
#On ragarde si les information entrées par l'utilisateur sonr coérantes, sinn, on lui demande réésayer
E=0
for i in erreur:
if i == joueur:
E = 1
if E == 0:
return '!! IL Y A UNE ERREUR DANS LA SAISIE, VEUILLEZ REESAYER !!, vous devez chosir un nombre de joueur compris entre 1 et 52 (inclu)'
#on défini les variables et on demande à l'utilisateur si il veux jouer
a = 0
cartes={}
gagne={}
points=[[0]for i in range(52)]
eg=0
eglist={}
gagant=0
JG=0
lstJG=[]
print("Les règles suivantes sont simples et fidèles au jeu original de la bataille, la seule différence réside dans le comptage des points. En effet, ils s'affichent à la fin et pour gagner, il faut en avoir le plus. Les premiers crochets correspondent au joueur 0, les deuxièmes au joueur 1, les troisièmes au joueur 3 etc...")
#on définit les cartes
for i in cartes2:
for j in cartes1:
cartes[a]=i,j
a +=1
#on mélange les cartes
for i in range (52):
mel = randint(0,51)
cartes[i],cartes[mel]=cartes[mel],cartes[i]
#On défini le rapport de force entre les cartes
for i in range (1,10):
gagne[(i+1, 'pique')]=i
gagne[(i+1, 'coeur')]=i
gagne[(i+1, 'trefle')]=i
gagne[(i+1, 'carreau')]=i
gagne[('valet', 'pique')]=10
gagne[('valet', 'coeur')]=10
gagne[('valet', 'carreau')]=10
gagne[('valet', 'trefle')]=10
gagne[('reine', 'pique')]=11
gagne[('reine', 'coeur')]=11
gagne[('reine', 'carreau')]=11
gagne[('reine', 'trefle')]=11
gagne[('roi', 'pique')]=12
gagne[('roi', 'coeur')]=12
gagne[('roi', 'carreau')]=12
gagne[('roi', 'trefle')]=12
gagne[('As', 'pique')]=13
gagne[('As', 'coeur')]=13
gagne[('As', 'carreau')]=13
gagne[('As', 'trefle')]=13
#on répartie les cartes
joueurs=[[cartes[i*joueur+j] for i in range (52//joueur)]for j in range(joueur)]
#On joue les cartes
for i in range (52//joueur):
gagant=0
eg=0
eglist.clear()
A=[]
A.clear()
for j in range(joueur):
print('-->'+'joueur '+str(j)+' '+str(joueurs[j][i]))
if gagne[joueurs[j][i]]>gagant:
gagant=gagne[joueurs[j][i]]
b=j
c=i
for j in range(joueur):
if gagne[joueurs[j][i]]==gagant:
eglist[j]=joueurs[j][i]
eg += 1
if len(eglist)>1:
print ("Il y a une egalité ! Nous avons donc placé une carte inconnue à l'envers du paquet des joueurs ayant tirés la même carte. Nous allons maintenant refaire un tour, avec eux seulement:")
gagant=0
eg = 0
for z in eglist:
print ('joueur'+str(z)+str(joueurs[z][i-1]))
if gagne[joueurs[z][i-1]]>gagant:
gagant=gagne[joueurs[z][i-1]]
Z=z
for e in eglist:
if gagne[joueurs[e][i-1]]==gagant:
eg += 1
if eg >= 2:
points[e][0] += 2
A.append(e)
J = 'les gagnants sont les joueurs:'+str(A)
eg = 5
if eg != 5:
points[Z][0] += 2
J = 'le gagnant est le joueur'+str(Z)
else:
points[b][0] += 1
J = 'le gagnant est le joueur:'+str(b)
J=J.upper()
print('_')
print(J)
print('_')
print('_')
print('''
''')
#fin du tour
for i in range(52):
if points[i][0]>JG:
JG=points[i][0]
for i in range(52):
if points[i][0]==JG:
lstJG.append(i)
print('Fin de Partie')
print('LE OU LES JOUEURS(S) GAGANT(S) SONT LES JOUEURS'+str(lstJG))
return points
print(bataille(['trefle','carreau','pique','coeur'],[2,3,4,5,6,7,8,9,10,'valet','reine','roi','As'],int(input('Quel est le nombre de joueurs?'))))