개발 꿀팁/PYTHON

파이썬 벚꽃 실현

Jammie 2022. 11. 30. 14:19
반응형

파이썬 벚꽃 실현

코드는 다음과 같습니다

from turtle import *
from random import *
from math import *
def tree(n, l):
pd () # 붓을 놓다
# 음영 효과
t = cos ( radians ( heading () + 45 ) ) / 8 + 0.25
pencolor ( t, t, t )
pensize ( n / 3 )
forward ( l) # 나뭇가지 그리기

if n > 0:
b = random ( ) * 15 + 10 # 오른쪽 분기 각도
c = random ( ) * 15 + 10 # 왼쪽 분기 편향 각도
d = l * (random ( ) * 0.25 + 0.7) # 다음 분기의 길이
# 우회전하여 일정한 각도로 우분기를 그리다.
right ( b )
tree ( n - 1, d )
# 좌회전하여 일정한 각도로 좌분기를 그린다.
left ( b + c )
tree ( n - 1, d )
# 되돌아오다
right ( c )
else:
# 낙엽을 그리다
right ( 90 )
n = cos ( radians ( heading () - 45 ) ) / 4 + 0.5
ran = random ()
# 여기에 기존보다 무작위로 채워진 원을 추가해 벚꽃잎을 조금 더 많이 보이도록
if (ran > 0.7):
begin_fill ()
circle ( 3 )
fillcolor ( 'pink' )
# 원래 무작위로 생성했던 잎을 통일된 핑크색으로 바꿔서
pencolor ( "pink" )
circle ( 3 )
if (ran > 0.7):
end_fill ()
left ( 90 )
# 낙엽 0.3배 추가
if (random () > 0.7):
pu ()
# 흩날리다
t = heading ()
an = -40 + random () * 40
setheading ( an )
dis = int ( 800 * random () * 0.5 + 400 * random () * 0.3 + 200 * random () * 0.2 )
forward ( dis )
setheading ( t )
# 낙엽을 그리다
pd ()
right ( 90 )
n = cos ( radians ( heading () - 45 ) ) / 4 + 0.5
pencolor ( n * 0.5 + 0.5, 0.4 + n * 0.4, 0.4 + n * 0.4 )
circle ( 2 )
left ( 90 )
pu ()
# 되돌아가다
t = heading ()
setheading ( an )
backward ( dis )
setheading ( t )
pu ()
backward ( l) # 반송


bgcolor (0.956, 0.9255, 0.9882) # 배경색 설정 (회색을 연보라색으로 바꿉니다)
ht () # turtle 숨기기
speed (0) # 속도 1-10 점진적, 0이 가장 빠름
tracer ( 0, 0 )
pu () # 붓을 들다
backward ( 50 )
left (90) # 90도 좌회전
pu () # 붓을 들다
backward (300) # 뒤로 300
tree (12, 100) # 재귀 7층
done ()

효과는 다음과 같다

 

반응형