Created
April 9, 2020 04:34
-
-
Save 801YutaKa108/170ea823ce93b59f70859d340b76faf7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import turtle | |
import random | |
def seed(x, y, my_turtle): | |
# (x, y)にタートルを移動させる | |
my_turtle.pu() # 移動時、線を引かない | |
my_turtle.setposition(x, y) | |
def tree(n, length, my_turtle, bloom_point): | |
# 幹または枝を描く | |
my_turtle.pd() | |
my_turtle.pensize(n) | |
my_turtle.forward(length) | |
# 描いている枝が、先端(n=0)でなければ、さらに分岐した枝を描く | |
if n > 0: | |
# 枝が生える分岐点の座標を記録 | |
branch_point = my_turtle.pos() | |
# 分岐点から生える枝の数を2~4本でランダムに選ぶ | |
branch_number = random.randint(2, 4) | |
# 枝を1本ずつ | |
for _ in range(branch_number): | |
# 枝の角度、長さをランダムに決める | |
branch_angle = random.uniform(-45, 45) | |
branch_length = length * random.uniform(0.75, 0.9) | |
# 枝の方向を向く | |
my_turtle.right(branch_angle) | |
# 再起関数で、もう一段細い枝を描く | |
tree(n - 1, branch_length, my_turtle, bloom_point) | |
# 枝の方向からもとの角度に戻る | |
my_turtle.left(branch_angle) | |
# 枝の分岐点に戻る | |
my_turtle.pu() | |
my_turtle.setpos(branch_point) | |
# 描いている枝が、先端(n=0)であれば、座標を記録する | |
else: | |
# 枝の先端を記録 | |
bloom_point.append(my_turtle.pos()) | |
def bloom(my_turtle, bloom_point): | |
my_turtle.pu() | |
for position in bloom_point: | |
# 花の場所に移動 | |
my_turtle.setpos(position) | |
# 花が咲く | |
my_turtle.dot(8, "pink") | |
if __name__ == "__main__": | |
# 絵画領域の準備 | |
turtle.setup(width=300, height=300) | |
# タートルの用意 | |
my_turtle = turtle.Turtle() | |
my_turtle.speed(0) # タートルの移動速度の設定 | |
my_turtle.setheading(90) # 上向きにする | |
# 枝の短点を格納するリストを用意しておく | |
bloom_point = [] | |
# 木が生える場所に種をまく | |
seed(x=0, y=-150, my_turtle=my_turtle) | |
# 木を成長させる | |
tree(n=5, length=40, my_turtle=my_turtle, bloom_point=bloom_point) | |
# 花を咲かせる | |
bloom(my_turtle=my_turtle, bloom_point=bloom_point) | |
# 終了後も絵画領域を表示させたままにする | |
turtle.done() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment