首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何开始使用python通过空格键移动乌龟

如何开始使用python通过空格键移动乌龟
EN

Stack Overflow用户
提问于 2015-04-28 03:10:50
回答 3查看 6.4K关注 0票数 2

我正在尝试用python创建一个简单的海龟程序,我可以通过按下空格键开始移动海龟,它会一直移动,直到我再次按下空格键。我可以让他用空格键移动一段固定的距离,但不能让它继续。

以下是我正在使用的内容:

代码语言:javascript
复制
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()
EN

回答 3

Stack Overflow用户

发布于 2016-12-17 03:24:56

我不知道你的问题有没有答案:

开始按下空格键来移动乌龟,他一直在移动,直到我再次按下空格键

建议的onkeypress()修复不能做到这一点。这是一个简单的例子,它可以做你想做的,当你点击空格键时启动乌龟,当你再次点击空格键时停止它:

代码语言:javascript
复制
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()

我在这个例子中使用了圆周运动,这样你就可以随意启动和停止乌龟了。

票数 2
EN

Stack Overflow用户

发布于 2015-04-28 04:19:33

将函数'onkey‘替换为函数'onkeypress’。

不管按住这个键,'onkey‘函数都会触发一次,而'onkeypress’函数会触发,就像您按住这个键时所期望的那样。

票数 0
EN

Stack Overflow用户

发布于 2020-05-28 08:28:33

正确且最简单的方法是这样(不是事件侦听器空格键,这只是事件侦听器):

代码语言:javascript
复制
import turtle 
import random

t = turtle.Turtle()
screen = turtle.Screen(

def goForward():
  t.forward(input_value)

screen.onkey(goForward, "Forward")

hashtags中的" right“一词只表示按下正确的键。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29904032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档