from PIL import Image
from matplotlib.pyplot import imshow
import matplotlib.pyplot as plt
import numpy as np
deux_p = Image.open('2p.png','r')
deux_t = Image.open('2t.png','r')
deux_c = Image.open('2c.png','r')
deux_ca = Image.open('2ca.png','r')
main2=[deux_p,deux_c,deux_ca,deux_t]
for i in range(len(main2)) :
main2[i]=main2[i].convert('RGB')
# Une première méthode pour afficher une image
display(deux_p)
display(deux_c)
deux_p.close()
# Une deuxième méthode pour afficher une image
imshow(np.array(deux_p))
<matplotlib.image.AxesImage at 0x1edb0dc2310>
imshow(np.array(deux_t))
<matplotlib.image.AxesImage at 0x1edb10a4df0>
deux_t=deux_t.convert('RGB')
imshow(np.array(deux_t))
<matplotlib.image.AxesImage at 0x1edb1102a30>
plt.figure(figsize=(20,20))
for i in range(4):
ax=plt.subplot(5,5,i+1)
plt.subplots_adjust(hspace=0.5)
ax.set_xticklabels([])
ax.set_yticklabels([])
ax.xaxis.set_visible(False) #http://www.python-simple.com/python-matplotlib/configuration-axes.php
ax.yaxis.set_visible(False)
plt.imshow(np.array(main2[i]))
plt.show()
Il s'agit de tansformer les tuples en nom de fichier du type '4c' pour le tuple (4,'coeur')
def transforme(valeur,couleur):
nom=''
if valeur=='Roi' :
nom='r'
if couleur=='pique' : nom=nom+'p'
elif couleur=='carreau' : nom=nom+'ca'
elif couleur=='coeur' : nom=nom+'c'
else : nom=nom+'t'
elif valeur=='Valet' :
nom='v'
if couleur=='pique' : nom=nom+'p'
elif couleur=='carreau' : nom=nom+'ca'
elif couleur=='coeur' : nom=nom+'c'
else : nom=nom+'t'
elif valeur=='Dame' :
nom='d'
if couleur=='pique' : nom=nom+'p'
elif couleur=='carreau' : nom=nom+'ca'
elif couleur=='coeur' : nom=nom+'c'
else : nom=nom+'t'
else :
nom=str(valeur)
if couleur=='pique' : nom=nom+'p'
elif couleur=='carreau' : nom=nom+'ca'
elif couleur=='coeur' : nom=nom+'c'
else : nom=nom+'t'
return nom
maintest=[('Roi', 'pique'), ('Dame', 'coeur'), (1, 'carreau'), (9, 'pique'), (7, 'carreau')]
for i in range(len(maintest)) :
maintest[i]=transforme(maintest[i][0],maintest[i][1])
maintest
['rp', 'dc', '1ca', '9p', '7ca']
def affichage_main(main):
for i in range(len(main)) :
nom=''+transforme(main[i][0],main[i][1])+'.png'
main[i]=Image.open(nom,'r')
main[i]=main[i].convert('RGB')
plt.figure(figsize=(20,20))
for i in range(4):
ax=plt.subplot(5,5,i+1)
plt.subplots_adjust(hspace=0.5)
ax.set_xticklabels([])
ax.set_yticklabels([])
ax.xaxis.set_visible(False) #http://www.python-simple.com/python-matplotlib/configuration-axes.php
ax.yaxis.set_visible(False)
plt.imshow(np.array(main[i]))
plt.show()
affichage_main(maintest)
# -*- coding: utf-8 -*-
from random import *
import copy # Pour copier les listes en profondeur
couleur = ("pique", "coeur", "carreau", "trèfle")
valeur32 = ("Roi", "Dame", "Valet",1, 10, 9, 8, 7)
def creation_jeu32(couleur:tuple, valeur32:tuple)->list:
"Création dun jeu de 32 cartes à partir dun tuple de valeurs et de couleurs"
jeu32=[]
for c in couleur:
for v in valeur32:
jeu32.append((v,c))
# shuffle(jeu32)
# A vous de décider si vous voulez mélanger le jeu à la création
return jeu32
def melange(jeu:list)->list:
shuffle(jeu)
return jeu
def carte_hasard(jeu:list)->tuple:
melange(jeu)
carte=jeu[0]
jeu.capture
remove(carte)
return carte
def main(nombre_cartes: int,jeu:list)->list:
"Renvoie une main de nombre_cartes"
sol=[]
for i in range(nombre_cartes):
sol.append(jeu.pop(0))
return sol
def force(carte:tuple)->int:
"""le choix de la force ici est la valeur de la carte.
et valet=11 , dame=12 et roi=13"""
force=0
if carte[0]=='Valet':
force=11
elif carte[0]=='Dame':
force=12
elif carte[0]=='Roi':
force=13
else :
force=carte[0]
return force
def jeu_force(jeu:list)->dict:
"Cette fonction renvoie un dictionnaire qui donne une force à chaque carte"
jeu_force32={}
for carte in jeu :
jeu_force32[carte]=force(carte)
return jeu_force32
def compare(carte1:tuple,carte2:tuple,jeu_force:dict)->tuple:
"""On renvoie la carte avec la plus forte valeur"""
if jeu_force[carte1]<=jeu_force[carte2]:
forte=carte2
else:
forte=carte1
return forte
def transforme(valeur,couleur):
nom=''
if valeur=='Roi' :
nom='r'
if couleur=='pique' : nom=nom+'p'
elif couleur=='carreau' : nom=nom+'ca'
elif couleur=='coeur' : nom=nom+'c'
else : nom=nom+'t'
elif valeur=='Valet' :
nom='v'
if couleur=='pique' : nom=nom+'p'
elif couleur=='carreau' : nom=nom+'ca'
elif couleur=='coeur' : nom=nom+'c'
else : nom=nom+'t'
elif valeur=='Dame' :
nom='d'
if couleur=='pique' : nom=nom+'p'
elif couleur=='carreau' : nom=nom+'ca'
elif couleur=='coeur' : nom=nom+'c'
else : nom=nom+'t'
else :
nom=str(valeur)
if couleur=='pique' : nom=nom+'p'
elif couleur=='carreau' : nom=nom+'ca'
elif couleur=='coeur' : nom=nom+'c'
else : nom=nom+'t'
return nom
def affichage_main(maintest):
image_main=copy.deepcopy(maintest) # On fait une copie en profondeur pour avoir deux listes différentes.
for i in range(len(maintest)) :
nom=''+transforme(image_main[i][0],image_main[i][1])+'.png'
image_main[i]=Image.open(nom,'r')
image_main[i]=image_main[i].convert('RGB')
plt.figure(figsize=(25,25))
for i in range(len(maintest)):
ax=plt.subplot(7,5,i+1)
plt.subplots_adjust(hspace=0.5)
ax.set_xticklabels([])
ax.set_yticklabels([])
ax.xaxis.set_visible(False) #http://www.python-simple.com/python-matplotlib/configuration-axes.php
ax.yaxis.set_visible(False)
plt.imshow(np.array(image_main[i]))
plt.show()
return None
jeu32=melange(creation_jeu32(couleur,valeur32))
affichage_main(jeu32)
main5=main(5,jeu32)
affichage_main(main5)
print(main5)
[('Valet', 'pique'), (10, 'pique'), (10, 'carreau'), ('Dame', 'carreau'), ('Roi', 'pique')]
jeu32
[('Valet', 'carreau'), (1, 'trèfle'), (1, 'coeur'), ('Roi', 'pique'), (9, 'trèfle'), ('Dame', 'pique'), (1, 'carreau'), (8, 'pique'), ('Valet', 'coeur'), ('Dame', 'carreau'), ('Dame', 'trèfle'), ('Roi', 'coeur'), (10, 'coeur'), (10, 'carreau'), (9, 'pique'), (7, 'coeur'), ('Dame', 'coeur'), (10, 'pique'), (1, 'pique'), (7, 'carreau'), ('Roi', 'trèfle'), (7, 'trèfle'), (9, 'carreau'), (10, 'trèfle'), ('Roi', 'carreau'), ('Valet', 'pique'), (8, 'carreau')]
Avec tout cela, on peut simuler une bataille
jeu32=melange(creation_jeu32(couleur,valeur32))
joueur1=main(16,jeu32)
joueur2=jeu32
print(" La main du joueur 1")
affichage_main(joueur1)
print(" La main du joueur 2")
affichage_main(joueur2)
La main du joueur 1
La main du joueur 2
# Pour faire un test
force(joueur1[0])
1
def compare_bataille(carte1,carte2)->tuple:
"""On renvoie la carte avec la plus forte valeur"""
if force(carte1)<=force(carte2):
forte=carte2
else:
forte=carte1
return forte
# Pour faire un test
compare_bataille(joueur1[0],joueur2[0])
('Roi', 'carreau')
def pseudo_bataille(joueur1,joueur2):
"""
Simulation d'une pseudo bataille orid contre ordi avec des affichages pour faire des vérifications."""
nb_plis=0
compteur1=[]
compteur2=[]
import time
while joueur1!=[] and joueur2!=[] :
nb_plis+=1
print("plis n° :",nb_plis)
if joueur1!=[] :
print(" La carte du joueur 1")
affichage_main([joueur1[0]])
if joueur2!=[] :
print(" La carte du joueur 2")
affichage_main([joueur2[0]])
# time.sleep(0.500)
carte1,carte2=joueur1.pop(0),joueur2.pop(0)
carte_forte=compare_bataille(carte1,carte2)
if carte_forte==carte1 :
joueur2.append(carte_forte)
joueur2.append(carte2)
compteur1.append(len(joueur1))
compteur2.append(len(joueur2))
else :
joueur1.append(carte_forte)
joueur1.append(carte1)
compteur1.append(len(joueur1))
compteur2.append(len(joueur2))
return compteur1,compteur2,nb_plis
jeu32=melange(creation_jeu32(couleur,valeur32))
joueur1=main(16,jeu32)
joueur2=jeu32
print(" La main du joueur 1")
affichage_main(joueur1)
print(" La main du joueur 2")
affichage_main(joueur2)
c1,c2,nb_plis=pseudo_bataille(joueur1,joueur2)
La main du joueur 1
La main du joueur 2
plis n° : 1 La carte du joueur 1
La carte du joueur 2
plis n° : 2 La carte du joueur 1
La carte du joueur 2
plis n° : 3 La carte du joueur 1
La carte du joueur 2
plis n° : 4 La carte du joueur 1
La carte du joueur 2
plis n° : 5 La carte du joueur 1
La carte du joueur 2
plis n° : 6 La carte du joueur 1
La carte du joueur 2
plis n° : 7 La carte du joueur 1
La carte du joueur 2
plis n° : 8 La carte du joueur 1
La carte du joueur 2
plis n° : 9 La carte du joueur 1
La carte du joueur 2
plis n° : 10 La carte du joueur 1
La carte du joueur 2
plis n° : 11 La carte du joueur 1
La carte du joueur 2
plis n° : 12 La carte du joueur 1
La carte du joueur 2
plis n° : 13 La carte du joueur 1
La carte du joueur 2
plis n° : 14 La carte du joueur 1
La carte du joueur 2
plis n° : 15 La carte du joueur 1
La carte du joueur 2
plis n° : 16 La carte du joueur 1
La carte du joueur 2
plis n° : 17 La carte du joueur 1
La carte du joueur 2
plis n° : 18 La carte du joueur 1
La carte du joueur 2
plis n° : 19 La carte du joueur 1
La carte du joueur 2
plis n° : 20 La carte du joueur 1
La carte du joueur 2
plis n° : 21 La carte du joueur 1
La carte du joueur 2
plis n° : 22 La carte du joueur 1
La carte du joueur 2
plis n° : 23 La carte du joueur 1
La carte du joueur 2
plis n° : 24 La carte du joueur 1
La carte du joueur 2
plis n° : 25 La carte du joueur 1
La carte du joueur 2
plis n° : 26 La carte du joueur 1
La carte du joueur 2
plis n° : 27 La carte du joueur 1
La carte du joueur 2
plis n° : 28 La carte du joueur 1
La carte du joueur 2
plis n° : 29 La carte du joueur 1
La carte du joueur 2
plis n° : 30 La carte du joueur 1
La carte du joueur 2
plis n° : 31 La carte du joueur 1
La carte du joueur 2
plis n° : 32 La carte du joueur 1
La carte du joueur 2
plis n° : 33 La carte du joueur 1
La carte du joueur 2
plis n° : 34 La carte du joueur 1
La carte du joueur 2
plis n° : 35 La carte du joueur 1
La carte du joueur 2
plis n° : 36 La carte du joueur 1
La carte du joueur 2
plis n° : 37 La carte du joueur 1
La carte du joueur 2
plis n° : 38 La carte du joueur 1
La carte du joueur 2
plis n° : 39 La carte du joueur 1
La carte du joueur 2
plis n° : 40 La carte du joueur 1
La carte du joueur 2
plis n° : 41 La carte du joueur 1
La carte du joueur 2
plis n° : 42 La carte du joueur 1
La carte du joueur 2
plis n° : 43 La carte du joueur 1
La carte du joueur 2
plis n° : 44 La carte du joueur 1
La carte du joueur 2
plis n° : 45 La carte du joueur 1
La carte du joueur 2
plis n° : 46 La carte du joueur 1
La carte du joueur 2
plis n° : 47 La carte du joueur 1
La carte du joueur 2
plis n° : 48 La carte du joueur 1
La carte du joueur 2
plis n° : 49 La carte du joueur 1
La carte du joueur 2
plis n° : 50 La carte du joueur 1
La carte du joueur 2
plis n° : 51 La carte du joueur 1
La carte du joueur 2
plis n° : 52 La carte du joueur 1
La carte du joueur 2
plis n° : 53 La carte du joueur 1
La carte du joueur 2
plis n° : 54 La carte du joueur 1
La carte du joueur 2
plis n° : 55 La carte du joueur 1
La carte du joueur 2
plis n° : 56 La carte du joueur 1
La carte du joueur 2
plis n° : 57 La carte du joueur 1
La carte du joueur 2
plis n° : 58 La carte du joueur 1
La carte du joueur 2
plis n° : 59 La carte du joueur 1
La carte du joueur 2
plis n° : 60 La carte du joueur 1
La carte du joueur 2
plis n° : 61 La carte du joueur 1
La carte du joueur 2
plis n° : 62 La carte du joueur 1
La carte du joueur 2
plis n° : 63 La carte du joueur 1
La carte du joueur 2
plis n° : 64 La carte du joueur 1
La carte du joueur 2
plis n° : 65 La carte du joueur 1
La carte du joueur 2
plis n° : 66 La carte du joueur 1
La carte du joueur 2
plis n° : 67 La carte du joueur 1
La carte du joueur 2
plis n° : 68 La carte du joueur 1
La carte du joueur 2
plis n° : 69 La carte du joueur 1
La carte du joueur 2
plis n° : 70 La carte du joueur 1
La carte du joueur 2
plis n° : 71 La carte du joueur 1
La carte du joueur 2
plis n° : 72 La carte du joueur 1
La carte du joueur 2
plis n° : 73 La carte du joueur 1
La carte du joueur 2
plis n° : 74 La carte du joueur 1
La carte du joueur 2
plis n° : 75 La carte du joueur 1
La carte du joueur 2
plis n° : 76 La carte du joueur 1
La carte du joueur 2
plis n° : 77 La carte du joueur 1
La carte du joueur 2
plis n° : 78 La carte du joueur 1
La carte du joueur 2
print(c1)
print(c2)
print(nb_plis)
[15, 16, 15, 16, 17, 16, 17, 18, 19, 20, 19, 18, 17, 16, 17, 18, 19, 20, 21, 20, 21, 20, 21, 20, 21, 20, 19, 18, 17, 18, 19, 20, 19, 18, 17, 18, 19, 20, 19, 18, 17, 16, 17, 18, 17, 16, 15, 16, 17, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 26, 27, 28, 27, 26, 25, 24, 25, 26, 27, 28, 29, 30, 29, 30, 31, 32] [17, 16, 17, 16, 15, 16, 15, 14, 13, 12, 13, 14, 15, 16, 15, 14, 13, 12, 11, 12, 11, 12, 11, 12, 11, 12, 13, 14, 15, 14, 13, 12, 13, 14, 15, 14, 13, 12, 13, 14, 15, 16, 15, 14, 15, 16, 17, 16, 15, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 6, 5, 4, 5, 6, 7, 8, 7, 6, 5, 4, 3, 2, 3, 2, 1, 0] 78