엄지척 블로그

[Python][turtle] 크리스마스 트리 만들어보기 본문

심심할 때 하는 코딩

[Python][turtle] 크리스마스 트리 만들어보기

Umgee 2020. 12. 27. 00:45

위 파이썬 코드는 www.instagram.com/p/CJNdzNJAU2x/?igshid=9r3xy9bkclvn

인스타그램에서 출저.

 

버스 안에서 인스타그램 하다가 해당 게시글을 봤는데 한번 짜보고 싶다는 마음에  

해당 게시글의 코드를 그대로 짜서 구현을 하게 되었다. 

 

 

 

최종 결과물은 위 사진처럼 나오게됨.

 

트리 그리는 순서는

 

1. 트리 밑에 뿌리에서 시작에서 쭈욱 올라간다음

2. 별을 for 문을 5번 돌면서 그리게 되고 

3. 재귀함수를 돌면서 트리의 곁가지들을 그리게 됩니다. 

4. 마지막으로 tomato 색 점들과 wheat 색 점들을 랜덤으로 찍게 됩니다 

 

 

위 코드를 보면서 재귀함수로 트리 곁가지 그리는 발상하고 

                                      별을 저렇게 찍는다는것이 참신했다는 ..ㅋㅋ

 

 

 

from turtle import *
import random
import time

#재귀로 트리곁가지그리기
def tree(d,s):
    if d<=0 : return
    forward(s)
    tree(d-1,s*.8)
    right(120)
    tree(d-3,s*.5)
    right(120)
    tree(d-3,s*.5)
    right(120)
    backward(s)

n = 80.0
speed("fastest")
screensize(bg = 'seashell')
left(90)
forward(3*n)
color("orange","yellow")
begin_fill()
left(126)

#별찍기
for i in range(5):
    forward(n/5)
    right(144)
    forward(n/5)
    left(72)
end_fill()

right(126)
color("dark green")
backward(n*4.8)
tree(15,n)
speed("fastest")
backward(n/2)

#랜덤으로 점찍기 
for i in range(200):
    a = 200 - 400 * random.random()
    b = 10 - 20*random.random()
    up()
    forward(b)
    left(90)
    forward(a)
    down()
    if random.randint(0,1) == 0 :
        color('tomato')
    else:
        color('wheat')
    circle(2)
    up()
    backward(a)
    right(90)
    backward(b)

time.sleep(60)

코드 구현 이후 실행 영상

                     

Comments