python海龟绘图颜色_python中利用turtle(海龟)绘图制作龟兔赛跑动画——仅供学习...

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 我们一起交流沟通呀!记得加上备注,不然我会以为你是卖片的(滑稽)

好啦,就到这里啦,谢谢大家哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值