You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Turtle实现流畅稳定的WASD移动问题求助

Turtle实现流畅稳定的WASD移动问题求助

大家好,我正在用Python的Turtle库调试移动功能,想要实现稳定的2D WASD控制移动——这里说的“稳定”是指移动速度始终一致,不会出现卡顿或者莫名其妙的速度突增情况。我已经把按键映射到字典里来解决按键延迟的问题了,但还是没能达到理想的效果,以下是我目前的代码:

import turtle

keys = {
    "w": False,
    "s": False,
    "a": False,
    "d": False
}

turtle.setup(800, 590)
turtle.delay(0)
turtle.tracer(0, 0)

wn = turtle.Screen()
player = turtle.Turtle()
player.speed(4)

def movement():
    if keys["w"]:
        player.goto(player.xcor(), player.ycor() + 3)
    if keys["s"]:
        player.goto(player.xcor(), player.ycor() - 3)
    if keys["a"]:
        player.goto(player.xcor() - 3, player.ycor())
    if keys["d"]:
        player.goto(player.xcor() + 3, player.ycor())
    turtle.update()

def c_keys(key, value):
    keys[key] = value

wn.onkeypress(lambda: c_keys("w", True), "w")
wn.onkeyrelease(lambda: c_keys("w", False), "w")
wn.onkeypress(lambda: c_keys("s", True), "s")
wn.onkeyrelease(lambda: c_keys("s", False), "s")
wn.onkeypress(lambda: c_keys("a", True), "a")
wn.onkeyrelease(lambda: c_keys("a", False), "a")
wn.onkeypress(lambda: c_keys("d", True), "d")
wn.onkeyrelease(lambda: c_keys("d", False), "d")

wn.listen()

while True:
    movement()

希望有经验的小伙伴能帮我看看问题出在哪,非常感谢!

备注:内容来源于stack exchange,提问作者bread

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 14:42:50