Python Turtle小海龟无法正常上下移动问题求助
Python Turtle小海龟无法正常上下移动问题求助
嘿,我帮你找出问题啦!你的代码里有两个关键错误导致上下移动异常:
- 上下移动函数的坐标参数写错了:在
go_up和go_down函数里,你调用pen.setposition(newY, y),这相当于把x坐标改成了新的y值,y坐标却完全没变化,完全搞反了setposition()的参数顺序!setposition()的正确格式是(x坐标, y坐标),所以上下移动时应该保持x坐标不变,只修改y坐标,正确写法是pen.setposition(x, newY)。 - 每个移动函数里都调用了
turtle.done():这个函数执行后会直接终止整个程序的事件循环,导致你按一次键后程序就停止运行了,自然没法继续控制小海龟移动。必须把四个移动函数里的turtle.done()全部删掉。
下面是修正后的完整代码:
import turtle screen = turtle.Screen() screen.setup(600, 600) screen.bgcolor("white") pen = turtle.Turtle() pen.color("black", "black") pen.shape("circle") def go_left(): screen.onkeypress(None, "a") global pen pos = pen.pos() x, y = pos newX = x - 10 pen.setposition(newX, y) def go_right(): screen.onkeypress(None, "d") global pen pos = pen.pos() x, y = pos newX = x + 10 pen.setposition(newX, y) def go_up(): screen.onkeypress(None, "w") global pen pos = pen.pos() x, y = pos newY = y + 10 pen.setposition(x, newY) def go_down(): screen.onkeypress(None, "s") global pen pos = pen.pos() x, y = pos newY = y - 10 pen.setposition(x, newY) screen.onkeypress(go_up, "w") screen.onkeypress(go_down, "s") screen.onkeypress(go_left, "a") screen.onkeypress(go_right, "d") screen.listen() turtle.mainloop()
这样修改之后,你按W/S/A/D就能正常控制小海龟上下左右移动啦~
备注:内容来源于stack exchange,提问作者Jonan Vos
相关产品推荐
相关产品推荐

