Turtle.screen, "onkeypress" ne fonctionne pas

Résolu
Haspic Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -  
Haspic Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'essaie de faire en sorte que lorsque j'appuie sur la barre espace, il m'ajoute 1 au score "space" or cela ne marche pas du tout. Si j'utilise "onclick" par contre là ça marche..

voici le code:

import turtle

setup = turtle.Turtle()
mouse = turtle.Screen()

score = 0

setup.penup()
setup.speed(0)

setup.right(90)
setup.goto(-300, 300)

for a in range(5):
setup.write("[Upgrade]")
setup.forward(50)

setup.forward(200)
setup.write(score)

setup.hideturtle()

def whereClick(x, y):
#print("x=", int(x) ,"/","y=", int(y))

if -300<=int(x)<=-255 and 300<=int(y)<=312 :
print("Element 1 upgraded !")

if -300<=int(x)<=-255 and 250<=int(y)<=262 :
print("Element 2 upgraded !")

if -300<=int(x)<=-255 and 200<=int(y)<=212 :
print("Element 3 upgraded !")

if -300<=int(x)<=-255 and 150<=int(y)<=162 :
print("Element 4 upgraded !")

if -300<=int(x)<=-255 and 100<=int(y)<=112 :
print("Element 5 upgraded !")

def space():
global score
score += 1
print(score)

mouse.listen
mouse.onclick(whereClick)
mouse.onkeypress(space, "space")

while True:
mouse.update()

turtle.done()

5 réponses

  1. Haspic Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
     
    c'est ce que j'ai fait pourtant..

    import turtle
    
    setup = turtle.Turtle()
    mouse = turtle.Screen()
    
    score = 0
    
    setup.penup()
    setup.speed(0)
    
    setup.right(90)
    setup.goto(-300, 300)
    
    for a in range(5):
    setup.write("[Upgrade]")
    setup.forward(50)
    
    setup.forward(200)
    setup.write(score)
    
    
    
    setup.hideturtle()
    
    def whereClick(x, y):
    #print("x=", int(x) ,"/","y=", int(y))
    
    if -300<=int(x)<=-255 and 300<=int(y)<=312 :
    print("Element 1 upgraded !")
    
    if -300<=int(x)<=-255 and 250<=int(y)<=262 :
    print("Element 2 upgraded !")
    
    if -300<=int(x)<=-255 and 200<=int(y)<=212 :
    print("Element 3 upgraded !")
    
    if -300<=int(x)<=-255 and 150<=int(y)<=162 :
    print("Element 4 upgraded !")
    
    if -300<=int(x)<=-255 and 100<=int(y)<=112 :
    print("Element 5 upgraded !")
    
    def space():
    global score
    score += 1
    print(score)
    
    mouse.listen
    mouse.onclick(whereClick)
    mouse.onkeypress(space, "space")
    
    while True:
    mouse.update()
    
    turtle.done()
    0
    1. Haspic Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
       
      ah je n'avais pas indiqué python, c'est vrai que c'est mieux ^^'
      0
  2. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    De toutes façon, dès que tu clique 'valider', le code apparait forcément balisé dans ton message: tu le vois de suite si c'est fait ou pas …
    0
  3. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Je ne connais pas bien Turtle, mais ce ne serait pas onkey au lieu de onkeypress ?

    Et comme dans tout truc graphique, il ne manquerait pas une boucle d'attente des évènements à la fin, du genre turtle.mainloop() ?
    0
    1. Haspic Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
       
      les deux marchent existent, mais aucuns des deux ne marchent, et pour la boucle, j'utilise ça:
      while True:
      mouse.update()


      ça garde le programme ouvert comme une boucle.
      Mais j'ai aussi essayé une boucle, ça ne marche pas non plus..
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    ????

    Il ne manque pas une indentation ?

    while(True):
        mouse.update()
    


    et donc tu as essayé turtle.mainloop ?
    0
    1. Haspic Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
       
      si il y a une indentation, j'ai juste oublié de la mettre dans mon message,
      mais oui j'ai essayé avec turtle.mainloop
      0