我正在尝试用python创建一个简单的海龟程序,我可以通过按下空格键开始移动海龟,它会一直移动,直到我再次按下空格键。我可以让他用空格键移动一段固定的距离,但不能让它继续。
以下是我正在使用的内容:
from turtle import *
# PUT YOUR CODE HERE
setup(800,600)
home()
pen_size = 2
color("blue")
title("Turtle")
speed("fastest")
drawdist= 25
current_state = penup
next_state = pendown
#Button Instructions
def move_up():
seth(90)
forward(drawdist)
def move_down():
seth(270)
forward(drawdist)
def move_left():
seth(180)
forward(drawdist)
def move_right():
seth(0)
forward(drawdist)
def space_bar():
seth(90)
forward(drawdist)
global current_state, next_state
next_state()
current_state, next_state = next_state, current_state
#Change Pen Color
def red():
color("red")
def green():
color("green")
def blue():
color("blue")
#Button Triggers
s= getscreen()
s.onkey(move_up,"Up")
s.onkey(move_down,"Down")
s.onkey(move_left,"Left")
s.onkey(move_right,"Right")
s.onkey(space_bar,"space")
s.onkey(red,"r")
s.onkey(green,"g")
s.onkey(blue,"b")
listen()
done()发布于 2016-12-17 03:24:56
我不知道你的问题有没有答案:
开始按下空格键来移动乌龟,他一直在移动,直到我再次按下空格键
建议的onkeypress()修复不能做到这一点。这是一个简单的例子,它可以做你想做的,当你点击空格键时启动乌龟,当你再次点击空格键时停止它:
from turtle import Turtle, Screen
screen = Screen()
turtle = Turtle(shape="turtle")
turtle.speed("fastest")
def current_state():
global moving
moving = False
turtle.penup()
def next_state():
global moving
turtle.pendown()
moving = True
move()
def space_bar():
global current_state, next_state
next_state()
current_state, next_state = next_state, current_state
def move():
if moving:
turtle.circle(100, 3)
screen.ontimer(move, 50)
current_state()
screen.onkey(space_bar, "space")
screen.listen()
screen.mainloop()我在这个例子中使用了圆周运动,这样你就可以随意启动和停止乌龟了。
发布于 2015-04-28 04:19:33
将函数'onkey‘替换为函数'onkeypress’。
不管按住这个键,'onkey‘函数都会触发一次,而'onkeypress’函数会触发,就像您按住这个键时所期望的那样。
发布于 2020-05-28 08:28:33
正确且最简单的方法是这样(不是事件侦听器空格键,这只是事件侦听器):
import turtle
import random
t = turtle.Turtle()
screen = turtle.Screen(
def goForward():
t.forward(input_value)
screen.onkey(goForward, "Forward")hashtags中的" right“一词只表示按下正确的键。
https://stackoverflow.com/questions/29904032
复制相似问题