使用python语言turtle模块编写的下雪程序。

本文介绍了使用Python的Turtle库创建一个动态的雪花飘落动画,包括初始化屏幕和画笔,定义雪花类,以及主函数中控制雪花的数量、颜色和移动。
摘要由CSDN通过智能技术生成

import turtle
import random
import time


def init_screen():
    '''初始化窗口/屏幕。'''
    
    turtle.setup(1.0, 1.0)
    turtle.bgcolor('black')  #设置画布颜色
    turtle.title("雪 花 飞 舞")


def init_pen():
    '''初始化画笔'''
    
    pen = turtle.Pen()
    pen.ht()    #隐藏画笔
    return pen


class Snow():    #
    '''雪花类'''
    
    def __init__(self):        
        self.colors = ['white', 'black','red', 'yellow', 'green', 'blue',  'orange', 'pink']      #雪花的颜色列表
        self.r = random.uniform(1,5)       #雪花的半径
        self.x = random.randint(-1000,1000)   #雪花的横坐标
        self.y = random.randint(500,1000)     #雪花的纵坐标
        self.speed = random.randint(5,20)     #雪花的下落速度
        self.color = random.choice(self.colors)    #雪花的轮廓颜色
        self.outline = 2                  #雪花的轮廓粗细
        
    def move(self):
        '''雪花移动函数'''
        
        if self.y >= -550:  #当雪花还在画布中时
            self.y -= self.speed     #新的y坐标
        else:   #当雪花漂出了画布时,重新初始化雪花
            self.r = random.uniform(1,5)
            self.x = random.randint(-1000,1000)
            self.y = random.randint(500,600)
            self.speed = random.randint(5,20)
            self.color = random.choice(self.colors)
            self.outline = 2


def init_snows(counts):
    '''初始化雪花列表'''
    
    snows = []    
    for i in range(counts):
        snows.append( Snow() )        
    return snows

      
def update_snows(pen, snows):
    '''更新雪花'''
    
    pen.clear() #清除原位置所有雪花的显示
        
    for i in range(len(snows)):    #重新绘制新位置下的所有雪花
        snows[i-1].move()
        
        pen.pensize(snows[i-1].outline)    #雪花的大小
        pen.penup()                  #提笔
        pen.goto(snows[i-1].x,snows[i-1].y)      #移动画笔到新位置
        pen.pendown()                #落笔
        pen.color(snows[i-1].color)        #雪花外廓颜色
        pen.begin_fill()
        pen.fillcolor("white")  #雪花内部填充色
        pen.circle(snows[i-1].r)    #绘制新雪花
        pen.end_fill()

    turtle.update() #更新显示新位置下的所有雪花


def show_head(pen,color):
    pen.color(color)
    pen.write(arg="下  雪  了", move=False, align="center",font=("Comic Sans MS", 66, "bold"))

def main():
    '''主函数'''


    init_screen()
    pen=init_pen()

    turtle.colormode(255)
    show_head(pen, (255, 250, 250) )
    turtle.colormode(1.0)
    time.sleep(3)
    
    turtle.tracer(0)    # 取消掉画笔的各个动作函数在屏幕上画画的过程,改为在后台画。之后调用update()函数将所画的画统一显示出来。
    
    counts =random.randint(150,300)
    snows = init_snows(counts)
    print(len(snows))
    
    while True:  #开始绘制
        turtle.ontimer(update_snows(pen, snows),30)
    
    return 0  


if __name__=='__main__':
    print('Main Program Startup.\n')
    main()
else:
    print('Python_main_program is started as a module.\n')
 

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值