我正在为一个班级项目制作一个带有乌龟图形的迷宫,在我完成之前我还有一件事需要完成......
我已经创建了第二个“乌龟”来在终点处制作一个盒子。因此,目标是完成迷宫并将乌龟放入盒子中。但我不确定如何使盒子成为一个实际的端点并弹出一条消息。
这是我的代码:
from turtle import Turtle, Screen
screen = Screen()
screen.setup(650, 850)
screen.title("Turtle Keys")
screen.bgpic('scooby_doo_maze.gif')
move = Turtle(shape="triangle")
move.penup()
move.setx(-150)
move.sety(200)
move.pendown()
move.pensize(5)
box = Turtle(shape="square")
box.hideturtle()
box.speed(0)
box.penup()
box.setx(150)
box.sety(-190)
box.pendown()
box.right(90)
box.forward(100)
box.right(90)
box.forward(100)
box.right(90)
box.forward(100)
box.right(90)
box.forward(100)
def keyUp():
move.forward(12)
def keyLeft():
move.left(90)
def keyRight():
move.right(90)
def keyDown():
move.backward(12)
def keyReset():
move.reset()
move.penup()
move.setx(-150)
move.sety(200)
move.pendown()
move.pensize(5)
screen.onkey(keyUp, "Up")
screen.onkey(keyLeft, "Left")
screen.onkey(keyRight, "Right")
screen.onkey(keyDown, "Down")
screen.onkey(keyReset, "r")
screen.listen()
screen.exitonclick()
答案 0 :(得分:0)
我们只需要添加一些功能。首先,我们不是用乌龟box
绘制终点,而是通过box
扩展乌龟本身来制作海龟box.shapesize()
。这样,我们就可以使用move.distance(box)
来确定move
是否位于box
的中心附近。
其次,我们需要一个由所有运动函数调用的函数来测试距离是否足够接近,然后调用以下内容:
第三,我们引入screen.textinput()
让游戏知道他们已经成功并提供再玩一次或退出的选项。我已经重新编写了下面的代码,介绍了这些新增内容并稍微调整了一下风格:
from turtle import Turtle, Screen
screen = Screen()
screen.setup(650, 850)
screen.title("Turtle Keys")
screen.bgpic('scooby_doo_maze.gif')
def insideBox():
if move.distance(box) < 60:
play_again = screen.textinput("Success!", "Play again?")
if play_again and play_again.lower().startswith('y'):
keyReset()
else:
screen.bye()
def keyUp():
move.forward(12)
insideBox()
def keyLeft():
move.left(90)
def keyRight():
move.right(90)
def keyDown():
move.backward(12)
insideBox()
def keyReset():
move.reset()
move.penup()
move.goto(-150, 200)
move.pendown()
move.pensize(5)
screen.listen() # it's here because screen.textinput() unsets it
screen.onkey(keyUp, "Up")
screen.onkey(keyLeft, "Left")
screen.onkey(keyRight, "Right")
screen.onkey(keyDown, "Down")
screen.onkey(keyReset, "r")
move = Turtle(shape="triangle")
keyReset()
box = Turtle(shape="square")
box.color("black", "white")
box.shapesize(5, 5, 5)
box.penup()
box.goto(150, -190)
screen.mainloop()
在这种情况下,我会避免screen.exitonclick()
,因为您需要点击窗口让它听,并轻松地结束它!使用screen.mainloop()
就足够了,让用户通过不再选择再次播放或使用窗口控件来关闭窗口。