zoukankan      html  css  js  c++  java
  • 圣诞

    # -*- coding: utf-8 -*-
    
    import turtle
    import random
    import time
    
    
    # 定义圣诞树的绿叶函数
    def tree(d, s):
        if d <= 0:
            return
        turtle.forward(s)
        tree(d - 1, s * .8)
        turtle.right(120)
        tree(d - 3, s * .5)
        drawlight()  # 同时调用小彩灯的方法
        turtle.right(120)
        tree(d - 3, s * .5)
        turtle.right(120)
        turtle.backward(s)
    
    
    def drawlight():  # 定义画彩灯的方法
        if random.randint(0, 30) == 0:  # 如果觉得彩灯太多,可以把取值范围加大一些,对应的灯就会少一些
            turtle.color('tomato')  # 定义第一种颜色
            turtle.circle(6)  # 定义彩灯大小
        elif random.randint(0, 30) == 1:
            turtle.color('orange')  # 定义第二种颜色
            turtle.circle(3)  # 定义彩灯大小
        else:
            turtle.color('dark green')  # 其余的随机数情况下画空的树枝
    
    
    def setTreeInit():
        """ 设置绘图速度
        'fastest' :  0
        'fast'    :  10
        'normal'  :  6
        'slow'    :  3
        'slowest' :  1
        """
        turtle.speed('fastest')  # 设置速度
        turtle.left(90)
        turtle.forward(3 * n)
        turtle.color("orange", "yellow")
        turtle.left(126)
    
        turtle.begin_fill()
        for i in range(5):
            turtle.forward(n / 5)
            turtle.right(144)
            turtle.forward(n / 5)
            turtle.left(72)
        turtle.end_fill()
        turtle.right(126)
        turtle.color("dark green")
        turtle.backward(n * 4.8)
    
    
    def setMessage():
        msg = "Merry Christmas."
        turtle.color("red")
        setLocation(-30, -265)
        turtle.write(msg, move=False, align="center", font=("Arial", 22,))
    
    
    #定义画雪
    def drawsnow():
        turtle.ht()  #隐藏笔头,ht=hideturtle
        turtle.pensize(2)  #定义笔头大小
        for i in range(50): #50,其实画49朵雪花
            turtle.pencolor("white") #定义画笔颜色为白色,其实就是雪花为白色
            turtle.pu() #提笔,pu=penup
            turtle.setx(random.randint(-350,350)) #定义x坐标,随机从-350到350之间选择
            turtle.sety(random.randint(-200,330)) #定义y坐标
            turtle.pd() #落笔,pd=pendown
            dens = 6 #雪花瓣数设为6
            snowsize = random.randint(2,6) #定义雪花大小
            for j in range(dens): #就是6,那就是画5次,也就是一个雪花五角星
                turtle.fd(int(snowsize))
                turtle.backward(int(snowsize))
                turtle.right(int(360/dens))  #转动角度
    
    # 移动绘画起点坐标位置(中心点作为坐标原点)
    def setLocation(x, y):
        turtle.penup()
        turtle.home()
        turtle.goto(x, y)
        turtle.pendown()
    
    
    def show_snowman(x, y):
        # 躯干部分
        # 第一个圆
        # turtle.screensize(bg='grey')
        turtle.penup()
        # turtle.goto(-120, 100) #asas
        turtle.color('white', 'white')
        turtle.pendown()
        turtle.begin_fill()
        turtle.circle(-60)
        turtle.end_fill()
        # 第二个圆
        turtle.penup()
        turtle.goto(x, y - 55)
        turtle.color('white', 'white')
        turtle.pendown()
        turtle.begin_fill()
        turtle.circle(-80)
        turtle.end_fill()
    
        # 围巾部分
        # 第一部分
        turtle.penup()
        turtle.goto(x, y - 80)
        turtle.pendown()
        turtle.color('grey', 'red')
        turtle.begin_fill()
        turtle.forward(52)
        turtle.circle(11, 180)
        turtle.forward(104)
        turtle.circle(11, 180)
        turtle.forward(52)
        turtle.end_fill()
        # 第二部分
        turtle.penup()
        turtle.goto(x - 48, y - 80)
        turtle.pendown()
        turtle.begin_fill()
        turtle.setheading(-90)
        turtle.forward(10)
        turtle.circle(-30, 30)
        turtle.circle(10, 60)
        turtle.circle(-50, 20)
        turtle.setheading(0)
        turtle.forward(20)
        turtle.setheading(90)
        turtle.circle(50, 20)
        turtle.circle(-10, 60)
        turtle.circle(30, 30)
        turtle.setheading(90)
        turtle.forward(10)
        turtle.end_fill()
    
        # 帽子部分
        # 帽子底部
        turtle.penup()
        turtle.goto(x - 25 * 1.73, y - 25)
        turtle.color('grey', 'white')
        turtle.setheading(30)
        turtle.pendown()
        turtle.begin_fill()
        turtle.forward(50)
        turtle.circle(5, 180)
        turtle.forward(50)
        turtle.circle(5, 180)
        turtle.end_fill()
        # 帽子中间
        turtle.penup()
        turtle.circle(5, -180)
        turtle.pendown()
        turtle.color('red', 'red')
        turtle.begin_fill()
        turtle.setheading(90)
        turtle.forward(50)
        turtle.right(120)
        turtle.forward(50)
        turtle.end_fill()
        # 帽子顶部
        turtle.penup()
        turtle.forward(-50)
        turtle.left(30)
        turtle.color('white', 'white')
        turtle.pendown()
        turtle.begin_fill()
        turtle.circle(5)
        turtle.end_fill()
    
        # 面部
        # 两个大眼睛
        turtle.penup()
        turtle.goto(x - 20, y - 35)
        turtle.pencolor('black')
        turtle.pendown()
        turtle.dot(10)
        turtle.penup()
        turtle.goto(x + 20, y - 35)
        turtle.pencolor('black')
        turtle.pendown()
        turtle.dot(10)
        # 鼻子
        turtle.penup()
        turtle.goto(x - 5, y - 45)
        turtle.color('grey', 'yellow')
        turtle.pendown()
        turtle.begin_fill()
        turtle.forward(10)
        turtle.circle(3, 180)
        turtle.forward(10)
        turtle.circle(3, 180)
        turtle.end_fill()
        # 嘴巴
        turtle.penup()
        turtle.goto(x - 10, y - 50)
        turtle.pencolor('red')
        turtle.pensize(3)
        turtle.setheading(-90)
        turtle.pendown()
        turtle.circle(10, 180)
    
        # 身体部分
        # 扣子
        turtle.penup()
        turtle.goto(x, y - 100)
        turtle.pencolor('black')
        turtle.dot(10)
        turtle.penup()
        turtle.goto(x, y - 120)
        turtle.pencolor('black')
        turtle.dot(10)
        turtle.penup()
        turtle.goto(x, y - 140)
        turtle.pencolor('black')
        turtle.dot(10)
        # 两只手臂,左手
        turtle.penup()
        turtle.goto(x - 60, y - 100)
        turtle.pencolor('brown')
        turtle.pensize(5)
        turtle.setheading(120)
        turtle.pendown()
        turtle.forward(50)
        turtle.forward(-10)
        turtle.right(60)
        turtle.forward(10)
        # 两只手臂,右手
        turtle.penup()
        turtle.goto(x + 60, y - 100)
        turtle.pencolor('brown')
        turtle.pensize(5)
        turtle.setheading(60)
        turtle.pendown()
        turtle.forward(50)
        turtle.forward(-10)
        turtle.right(-60)
        turtle.forward(10)
    
    
    # 执行函数
    if __name__ == '__main__':
        n = 80
        turtle.screensize(bg='black')
    
        setLocation(-160, -20)
        setTreeInit()
        tree(15, n)
    
        setLocation(140, 80)
        show_snowman(140, 80)
    
        setMessage()
        drawsnow()
        turtle.hideturtle()
        turtle.done()
    
        time.sleep(10000)
    
    
    

  • 相关阅读:
    后缀自动机学习小记
    [bzoj4524] [loj#2047] [Cqoi2016] 伪光滑数
    [bzoj4825] [loj#2018] [Hnoi2017] 单旋
    [bzoj4571] [loj#2016] [Scoi2016] 美味
    [bzoj4569] [loj#2014] [Scoi2016] 萌萌哒
    [bzoj4568] [loj#2013] [Scoi2016] 幸运数字
    [bzoj4567] [loj#2012] [SCOI2016] 背单词
    deque双向队列
    STL_vector
    qsort与sort()
  • 原文地址:https://www.cnblogs.com/fyusac/p/15703228.html
Copyright © 2011-2022 走看看