你如何使用dx?

How do you use dx?

我的代码有一个小问题:

import turtle

wn = turtle.Screen()
wn.bgcolor('lightblue')

cup = turtle.Turtle()
cup.shape('square')
cup.shapesize(1.5, 1)
cup.speed(0)
cup.dy = 1
cup.dx = 2
cup.penup()

gravity = 0.1


def face_right():
    cup.setheading(310)


def face_left():
    cup.setheading(45)


def jump_right():
    cup.dy *= -1


def jump_left():
    cup.dx *= -1
    cup.dy += gravity


def do_right():
    jump_right()
    face_right()


def do_left():
    face_left()
    jump_left()


wn.listen()

wn.onkeypress(do_right, 'Right')
wn.onkeypress(do_left, 'Left')


wn.listen()

while True:
    wn.update()
    cup.dy -= gravity
    cup.sety(cup.ycor() + cup.dy)

    cup.setx(cup.xcor() + cup.dx)

如您所见,当您 运行 代码时,“向右跳转”功能运行良好。跳左一?没那么多。我尝试通过尝试大量不同的可能组合来解决这个问题,但 none 似乎有效。我在游戏中想要的只是向右跳的功能,但是当按下左箭头键时它会向左跳。我被要求只用乌龟做一个完整的游戏,但我不知道我是否还能继续。

非常感谢!

PS 我正在使用 python 3

dxdy是位置变化量。如果dx为2,表示在一定时间内重复右移2。还有,dy是上下位置的变化量。您通过添加或减去而不是乘以更改量来实现它。乘法会非常突然地改变位置的变化量,乘以负数意味着改变方向。以下是您的代码的修改后的代码。

import turtle

wn = turtle.Screen()
wn.bgcolor('lightblue')

cup = turtle.Turtle()
cup.shape('square')
cup.shapesize(1.5, 1)
cup.speed(0)
cup.dy = 1
cup.dx = 2
cup.penup()

gravity = 0.1


def face_right():
    cup.setheading(310)


def face_left():
    cup.setheading(45)


def jump_right():
    cup.dx += 3
    cup.dy += 3


def jump_left():
    cup.dx += -3
    cup.dy += 3


def do_right():
    jump_right()
    face_right()


def do_left():
    face_left()
    jump_left()

wn.onkeypress(do_right, 'Right')
wn.onkeypress(do_left, 'Left')

wn.listen()

while True:
    wn.update()
    cup.dy -= gravity
    cup.sety(cup.ycor() + cup.dy)
    cup.setx(cup.xcor() + cup.dx)

或者如果你想要更快的移动和跳跃,

def jump_right():
    cup.dx = 3
    cup.dy = 3


def jump_left():
    cup.dx = -3
    cup.dy = 3