You are not logged in.
The forum to cure all your computer anxieties
Bonjour, j'essaie de faire le défi du poker avec easygui. Je voudrais afficher les images des cartes de ma combinaison. J'ai téléchargé 52 images, et pillow pour les afficher. Je peux les afficher une par une sans souci, mais mon intention est d'avoir les 5 cartes de ma combinaison dans une msgbox. J'ai vu sur stack overflow qu'il est impossible d'afficher plus d'une image avec easygui, et je n'ai rien vu sur la doc, mais mes informations datent de 2014. Peut-être qu'il y a eu une mise à jour. Je ne voudrais pas avoir à utiliser Tkinter pour ce projet. Merci d'avance
Offline
Bonjour Louis, l'intérêt de ce projet est plus algorithmique que graphique...Il faut construire avec un minimum de code les mains de manière aléatoire. Il ne faut bien sûr pas rentrer à la main 52 cartes mais les faire fabriquer automatiquement. Vous pouvez, si vous tenez à avoir quelque chose d'un peu graphique, utiliser les caractères correspondant aux couleurs via leurs points de code : 9824, 9827, 9829 et 9830.
Une fois ces mains aléatoirement produites, un défi assez difficile est de les classer. Ou déjà décider qui a la main la plus forte.
Offline
J'y travaille
Offline
C'est le principal ! Y arriver sera un plus
Offline
J’ai peur que sans le “if”, la fonction ne s’arrête jamais.
Pense que ton while peut prendre en compte plusieurs conditions.
De plus, ton :
renvoie un booléen dont tu pourrais te servir pour faire le return.
Voici donc ma proposition qui prend en compte tous mes "conseils" :
Last edited by Ethan B.G. (18-Dec-2019 17:10:42)
Offline
https://gitlab.com/LBruneteau/nsi/tree/master/Poker/
Voici mon gitlab. Il y a mon programme de poker dessus. Il est fonctionnel mais quelques fonctionnalités manquent:
-Quand on a une paire ou une double paire le programme ne nous dit pas laquelle
-L'esthétique est à retravailler
-Comparaison entre les mains
-Optimisation générale
-Peut-être un multijoueur pour vraiment jouer au poker
Offline
Bel effort Louis !! Cela va mériter un travail à long terme, au fur et à mesure de nos explorations. Nous aurons en particulier besoin de fonctions. Vous pourrez revenir dessus et l'améliorer. En tout cas, c'est bien présenté, clair. Point de vue style, essayer d'éviter les cascades de if.
Offline
### glossaire unicode ###
#
# ᛟ = 16DD
# ᛯ = 16DE
# ᛰ = 16F0
#
#########################
################################
### INITIALISATION DU JEU ###
################################
# Importer easygui
import easygui as eg
# dictionnaire
dico:dict = {0:"ᛰ | ", 1:"ᛯ | ", 2:"ᛟ | "}
# pour utiliser easygui
titre = "Puissance 4 runique"
QJ1 = "Que ᛯ joue"
QJ2 = "Que ᛟ joue"
msg_vic = "Le maître des runes est "
##############################
### Mise en place du jeu ###
##############################
L0 = [0, 0, 0, 0, 0, 0, 0]
L1 = [0, 0, 0, 0, 0, 0, 0]
L2 = [0, 0, 0, 0, 0, 0, 0]
L3 = [0, 0, 0, 0, 0, 0, 0]
L4 = [0, 0, 0, 0, 0, 0, 0]
L5 = [0, 0, 0, 0, 0, 0, 0]
# tableau 7x6 (0 = vide, 1 = J1, 2 = J2)
tableau = [L0, L1, L2, L3, L4, L5]
### 42 tours maximum
##############################
### Mise en forme du msg ###
##############################
def mise_en_forme(tableau):
tableau_à_afficher = "1 | 2 | 3 | 4 | 5 | 6 | 7 \n --------------------------- \n"
for L in range(6):
for C in range(7):
case = tableau[L][C]
conv = dico[case]
tableau_à_afficher += conv
tableau_à_afficher += "\n --------------------------- \n"
return tableau_à_afficher
#######################
### Test 4 alignés ###
#######################
def test_aligné(tableau, Joueur):
aligné = 0
for TestHorizontal in range(7):
if tableau[y][TestHorizontal] == Joueur:
aligné += 1
else:
aligné = 0
if aligné == 4:
eg.msgbox(msg = msg_vic + dico[Joueur], title = titre)
aligné = 0
for TestVertical in range(6):
if tableau[TestVertical][x] == Joueur:
aligné += 1
else:
aligné = 0
if aligné == 4:
eg.msgbox(msg = msg_vic + dico[Joueur], title = titre)
######################
### Début du jeu ###
######################
for i in range(21):
########
tableau_à_afficher = mise_en_forme(tableau)
########
#################
### TOUR J1 ###
#################
joueur = 1
### Choix colonne
x = int(eg.enterbox(msg = tableau_à_afficher + "\n" + QJ1, title = titre, default = ""))-1
y = 0
### Placement jeton
while y < 5 and tableau[y+1][x] != 2 and tableau[y+1][x] != 1:
y = y + 1
tableau[y][x] = joueur
test_aligné(tableau, joueur)
##########
tableau_à_afficher = mise_en_forme(tableau)
##########
#################
### TOUR J2 ###
#################
joueur = 2
### Choix colonne
x = int(eg.enterbox(msg = tableau_à_afficher + "\n" + QJ2, title = titre, default = ""))-1
y = 0
### Placement jeton
while y < 5 and tableau[y+1][x] != 2 and tableau[y+1][x] != 1:
y = y + 1
tableau[y][x] = joueur
test_aligné(tableau, joueur)
VOILA MON PUISSANCE 4 POUR DETERMINER LE MEILLEUR MAÎTRE DES RUNES
bon,
Je sens qu'il est pas opti et qu'il y a beaucoup de bricolage.
problème :
- j’ai pas eu le temps de faire le message pour après 42 tours
- si on met un jeton dans une colonne pleine, je n’ai rien prévu
- je n'ai pas réussi à faire les tests en diagonnal
if tableau[test_x][test_y] == Joueur:
aligné += 1
else:
aligné = 0
if aligné == 4:
eg.msgbox(msg = msg_vic + Joueur, title = titre)
while test_y <= 5 and test_x <= 6:
if tableau[test_x][test_y] == Joueur:
aligné += 1
else:
aligné = 0
if aligné == 4:
eg.msgbox(msg = msg_vic + Joueur, title = titre)
test_x = x
test_y = y
while test_y >= 0 and test_x >= 0:
if tableau[test_x][test_y] == Joueur:
aligné += 1
else:
aligné = 0
if aligné == 4:
eg.msgbox(msg = msg_vic + Joueur, title = titre)
while test_y <= 5 and test_x <= 6:
if tableau[test_x][test_y] == Joueur:
aligné += 1
else:
aligné = 0
if aligné == 4:
eg.msgbox(msg = msg_vic + Joueur, title = titre)
j'ai testé ça mais ça bloquait mon script
Je me suis inspiré du poker de Louis, notamment pour le dico
Last edited by Pacôme Giraudeau (19-Dec-2019 08:02:34)
Offline
Ah, ils sont incorrigibles !! Je n'ai même pas le temps de parler de tableaux, de fonctions, de dictionnaires....Je pensais bien vous donner un puissance 4...mais plus tard ! Effectivement, il faut être habitué aux tableaux avant de se lancer dans un projet ambitieux. On en parle demain car il est quand même minuit ! Ensuite on pourra penser IA, jouer contre la machine, faire jouer des machines entre elles, faire de belles interfaces graphiques, que du bonheur
Offline
import matplotlib.pyplot as plt
def drapeau(couleur:str)-> None:
"""
rentre une couleur sous forme de chaîne (noir, rouge, vert, bleu)
affiche un drapeau en forme de croix blanche sur fond de couleur choisie
renvoie None
"""
# formation du drapeau sous forme de tableau
# 5 premières lignes
image = [ [0 if no_col != 5 else 255 for no_col in range(16)] for no_ligne in range(5) ]
# 6 ème ligne
image.append([ 255 for no_col in range(16) ])
# 5 dernières lignes
for no_ligne in range(5):
image.append([ 0 if no_col != 5 else 255 for no_col in range(16) ])
# choix couleur
color_choisie = "rouge"
couleur = "gray" if color_choisie == "noir" else "Reds_r" if color_choisie == "rouge" else "Greens_r" if color_choisie == "vert" else "Blues_r" if color_choisie == "bleu" else "pink_r"
# affichage
plt.imshow(image, cmap = couleur)
plt.show()
# fin de la fonction
return None
Offline
Bonsoir, j'ai une question qui pourrait paraître évidente pour certain...
Pourquoi certaines fonctions ont des paramètres mais d'autres pas ?
Merci d'avance.
Offline
Imagine tu veux une fonction qui affiche juste "bonjour"
Tu peux faire :
>>> bonjour()
bonjour
Cette fonction a juste besoin d'afficher "bonjour". Peu importe quand tu appelle la fonction, la même action se produira,
Mais si tu veux qu'elle affiche "bonjour" + prénom, il faut un paramètre car ce qui va être affiché peut être différent
>>>bonjour("Nicolas")
bonjour Nicolas
>>>bonjour("Pacôme")
bonjour Pacôme
ça t'a aidé ?
Last edited by Pacôme Giraudeau (08-Jan-2020 22:24:10)
Offline
Les enfants, les enfants, un peu d'ordre. Ce n'est pas Messenger. Un forum doit servir à progresser et travailler. On doit pouvoir retrouver les réponses et propositions de chacun. C'est pourquoi chaque fil a un titre et si on veut poser une question sur un autre thème il faut créer un nouveau fil.
Cela vaut pour Pacôme qui doit créer un fil : drapeau coloré
et pour Alexandre qui doit créer un fil "arguments d'une fonction " par exemple.
Quelques règles simples pour faciliter la compréhension et l'apprentissage.
Offline
Oui merci Pacôme et désolé pour le message messenger
Offline