赞
踩
python中利用turtle(海龟)绘图制作龟兔赛跑动画——仅供学习哦
首先,欢迎大家来我的博客当中浏览,由于我和我的可爱现在还都个初学者,所作的东西还不够完善,之前在学习计算机的各种语言的过程中,在csdn平台上得到了许多的帮助。所以我和我的可爱先把我们做的东西放在这个平台上,期待与大家的共同交流。
这次是一个简单的python程序。利用python中自带的库,以及pygame库实现龟兔赛跑的动画。
强调,一定要安装pygame库哦!
好,话不多说,我们直接上代码!
from turtle import *#从turtle库中引入所有的命令 import turtle as t#引入turtle库把它叫做t import pygame as p#引入turtle库把它叫做p p.init()#初始化p的所有模块 #设置标题 t.title("欢迎来到海龟运动会之神奇海龟对决兔子") #设置背景色 t.bgcolor("pink") #小红旗 t.penup() t.speed(1) t.goto(200,0) t.pendown() t.color("red") t.begin_fill() t.left(90) t.forward(60) t.right(90) t.forward(40) t.right(150) t.forward(50) t.end_fill() t.penup() #兔子 rabbit=Turtle()#定义兔子 rabbit.hideturtle()#让兔子隐形 rabbit.shape('turtle')#兔子的形状是一只海龟(滑稽脸) rabbit.color("green") rabbit.up()#将兔子移动到起点,准备比赛 rabbit.back(300)#把兔子往后移300 rabbit.showturtle()#让兔子显露出来 rabbit.down()#兔子移动时划线 def rabbitmove():#定义一个新的函数 兔子移动 if usedtime<50:#如果用时小于50 rabbit.forward(3)#兔子向前奔跑 rabbit.color("green")#兔子的颜色是绿色 elif usedtime<415:#如果用时 50<=usedtime<415 兔子就去睡觉,位移不变 rabbit.forward(0)#兔子向前0 else:#否则就追赶 rabbit.forward(6)#兔子向前4 #乌龟 tortoise=Turtle()#引入乌龟图案 tortoise.hideturtle()#让乌龟隐形 tortoise.shape('turtle')#确定乌龟的形状 tortoise.color("purple")#确定乌龟的颜色 tortoise.pensize(3)#确定笔画的粗细 tortoise.up()#将乌龟移动到起点,准备比赛 tortoise.back(300)#将乌龟后移300 tortoise.showturtle()#把乌龟显露出来 tortoise.down()#乌龟移动时划线 def tortoisemove():#定义一个新的函数 乌龟移动 tortoise.forward(1)#乌龟一直在缓慢的爬行 if usedtime%2==0: tortoise.color("purple") else: tortoise.color("red") #背景音 def musics(): file=r'C:\Users\郭钊\Desktop\work space\1.mp3' p.mixer.init()#初始化混音器 p.mixer.music.load(file)#加载文件 p.mixer.music.play()#播放音乐 usedtime=0#定义用时 赋初值为0 def move():#定义函数 移动 global usedtime#全局形式 移动均参照usedtime rabbitposition = rabbit.xcor()#兔子的位置是兔子的x坐标 tortoiseposition = tortoise.xcor()#乌龟的位置是乌龟的x坐标 if max(rabbitposition,tortoiseposition)>200:#如果兔子和乌龟的位置中最大的超过200 writer= Turtle()#writer定义为Turtle writer.hideturtle()#隐藏乌龟(兔子) if tortoiseposition >200:#如果乌龟的位置大于200 msg='Tortoise win!'#给msg(message)赋值字符串 rabbit win! else:#否则就给msg赋字符串 tortoise win! msg ='Rabbit win!' writer.write(msg, align='center', font=('simfang', 30,'bold'))#模块写入设置 #输入字样 对齐方式 字体为仿宋,30号,黑体的 p.mixer.music.fadeout(700)#控制音乐淡出 else:#否则就移动 rabbitmove()#兔子移动 tortoisemove()#乌龟移动 ontimer(move,100)#定时让它们有动画效果 usedtime= usedtime+1#循环,用时+1 musics() ontimer(move,100)#比赛开始,定时
ok! 代码书写完成,第一次用这种的,有些不太习惯,可能会因此使得代码里面有多或者少空格的地方,导致程序无法正常运行(因为python是一个强格式的语言)。小伙伴们一定要记得检查呀。接下我们讲解实现过程。
这个程序是我和我的可爱在经过一周的python小学期后的答辩程序。在确定主题时,我的可爱说要用龟兔赛跑,我当然无条件的支持。
所谓龟兔赛跑,当然得有“兔”和“龟”,龟好实现,但是兔子不好实现,只能也由龟来替代。正如代码块
rabbit=Turtle()#定义兔子 rabbit.hideturtle()#让兔子隐形 rabbit.shape('turtle')#兔子的形状是一只海龟(滑稽脸) rabbit.color("green") rabbit.up()#将兔子移动到起点,准备比赛 rabbit.back(300)#把兔子往后移300 rabbit.showturtle()#让兔子显露出来 rabbit.down()#兔子移动时划线 #乌龟 tortoise=Turtle()#引入乌龟图案 tortoise.hideturtle()#让乌龟隐形 tortoise.shape('turtle')#确定乌龟的形状 tortoise.color("purple")#确定乌龟的颜色 tortoise.pensize(3)#确定笔画的粗细 tortoise.up()#将乌龟移动到起点,准备比赛 tortoise.back(300)#将乌龟后移300 tortoise.showturtle()#把乌龟显露出来 tortoise.down()#乌龟移动时划线
当你只引入一次时,不管怎么动,永远都只有一个小乌龟在动,那就不能叫做龟兔赛跑了。实现方法就像上面那样,以下为简易版本
from turtle import *
turtle=Turtle()
turtle.shape('turtle')
turtle.forward(200)
rabbit=Turtle()
rabbit.shape('turtle')
这样就会出现两只小乌龟了。推类,三只,四只,十只是不是也很简单呐。
作为比赛,总得有个起点与终点吧?
#小红旗
t.penup()
t.speed(1)
t.goto(200,0)
t.pendown()
t.color("red")
t.begin_fill()
t.left(90)
t.forward(60)
t.right(90)
t.forward(40)
t.right(150)
t.forward(50)
t.end_fill()
t.penup()
这段代码是我认为在整个代码中比较出彩的。因为它的位置在整个代码的最开头,所以它最先执行,在视觉效果上如同先由“裁判”确定一个终点似的。
之后便是定义函数了,python的优势就是它便于理解,这里面我定义的函数都比较简单,所用到的结构仅仅是简单的判断与循环。通过usedtime来控制整个动画中移动的物体。不断地加一不断地移动,不断的变化。利用ontimer定时器,在特定的时间后,调用move函数,使得整个动画具有很哈动画效果。尤其注意背景音乐用了pygame库,这个库并非python自带的,所以大家如果想要正常运行程序,需要安装pygame的库哦。网上的安装教程也有很多哦。其中musics函数还需要小伙伴们的电脑中有一个mp3类型的音乐文件支撑,file 后的文件位置换成你想要播放的mp3文件的位置即可。
好啦,其实代码上的注释已经很多,相信大家都会明白的。如果有疑问可以加我的QQ:1056966958 我们一起交流沟通呀!记得加上备注,不然我会以为你是卖片的(滑稽)
好啦,就到这里啦,谢谢大家哦!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。