Turtle(8)
前言
Turtle库的内容学习到现在,基本已经完成了.
本节课,在上节课的内容基础上,做了一个简单的升级,多对象的简单动画效果
当然,turtle不是一擅长做动画的库.只是想告诉大家,这个库可以做到这个事情.
并以事实说明,这是真的可行的,且给大家做一个简单的演示
完整示例代码如下
import turtle as t
import time
import random
def snow_down(tt: t):
'''函数说明'''
'''
负责对雪花进行下落的处理.
tt参数是一个turtle对象.
下落过程中,有左右的随机运动,也有向下掉落速度的随机改变.
'''
x, y = tt.pos()
x += random.randint(-5,5)
y -= random.randint(1, 5)
tt.goto(x,y)
def show_text(content, pos):
'''函数说明'''
'''
用来在指定位置显示文本内容
第一个参数:content为要显示的内容
第二个参数:pos为要显示的内容的左上角坐标,是一个元组
'''
t.penup()
t.goto(pos)
t.pendown()
t.write(content, font=("宋体", 18, "normal"))
def creat_snow():
'''函数说明'''
'''
用来生成一个雪花
并将之移动到合适的位置
'''
t_temp = t.clone() # 所有克隆出来的turtle 都在t.turtles()列表中
x = random.randint(-200, 200)
y = random.randint(300, 360)
t_temp.penup()
t_temp.goto(x, y)
t_temp.showturtle()
def init_game():
''' 函数说明 '''
'''
对程序的基本内容进行初始化
'''
# 初始化程序
# 初始化
t.tracer(0) # 设置全屏刷新
t.setup(800, 800) # 设置画布大小
screen = t.Screen() # 准备添加雪花形状
img_path = "F:\MyProject\PythonCode\Python教程\Turtle教程\Turtle8\img\snow_small.gif"
screen.addshape(img_path)
t.shape(img_path)
t.penup()
# 写文字
show_text("元旦快乐", (-50, 350))
def main():
''' 函数主程序 '''
'''
负责控制整个程序的逻辑与调度
'''
T = 1 / 40 # 1秒 40帧
time_pass = 1 # 每隔一秒生成一个雪花
while 1:
if time_pass >= 1:
creat_snow()
time_pass = 0
for each in t.turtles():
if each.ycor()>= -300:
each.penup()
snow_down(each)
else:
each.hideturtle()
time_pass += T
t.update()
time.sleep(T)
# 主程序
if __name__ == "__main__":
init_game() # 初始化程序
main()
t.done()
效果图如下:
代码要点分析
- 代码说明
代码长度过长,对代码进行了一定的分类处理.这也是我们处理长代码的一种重要手段.将不同的功能,用不同的函数来处理.以增加代码的可读性与可维护性 - 第一个函数:snow_down()
负责对雪花进行下落的处理.
下落过程中,有左右的随机运动,也有向下掉落速度的随机改变. - 第二个函数:show_text()
负责在指定位置显示文本内容,第一个参数为要显示的内容,第二个参数为要显示的位置坐标(元组) - 第三个函数:creat_snow()
负责克隆雪花,并对克隆出来的雪花做一些简单的位置处理.使之移动合适的位置以便后续的下落 - 第四个函数: init_game()
负责对程序的一些基本设置进行初始化 - 第一个函数:main()
整个程序的主程序.负责调度,什么时候生成雪花,什么时候降落,什么时候隐藏等等总的把控.
正常情况下,代码的组织是把主要的函数写在上面,被调用的函数写在下面.这里方便解析.做了一个简要的倒序处理.
后记:
turtle是一个非常强大的库,其内容也非常丰富.
学习到这里,基本上一个基本的python程序要有的东西都给大家介绍了一遍.
后续的内容,有两个方向
- 基于现有的知识的项目与作品构思与完成
- 学习新的库,掌握更加强大的功能