Turtle.screen, "onkeypress" ne fonctionne pas

Résolu/Fermé
Haspic Messages postés 40 Date d'inscription dimanche 15 décembre 2019 Statut Membre Dernière intervention 18 août 2020 - 13 mai 2020 à 09:54
Haspic Messages postés 40 Date d'inscription dimanche 15 décembre 2019 Statut Membre Dernière intervention 18 août 2020 - 14 mai 2020 à 08:53
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

Bonjour Haspic,

Réaffiche ton code avec les balises de code:

https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
Haspic Messages postés 40 Date d'inscription dimanche 15 décembre 2019 Statut Membre Dernière intervention 18 août 2020
13 mai 2020 à 12:35
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
Haspic Messages postés 40 Date d'inscription dimanche 15 décembre 2019 Statut Membre Dernière intervention 18 août 2020
13 mai 2020 à 12:36
ah je n'avais pas indiqué python, c'est vrai que c'est mieux ^^'
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
13 mai 2020 à 13:04
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
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
13 mai 2020 à 13:15
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
Haspic Messages postés 40 Date d'inscription dimanche 15 décembre 2019 Statut Membre Dernière intervention 18 août 2020
13 mai 2020 à 16:33
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 13 mai 2020 à 17:24
????

Il ne manque pas une indentation ?

while(True):
    mouse.update()


et donc tu as essayé turtle.mainloop ?
0
Haspic Messages postés 40 Date d'inscription dimanche 15 décembre 2019 Statut Membre Dernière intervention 18 août 2020
14 mai 2020 à 08:53
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