让一只Python只乌龟追逐另一只乌龟
Make one Python turtle chase another turtle
我正在创建一个游戏,用户使用键盘移动一只乌龟以避免另一只乌龟。这是我的代码:
import turtle
playGround = turtle.Screen()
playGround.screensize(500, 500)
playGround.title("Turtle Keys")
run = turtle.Turtle()
follow = turtle.Turtle()
run.shape("turtle")
follow.shape("turtle")
run.color("blue")
follow.color("red")
run.penup()
follow.penup()
run.st()
def k1():
run.forward(45)
def k2():
run.left(45)
def k3():
run.right(45)
def k4():
run.back(45)
def quitThis():
playGround.bye()
playGround.onkey(k1, "Up") # the up arrow key
playGround.onkey(k2, "Left") # the left arrow key
playGround.onkey(k3, "Right") # you get it!
playGround.onkey(k4, "Down")
playGround.onkey(quitThis,'q')
playGround.listen()
我想让红海龟追蓝海龟但是不行
您缺少的是 blue/follow 乌龟的计算机控制运动。我们可以通过添加一个 ontimer()
事件处理程序来做到这一点,该事件处理程序在 towards()
上调用 setheading()
以保持 blue/follow 面向 red/run。加上 blue/follow 上的一点点向前运动。像这样:
from turtle import Turtle, Screen
playGround = Screen()
playGround.screensize(500, 500)
playGround.title("Turtle Keys")
run = Turtle("turtle")
run.speed("fastest")
run.color("blue")
run.penup()
run.setposition(250, 250)
follow = Turtle("turtle")
follow.speed("fastest")
follow.color("red")
follow.penup()
follow.setposition(-250, -250)
def k1():
run.forward(10)
def k2():
run.left(45)
def k3():
run.right(45)
def k4():
run.backward(10)
def quitThis():
playGround.bye()
def follow_runner():
follow.setheading(follow.towards(run))
follow.forward(1)
playGround.ontimer(follow_runner, 10)
playGround.onkey(k1, "Up") # the up arrow key
playGround.onkey(k2, "Left") # the left arrow key
playGround.onkey(k3, "Right") # you get it!
playGround.onkey(k4, "Down")
playGround.onkey(quitThis, 'q')
playGround.listen()
follow_runner()
playGround.mainloop()
您可以通过更改 forward()
语句中的移动量来调整 blue/follow 的性能。一旦超过 1,您会惊讶于它赶上 red/run.
的速度有多快
您需要添加代码来检测海龟何时发生碰撞以及随后发生的任何事情。
我正在创建一个游戏,用户使用键盘移动一只乌龟以避免另一只乌龟。这是我的代码:
import turtle
playGround = turtle.Screen()
playGround.screensize(500, 500)
playGround.title("Turtle Keys")
run = turtle.Turtle()
follow = turtle.Turtle()
run.shape("turtle")
follow.shape("turtle")
run.color("blue")
follow.color("red")
run.penup()
follow.penup()
run.st()
def k1():
run.forward(45)
def k2():
run.left(45)
def k3():
run.right(45)
def k4():
run.back(45)
def quitThis():
playGround.bye()
playGround.onkey(k1, "Up") # the up arrow key
playGround.onkey(k2, "Left") # the left arrow key
playGround.onkey(k3, "Right") # you get it!
playGround.onkey(k4, "Down")
playGround.onkey(quitThis,'q')
playGround.listen()
我想让红海龟追蓝海龟但是不行
您缺少的是 blue/follow 乌龟的计算机控制运动。我们可以通过添加一个 ontimer()
事件处理程序来做到这一点,该事件处理程序在 towards()
上调用 setheading()
以保持 blue/follow 面向 red/run。加上 blue/follow 上的一点点向前运动。像这样:
from turtle import Turtle, Screen
playGround = Screen()
playGround.screensize(500, 500)
playGround.title("Turtle Keys")
run = Turtle("turtle")
run.speed("fastest")
run.color("blue")
run.penup()
run.setposition(250, 250)
follow = Turtle("turtle")
follow.speed("fastest")
follow.color("red")
follow.penup()
follow.setposition(-250, -250)
def k1():
run.forward(10)
def k2():
run.left(45)
def k3():
run.right(45)
def k4():
run.backward(10)
def quitThis():
playGround.bye()
def follow_runner():
follow.setheading(follow.towards(run))
follow.forward(1)
playGround.ontimer(follow_runner, 10)
playGround.onkey(k1, "Up") # the up arrow key
playGround.onkey(k2, "Left") # the left arrow key
playGround.onkey(k3, "Right") # you get it!
playGround.onkey(k4, "Down")
playGround.onkey(quitThis, 'q')
playGround.listen()
follow_runner()
playGround.mainloop()
您可以通过更改 forward()
语句中的移动量来调整 blue/follow 的性能。一旦超过 1,您会惊讶于它赶上 red/run.
您需要添加代码来检测海龟何时发生碰撞以及随后发生的任何事情。