Bonsoir,

je suis en train de programmer un jeu d'escape game avec pygame, cela va fonctionner avec la recherche de numéros cachés sur une image et résoudre des énigmes. Pour saisir les numéros, j'utilise un digicode : je sais que je pourrais utiliser le pavé numérique pour plus de facilité.
Mon problème est que lorsque je clique sur le digicode, je peux faire un print de chaque bouton mais pas de 2 chiffre ou plus.
j'arrive à afficher 1, 2, 3, 4, etc... séparément, Ce que je voudrais faire c'est par exemple afficher 15 après avoir cliqué sur 1 puis 5 et pour finir sur "ok". Et avec "cancel", faire un reset de ce que l'on vient de saisir avant.

voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
 
import pygame,sys
import time
from pygame.locals import *
 
pygame.display.init()
ecran = pygame.display.set_mode((1920, 1080)) #Crée la fenêtre de tracé
ecran.fill((127,127,127))
bg = pygame.image.load("images/plan_1.png") #charge une image à partir d'un fichier
bg= pygame.transform.scale(bg, (1280, 720))
ecran.blit(bg, (0,0)) #Colle l'image en haut à gauche de la fenêtre de tracé (ici, l'ecran)
pygame.display.flip() #L'affichage devient effectif : l'image est rendue visible.
 
 
buttons=[]
# Create Buttons
buttons.append({ "image" : pygame.image.load("images/1.png"), "position" : (1350, 25)})
buttons.append({ "image" : pygame.image.load("images/2.png"), "position" : (1540, 25)})
buttons.append({ "image" : pygame.image.load("images/3.png"), "position" : (1730, 25)})
buttons.append({ "image" : pygame.image.load("images/4.png"), "position" : (1350, 215)})
buttons.append({ "image" : pygame.image.load("images/5.png"), "position" : (1540, 215)})
buttons.append({ "image" : pygame.image.load("images/6.png"), "position" : (1730,215)})
buttons.append({ "image" : pygame.image.load("images/7.png"), "position" : (1350, 405)})
buttons.append({ "image" : pygame.image.load("images/8.png"), "position" : (1540, 405)})
buttons.append({ "image" : pygame.image.load("images/9.png"), "position" : (1730, 405)})
buttons.append({ "image" : pygame.image.load("images/cancel.png"), "position" : (1350, 595)})
buttons.append({ "image" : pygame.image.load("images/0.png"), "position" : (1540, 595)})
buttons.append({ "image" : pygame.image.load("images/ok.png"), "position" : (1730, 595)})
 
def drawButtons():
  for button in buttons:
    ecran.blit(button["image"], button["position"])
 
def event_mouse():
    for button in buttons:
        but_img = button['image']
        buttonSize = button['image'].get_rect().size
        buttonPosition = button['position']
        return but_img
 
def click_button(but_img):
    nbre="" # j'ai mis ceci car UnboundLocalError: local variable 'nbre' referenced before assignment
    if event.type == pygame.MOUSEBUTTONDOWN:
        x, y = event.pos
        if but_img.get_rect(topleft=(1350, 25)).collidepoint(x,y):
            nbre="1"
        if but_img.get_rect(topleft=(1540, 25)).collidepoint(x,y):
            nbre="2"
        if but_img.get_rect(topleft=(1730, 25)).collidepoint(x,y):
            nbre="3"
        if but_img.get_rect(topleft=(1350, 215)).collidepoint(x,y):
            nbre="4"
        if but_img.get_rect(topleft=(1540, 215)).collidepoint(x,y):
            nbre="5"
        if but_img.get_rect(topleft=(1730, 215)).collidepoint(x,y):
            nbre="6"
        if but_img.get_rect(topleft=(1350, 405)).collidepoint(x,y):
            nbre="7"
        if but_img.get_rect(topleft=(1540, 405)).collidepoint(x,y):
            nbre="8"
        if but_img.get_rect(topleft=(1730, 405)).collidepoint(x,y):
            nbre="9"
        if but_img.get_rect(topleft=(1350, 595)).collidepoint(x,y):
            nbre="cancel"
        if but_img.get_rect(topleft=(1540, 595)).collidepoint(x,y):
            nbre="0"
        if but_img.get_rect(topleft=(1730, 595)).collidepoint(x,y):
            nbre="ok"
        print(nbre)
 
 
loop=True
 
while loop: #Boucle d'événements
    time.sleep(0.1)
 
    for event in pygame.event.get(): #parcours de la liste des événements
        if(event.type==pygame.QUIT or ( event.type==pygame.KEYDOWN and event.key==pygame.K_ESCAPE)): #interrompt la boucle si nécessaire
            loop = False
 
        drawButtons()
        click_button(event_mouse())
 
 
 
    pygame.display.update()
pygame.quit()
 
loop = True
Pouvez-vous m'aider?
Merci