Python 취미 도전 의 turtle 라 이브 러 리 그림 떨 어 지 는 은행나무
import turtle
import random
from math import *
2.피 보 나치 수열 생 성
피 보 나치 수열 은 앞의 두 항목 의 합 을 합치 면 뒤의 한 항목 과 같은 수열 을 가리 키 는데,여 기 는 두 개의 함 수 를 사용 하여 피 보 나치 수열 을 생 성 한다.
def Fibonacci_Recursion_tool(n): #
if n <= 0:
return 0
elif n == 1:
return 1
else:
return Fibonacci_Recursion_tool(n - 1) + Fibonacci_Recursion_tool(n - 2)
def Fibonacci_Recursion(n): # ,
result_list = []
for i in range(1, n + 3):
result_list.append(Fibonacci_Recursion_tool(i))
return result_list
호출 함수 생 성 수열 은 다음 과 같 습 니 다:
yu = Fibonacci_Recursion(top) #
print(yu)
실행 결 과 는 다음 과 같 습 니 다.3.잎 을 만 드 는 방법 을 정의 합 니 다.
def leaf(x, y, node):#
til = turtle.heading()
i = random.random()
an = random.randint(10, 180)
ye = random.randint(6, 9)/10
turtle.color(ye, ye*0.9, 0)
turtle.fillcolor(ye+0.1, ye+0.05, 0)
turtle.pensize(1)
turtle.pendown()
turtle.setheading(an + 90)
turtle.forward(8*i)
px = turtle.xcor()
py = turtle.ycor()
turtle.begin_fill()
turtle.circle(7.5*i, 120) # 120
turtle.penup() #
turtle.goto(px, py) #
turtle.setheading(an + 90) #
turtle.pendown() # ,
turtle.circle(-7.5*i, 120) # 120
turtle.setheading(an + 100)
turtle.circle(10.5*i, 150)
turtle.end_fill() # 150
turtle.penup()
turtle.goto(x, y)
turtle.setheading(til)
turtle.pensize(node / 2 + 1)
4.트 리 생 성 방법 정의여 기 는 x 로 랜 덤 수 를 만 들 고 if 조건 으로 가 지 를 계속 그 릴 지,잎 을 그 릴 지,나 무 를 더욱 자 연 스 럽 고 불규칙 적 이 며 더 보기 좋 은 지 판단 합 니 다.그러면 당신 이 운행 할 때마다 그 려 진 나 무 는 다 릅 니 다.구체 적 인 세부 사항 에 나 는 이미 주석 을 달 았 다.공중 잎의 비율,나무의 갈 라 지 는 정 도 를 조정 하려 면 if 판단 문장의 x 수치 범 위 를 수정 하여 확률 을 증가 하거나 확률 을 줄 이면 된다.당신 마음속 의 완벽 한 효 과 를 어떻게 달성 하 는 지 에 대해 서 는 천천히 시도 해 야 합 니 다.
def draw(node, length, level, yu, button): #
turtle.pendown()
t = cos(radians(turtle.heading()+5)) / 8 + 0.25
turtle.pencolor(t*1.6, t*1.2, t*1.4) #(r, g, b) RGB
turtle.pensize(node/1.2) #
x = random.randint(0, 10) #
if level == top and x > 6: # ,x
turtle.forward(length) #
yu[level] = yu[level] - 1
c = random.randint(2, 10)
for i in range(1, c):
leaf(turtle.xcor(), turtle.ycor(), node)
# 0.3
if random.random() > 0.3:
turtle.penup()
#
t1 = turtle.heading()
an1 = -40 + random.random() * 40
turtle.setheading(an1)
dis = int(800 * random.random() * 0.5 + 400 * random.random() * 0.3 + 200 * random.random() * 0.2)
turtle.forward(dis)
turtle.setheading(t1)
turtle.right(90)
#
leaf(turtle.xcor(), turtle.ycor(), node)
turtle.left(90)
#
t2 = turtle.heading()
turtle.setheading(an1)
turtle.backward(dis)
turtle.setheading(t2)
elif level==top and x < 7 : # ,x
turtle.penup()
turtle.forward(length)
elif level>3 and (x>6) :# , 40%
turtle.pendown()
turtle.forward(length)
c = random.randint(4, 6)
for i in range(3, c):
leaf(turtle.xcor(), turtle.ycor(),node)
leaf(turtle.xcor(), turtle.ycor(),node)
button=1# jump"""
else:
turtle.forward(length) #
yu[level] = yu[level] -1
if node > 0 and button == 0:
# ,
right = random.random() * 5 + 17
# ,
left = random.random() * 20 + 19
#
child_length = length * (random.random() * 0.25 + 0.7)
# ,
r=random.randint(0, 1)
if r==1:
turtle.right(right)
level = level + 1
#print("level", level)
else:
turtle.left(right)
level = level + 1
#print("level", level)
draw(node - 1, child_length,level,yu,button)
yu[level] = yu[level] +1
if yu[level] > 1:
# ,
if r==1:
turtle.left(right + left)
draw(node - 1, child_length, level, yu,button)
# ,
turtle.right(left)
yu[level] = yu[level] - 1
else:
turtle.right(right + left)
draw(node - 1, child_length, level, yu,button)
# ,
turtle.left(left)
yu[level] = yu[level] - 1
else:
if r==1:
turtle.left(right + left)
turtle.right(left)
else:
turtle.right(right + left)
turtle.left(left)
turtle.penup()
#
turtle.backward(length)
5.
,top ,turtle.speed , turtle.write() 。
```clike
if __name__ == '__main__':
turtle.setup(width=1.0, height=1.0) #
turtle.hideturtle() # turtle
turtle.speed(0) # ,0-10
# turtle.tracer(0,0) # , 0
turtle.penup() #
turtle.left(90) # x , 90
turtle.backward(300) # turtle , 300
top = 9 #
yu = Fibonacci_Recursion(top) #
yu.remove(yu[0])
#print(yu)
button = 0
draw(top, 120, 0, yu, button) #
turtle.write(" wsw", font=(" ", 14, "normal")) #
turtle.done()
프로그램 을 실행 하면"바다거북"은 나무 전 체 를 그 려 줍 니 다.당신 은 그것 을 보고 그리 기만 하면 됩 니 다.일정한 시간 을 기 다 려 야 합 니 다.마지막 완제품 은 다음 과 같 습 니 다.원 하 는 잎 반 이 공중 에 있 는 느낌 입 니 다.하하 하~파 이 썬 의 재미 도전 에 관 한 터 틀 라 이브 러 리 그림 이 떨 어 지 는 은행나무 에 관 한 글 은 여기까지 입 니 다.더 많은 터 틀 라 이브 러 리 그림 이 떨 어 지 는 은행나무 에 관 한 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.