编程语言
首页 > 编程语言> > Python圣诞树-夜空下的圣诞森林

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

作者:互联网

圣诞森林

代码如下:

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