结合for循环实现两辆汽车相向而行

描述

要实现汽车跑动,首先我们要加载一张城市道路图作为背景图,然后就要把海龟的图形变为汽车的模样,最后实现两辆汽车相向而行的效果。

首先,加载背景图片:

turtle.bgpic(picname=None)

turtle.bgpic(picname=None)设置背景图片或返回当前背景图片的名称。如果picname 是文件名,则将相应的图像设置为背景。如果 picname"nopic" ,则删除背景图像(如果存在)。如果 picnameNone ,则返回当前背景图像的文件名。

这里我们加载同文件目录下的背景图片如下:

import turtle
turtle.bgpic("bg1.png")  # 加载背景图片

然后,添加汽车作为画笔形状:

turtle.register_shape(name)

turtle.register_shape()可以新增更多的画笔shape,其用法之一就是添加gif图片作为画笔的新形状。使用自己的图片作为画笔shape时需要注意,首先海龟仅支持gif图片,另外这样的画笔shape无论怎样设置resizemode均不能通过shapesize指令进行笔头大小设置。以图片作为shape,笔头的大小就是由图片本身大小所决定的。当然,turtle.register_shape()还可以添加用元组作为坐标描述的多边形作为画笔的shape,这里我们并没有用到,就不过多赘述了。

因为我们要实现两辆汽车相向而行,所以要创建两个turtle的实例,并加载不同形状的汽车,如下:

turtle.register_shape('car1.gif')   # 把小车图片放入海龟可用形状仓库中,便于调用
car1 = turtle.Turtle()   # 生成turtle,命名为car1
car1.shape('car1.gif')

turtle.register_shape('car2.gif')
car2 = turtle.Turtle()
car2.shape('car2.gif')

最后,就是和乌龟赛跑一样,利用for循环实现汽车一起运行的效果:

car1.penup()  # 抬笔,不要留下轨迹
car2.penup()

car1.goto(-300, -110)
car2.goto(300, -200)

car2.left(180)
#
car1.speed(2)
car2.speed(2)
#
for sp in range(1, 80):
    car1.forward(sp)
    car2.forward(sp)
#
turtle.done()

所以,所有总的代码是:

import turtle
turtle.bgpic("bg1.png")  # 加载背景图片

turtle.register_shape('car1.gif')   # 把小车图片放入海龟可用形状仓库中,便于调用
car1 = turtle.Turtle()   # 生成turtle,命名为car1
car1.shape('car1.gif')

turtle.register_shape('car2.gif')
car2 = turtle.Turtle()
car2.shape('car2.gif')

car1.penup()  # 抬笔,不要留下轨迹
car2.penup()

car1.goto(-300, -110)
car2.goto(300, -200)

car2.left(180)
car1.speed(2)
car2.speed(2)
for sp in range(1, 80):
    car1.forward(sp)
    car2.forward(sp)
turtle.done()

实现的效果如下:

python

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分