ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python圣诞树-夜空下的圣诞森林

2021-12-16 20:00:51  阅读:186  来源: 互联网

标签:pensize angle Python pencolor 圣诞 圣诞树 forward fill left


圣诞森林

代码如下:

from turtle import*
import random
from math import*

t = cos(radians(heading()+45))/8+0.25
delay(0)
hideturtle()
screensize(1200,1200,'black')
speed(0)
goto(-700,-280)
pencolor('white')
pensize(222)
pendown()
seth(0)
forward(1400)

def curvemove(x,y):
    penup()
    goto(x,y)
    pensize(1)
    color('red','pink')        
    begin_fill()
    left(140)
    forward(2.1165)
    for i in range(200):
        right(1)
        forward(0.05)
    left(120)
    for i in range(200):
        right(1)
        forward(0.05)
    forward(2.1165)
    end_fill()
def stars1 (x,y,left_angle,edge_len):
    pensize(1)
    pencolor('white')
    fillcolor('white')
    penup()
    goto(x,y)
    begin_fill()
    pendown()
    left(left_angle)
    for _ in range(5):
        forward(edge_len)
        right(144)
    end_fill()
    left(-left_angle)


def stars (x,y,left_angle,edge_len):
    pensize(1)
    pencolor('yellow')
    fillcolor('yellow')
    penup()
    goto(x,y)
    begin_fill()
    pendown()
    left(left_angle)
    for _ in range(5):
        forward(edge_len)
        right(144)
    end_fill()
    left(-left_angle)
for _ in range(40):
    x = random.randint(-700,700)
    y = random.randint(-100,700)
    edge_len = random.randint(3,8)
    left_angle = random.randint(0,180)
    stars(x,y,left_angle,edge_len)
penup()

def tree1(d, s):
    if d <= 0: return
    if d > 6:
        pensize(d)
        pencolor(t,t,t)
    if d<=6 and d>3:
        pensize(10)
        pencolor('dark green')
    if d <=3:
        pensize(5)
        pencolor('seagreen')
    forward(s)
    tree1(d-1, s*.8)
    right(120)
    tree1(d-3, s*.5)
    right(120)
    tree1(d-3, s*.5)
    right(120)
    backward(s)

def tree2(n,k):
    if n <= 0: return
    if n > 5:
        pensize(n)
        pencolor(t,t,t)
    if n <=5:
        pensize(8)
        pencolor('seagreen')
    forward(k)
    tree2(n-1, k*.8)
    right(120)
    tree2(n-3, k*.5)
    right(120)
    tree2(n-3, k*.5)
    right(120)
    backward(k)
def tree3(n,k):
    if n <= 0: return
    if n > 5:
        pensize(n)
        pencolor(t,t,t)
    if n <=5:
        pensize(8)
        pencolor('dark green')
    forward(k)
    tree3(n-1, k*.8)
    right(120)
    tree3(n-3, k*.5)
    right(120)
    tree3(n-3, k*.5)
    right(120)
    backward(k)
def tree0(o,p,z,q):
    goto(z,q)
    seth(90)
    pendown()
    tree2(o,p)
    penup()
def tree(d,s,a,b):
    goto(a,b)
    seth(90)
    pendown()
    tree1(d,s)
    penup()
    seth(90)
    fd(d/5)
    pendown()
    seth(-90)
    pencolor(t,t,t)
    pensize(d*2)
    fd(d/3)
    penup()
    seth(90)
    for _ in range(20):
        f=random.randint(a-100,a+100)
        g=random.randint(b,s)
        x=random.randint(a-100,a+100)
        y=random.randint(b,s)
        edge_len = random.randint(3,8)
        left_angle = random.randint(0,180)
        stars(f,g,left_angle,edge_len)
        curvemove(x,y)
    for _ in range(30):
        x1 = random.randint(a-100,a+100)
        y1 = random.randint(b,s)
        edge_len1 = random.randint(3,8)
        left_angle1 = random.randint(0,180)
        stars1(x1,y1,left_angle1,edge_len1)
    penup()
def treez(o,p,z,q):
    goto(z,q)
    seth(90)
    pendown()
    tree3(o,p)
    penup()


for _ in range(8):
    x = random.randint(-700,700)
    w = random.randint(-700,700)
    e = random.randint(-700,700)
    treez(10,10,x,-170)
    treez(8,20,w,-170)
    tree0(5,15,e,-170)
for _ in range(3):
    x = random.randint(-600,800)
    w = random.randint(-600,800)
    e = random.randint(-600,800)
    tree0(8,28,x,-173)
    treez(12,37,w,-174)
    tree0(13,45,e,-186)
for _ in range(2):
    x = random.randint(-500,700)
    w = random.randint(-500,800)
    e = random.randint(-500,800)
    tree0(13,60,x,-175)
    tree0(12,55,w,-187)
    tree0(13,70,e,-180)


tree(15,82,-600,-188)
goto(-600,200)
pensize(2)
pencolor('yellow')
fillcolor('yellow')
begin_fill()
seth(-72)
pendown()
for _ in range(5):
    forward(35)
    right(144)
end_fill()

for _ in range(400):
    x = random.randint(-700,700)
    y = random.randint(-700,700)
    edge_len = random.randint(3,4)
    left_angle = random.randint(0,180)
    stars1(x,y,left_angle,edge_len)
penup()

最后星星亮起来那一下感觉还可以,喜欢的家人们可以试一试
最后的效果

标签:pensize,angle,Python,pencolor,圣诞,圣诞树,forward,fill,left
来源: https://blog.csdn.net/AChmg/article/details/121982489

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有