代码:
import turtle
import random
import time
s = turtle.getscreen()
turtle.screensize(canvwidth=400, canvheight=400)
t = turtle.Turtle()
t.pensize(0)
t.shape('square')
t.color("black")
t.speed(0)
t.penup()
def moveu(num):
t.setheading(num)
t.forward(20)
s.onkey(lambda : moveu(90), 'w')
s.onkey(lambda : moveu(270), 's')
s.onkey(lambda : moveu(180), 'a')
s.onkey(lambda : moveu(0), 'd')
s.listen()
我还没有完成这个项目,但我遇到了一些问题。我想在turtle
模块中创建一个游戏。但我不知道如何防止积木向后移动。我见过其他人用t.direction
之类的东西。但我试过了,但没有真正起作用,也许我只是愚蠢,我做错了什么。如何防止正方形向相反方向移动
实际上,您的块只向前移动。如果将块的形状从
'square'
更改为'arrow'
,您将看到它总是朝着它所面对的方向移动。如果你想以某种方式限制它,我们需要更好地描述你想要或不想要的运动类型代码的简化版本,其中有一些小的调整:
您可以添加条件
if (t.heading() + 180) % 360 != num:
,这意味着如果海龟当前航向的相反方向不是数字传递到函数中的方向,则继续:就像cdlane在他们的answer中所说的那样,你的海龟只会向前移动。然而,你总是要求它面对你想要的方向,然后让它前进。相反,您应该检查它的当前方向,并且仅当它不与当前方向相反时才允许它移动
这只需要对
moveu()
函数稍作修改:现在,如果您先按
w
然后再按s
,您的乌龟将不会向下移动。但是,如果您先按w
,然后按a
,然后按s
,您的海龟将首先向左移动,然后向下移动这里有一个演示:我修改了cdlane的演示,在画布底部添加了另一个海龟来打印状态消息Code。我在
moveu()
函数中添加了几行来打印按下的键相关问题 更多 >
编程相关推荐