Как начать движение черепахи через пробел с питоном
Я пытаюсь настроить простую программу для черепашек на 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()
2 ответа
Я не вижу, чтобы вы когда-нибудь получили ответ на свой вопрос:
начните двигать черепаху нажатием клавиши пробела, и он продолжает двигаться, пока я снова не нажму клавишу пробела
Предлагаемый onkeypress()
Fix не делает этого. Вот упрощенный пример, который делает то, что вы хотите, запускает черепашку, когда вы нажимаете клавишу пробела, и останавливает ее, когда вы снова нажимаете клавишу пробела:
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()
Я использовал круговое движение в этом примере, чтобы вы могли запускать и останавливать черепаху столько, сколько хотите.
Замените функцию "onkey" на функцию "onkeypress".
Функция "onkey" срабатывает один раз, независимо от нажатия клавиши, в то время как "onkeypress" срабатывает так, как вы ожидаете, удерживая клавишу.
Правильный и самый простой способ - это (НЕ ДЛЯ ПРОБЕЛ СЛУШАНИЯ СОБЫТИЙ, ЭТО ПРОСТО СЛУШАТЕЛИ СОБЫТИЙ):
import turtle
import random
t = turtle.Turtle()
screen = turtle.Screen(
def goForward():
t.forward(input_value)
screen.onkey(goForward, "Forward")
Слово "право" в хэштегах означает только нажатие правой клавиши.