Bonjour ,

Je travaille actuellement sur une fonction et je rencontre des problèmes , mon jeux Pygame consiste à ce que mon personnage ramasse une rose et que celle-ci réaparaisse aléatoirement , néanmoins il y'a des obstacles sur la carte
donc qu'elle puis réapparaître partout sauf sur les obstacles , 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
 
 
def obstacle(x,y) :
 
    obstacle_arbre1.x =115
    obstacle_arbre1.y =107
 
    obstacle_arbre2.x =115
    obstacle_arbre2.y =107
 
    obstacle_boitepostale1.x =39
    obstacle_boitepostale1.y =44
 
    obstacle_boitepostale2.x =39
    obstacle_boitepostale2.y =44
 
    obstacle_maison.x =185
    obstacle_maison.y =115
 
    x = randint(0,600)
    y = randint(0,450)
 
 
    rect_obstacle_arbre1.x =40
    rect_obstacle_arbre1.y =95
 
    rect_obstacle_arbre2.x =40
    rect_obstacle_arbre2.y =265
 
    rect_obstacle_boitepostale1.x =185
    rect_obstacle_boitepostale1.y =20
 
    rect_obstacle_boitepostale2.x =185
    rect_obstacle_boitepostale2.y =430
 
    rect_obstacle_maison.x =285
    rect_obstacle_maison.y =217
 
 
    Liste_arbre1x =  [randint(0,rect_obstacle_arbre1.x-20),randint(20+ rect_obstacle_arbre1.x + obstacle_arbre1.x ,620)]
    Liste_arbre1y =  [randint(0,rect_obstacle_arbre1.y-20),randint(20+ rect_obstacle_arbre1.y + obstacle_arbre1.y,450)]
 
    Liste_arbre2x =  [randint(0,rect_obstacle_arbre2.x-20),randint(20+ rect_obstacle_arbre2.x + obstacle_arbre2.x ,620)]
    Liste_arbre2y =  [randint(0,rect_obstacle_arbre2.y-20),randint(20+ rect_obstacle_arbre2.y + obstacle_arbre2.y,450)]
 
    Liste_boitepostale1x =  [randint(0,rect_obstacle_boitepostale1.x-20),randint(20+ rect_obstacle_boitepostale1.x + obstacle_boitepostale1.x ,620)]
    Liste_boitepostale1y =  [randint(0,rect_obstacle_boitepostale1.y-20),randint(20+ rect_obstacle_boitepostale1.y + obstacle_boitepostale1.y,450)]
 
    Liste_boitepostale2x =   [randint(0,rect_obstacle_boitepostale2.x-20),randint(20+ rect_obstacle_boitepostale2.x + obstacle_boitepostale2.x ,620)]
    Liste_boitepostale2y =  [randint(0,rect_obstacle_boitepostale2.y-20),randint(20+ rect_obstacle_boitepostale2.y + obstacle_boitepostale2.y,450)]
 
    Liste_maisonx =  [randint(0,rect_obstacle_maison.x-20),randint(20+ rect_obstacle_maison.x + obstacle_maison.x ,620)]
    Liste_maisony =  [randint(0,rect_obstacle_maison.y-20),randint(20+ rect_obstacle_maison.y + obstacle_maison.y,450)]
 
 
    if rect_obstacle_arbre1.x-20 < x < 20+ rect_obstacle_arbre1.x + obstacle_arbre1.x and rect_obstacle_arbre1.y-20< y <20+ rect_obstacle_arbre1.y + obstacle_arbre1.y  : #arbre1
        x = random.choice(Liste_arbre1x)
        y = random.choice(Liste_arbre1y)
 
    elif rect_obstacle_arbre2.x-20 < x < 20+ rect_obstacle_arbre2.x + obstacle_arbre2.x and rect_obstacle_arbre2.y-20< y <20+ rect_obstacle_arbre2.y + obstacle_arbre2.y  : #arbre2
        x = random.choice(Liste_arbre2x)
        y = random.choice(Liste_arbre2y)
 
    elif rect_obstacle_boitepostale1.x-20 < x < 20+ rect_obstacle_boitepostale1.x + obstacle_boitepostale1.x and rect_obstacle_boitepostale1.y-20< y <20+ rect_obstacle_boitepostale1.y + obstacle_boitepostale1.y  : #boitepostale1
        x = random.choice(Liste_boitepostale1x)
        y = random.choice(Liste_boitepostale1y)
 
    elif rect_obstacle_boitepostale2.x-20 < x < 20+ rect_obstacle_boitepostale2.x + obstacle_boitepostale2.x and rect_obstacle_boitepostale2.y-20< y <20+ rect_obstacle_boitepostale2.y + obstacle_boitepostale2.y  : #boitepostale2
        x = random.choice(Liste_boitepostale2x)
        y = random.choice(Liste_boitepostale2y)
 
    elif rect_obstacle_maison.x-20 < x < 20+ rect_obstacle_maison.x + obstacle_maison.x and rect_obstacle_maison.y-20< y <20+ rect_obstacle_maison.y + obstacle_maison.y  : #maison
        x = random.choice(Liste_maisonx)
        y = random.choice(Liste_maisony)
 
    return x,y
 
 
 
#[...](plus bas dans le programme) 
 
        if rect_perso.colliderect(rect_rose)==True :
            rect_rose.x= obstacle(x)
            rect_rose.y= obstacle(y)
            recup_rose.play()
            score = score+1
            affichage()
Le message d'erreur est : name 'x' is not defined

Je ne comprends pas d'où vient le problème , merci à toute personne qui m'aidera !