Python

[파이썬] turtle(터틀) 그래픽 활용해 크기와 위치가 랜덤한 별 그리기

paintover23 2023. 10. 17. 17:02
728x90

 

 

파이썬 turtle(터틀) 그래픽을 이용하여 위와 같이 밤하늘의 별을 찍는 예제를 구현해 보자.

 

[구현 순서]

import turtle as t
import random

t.bgcolor("black")
t.pensize(2)
t.pencolor("yellow")
t.speed(500) # 0.5초

1. 먼저 turtle 모듈과 random 모듈을 불러온다.

2. 배경색, 펜굵기, 펜색깔, 그리는 속도를 지정해 준다. 

 

for i in range(5):
     starsize= random.randint(10,30)
     t.forward(starsize)
     t.right(144)

3. for문을 활용해 별 한개를 그린다:

    3-1. 별의 크기는 랜덤으로 하되 10~30 사이로 하여 그린다(forward)

    3-2. 한개의 선을 그리면 방향을 오른쪽으로 144도 돌린다

    3-3. 별 한 개는 5개의 선으로 이루어져 있으므로 for문을 5번 반복한다.

 

for k in range(30):
    t.penup() # 펜들기(그리지 않음)
    x= random.randint(-350,350)
    y = random.randint(0, 350)
    starsize= random.randint(10,30)
    t.goto(x,y)
    
    t.pendown() # 그리기 시작
    for i in range(5):
        t.forward(starsize)
        t.right(144)

t.mainloop()

4. 3번에서 그린 별을 똑같은 방식으로 30번 그리기 위해 중첩 for 문으로 작성한다.

5. penup() 상태에서(=그리지 않음) 별이 그려지는 범위를 지정한다 (가로축:-350 이상~ 350 이하, 세로축: 0이상 350 이하)

    5-1. t.goto를 이용해 x,y 범위내에서 랜덤으로 별이 그려지는 위치만(허공에 위치만 둔다고 생각) 지정한다.

6. pendown()으로 지정한 위치에 별을 그린다.

7. 30번 반복한 후 for 문을 빠져나온다.

8. 마지막에 t.mainloop() 를 추가하여 그림이 생성되고 바로 창이 닫히는 것을 방지한다.

 

# 전체 코드

import turtle as t
import random

t.bgcolor("black")
t.pensize(2)
t.pencolor("yellow")
t.speed(500) # 0.5초


for k in range(30):
    t.penup()
    x= random.randint(-350,350)
    y = random.randint(0, 350)
    starsize= random.randint(10,30)
    t.goto(x,y)
    t.pendown()
    for i in range(5):
        t.forward(starsize)
        t.right(144)

t.mainloop()

 

728x90
반응형