파이썬/파이썬(python) 중급

[18-3 파이썬] 다양한 원 만들기(터틀 명령어 실습)

Olivia-BlackCherry 2022. 8. 26. 14:42

관련 내용이 상세하게 설명된 터틀 공식 문서이다 >> 클릭

 

오늘은 터틀 모듈에서 다양한 원을 만들어보겠다.

원을 만들기 위해서 circle() 메소드를 쓴다.

파라미터는 radius, extent, steps가 있다.

파라미터 조정하기

radius는 반지름의 길이를 의미한다.

radius 에 입력되는 값에 따라 원의 크기가 결정된다. 

 

steps은 원을 그리는 데 걸리는 걸음 수를 의미한다.

step=3이라면 3번 만에 원을 그려야 한다는 뜻이다.

 

extent의 뜻은 범위이며, 그려지는 원의 범위를 결정한다.

만약 extent= none이라면 터틀은 완성된 원을 그린다.

그 외에 extent= 값을 설정하면, 팬이 마지막에 있는 위치에서 해당 값만큼 이동한다.

 

그러면서 터틀은 값에 따라 일정 범위의 호를 그리는데, 

원이 다 그려지지 않을 수도 있고, 하나의 원을 초과할 수도 있다. 

radius가 양수이면 반시계 방향으로, 음수이면 시계 방향으로 그린다.

<코드>

import turtle as t
import random

#tim객체는 반지름 10, 발걸음 3, 색깔 빨강색의 원을 그림
tim = t.Turtle()
tim.pencolor("red")
tim.circle(10, steps = 3)

#tim2객체는 반지름 20, 발걸음 5, 색깔 파란색의 원을 그림
tim2 = t.Turtle()
tim2.pencolor("blue")
tim2.circle(20, steps = 5)

#tim3객체는 반지름 40, 발걸음 10, 색깔 검정색의 원을 그림
tim3 = t.Turtle()
tim3.circle(40, extent= None, steps = 10)

#tim4객체는 반지름 40, 발걸음 10, 굵기가 20이고, 색깔은 초록색인 원을 100만큼 그림
tim4 = t.Turtle()
tim4.pensize(20)
tim4.pencolor("green")
tim4.circle(40, extent= 100, steps = 10)

<실행 화면>

 

 

파라미터 값을 더 다양하게 조정해보자.

<코드>

#tim4객체는 반지름 -40, 발걸음 10, 굵기가 20이고, 색깔은 빨강인 원을 500만큼 그림
tim4.pencolor("red")
tim4.circle(-40, extent= 100, steps = 10)

#tim4객체는 반지름 -80, 발걸음 10, 굵기가 20이고, 색깔은 노랑인 원을 200만큼 그림
tim4.pencolor("yellow")
tim4.circle(-80, extent= 100, steps = 10)

 

<실행화면>

 

이번에는 원의 기울기를 조절해보자. 

이전에 배웠던 

turtle.right(angle값) 또는 turtle.left(angle값)을 넣어 조정한다. 

색깔은 랜덤함수를 사용해 무작위로 결정된다.

<코드>

import turtle as t
import random

# 색깔모드 rgb, 무작위로 선정되기
t.colormode(255)
def random_color():
    r = random.randint(0, 255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
    color = (r, g, b)
    return color
  
tim = t.Turtle()

# 왼쪽으로 50만큼 회전하여 시작하기
for i in range(5):
  tim.pencolor(random_color())
  tim.circle(50)
  tim.left(50)

<실행화면>

 

 

마지막 미션으로, 하나의 원을 완성해보자!

<코드1>

import turtle as t
import random

t.colormode(255)
def random_color():
    r = random.randint(0, 255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
    color = (r, g, b)
    return color
  
tim = t.Turtle()

#하나의 원을 만드려면 360도 나누기 움직이는 각도 = 횟수 정하기 
for i in range(36):
  tim.pencolor(random_color())
  tim.speed(0)
  tim.circle(50)
  tim.left(10)

<코드2>

각도에 따라 횟수가 자동 계산되는 함수를 만들자.!

import turtle as t
import random

t.colormode(255)
def random_color():
    r = random.randint(0, 255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
    color = (r, g, b)
    return color
  
tim = t.Turtle()

def draw_spirograph(angle):
#하나의 원을 만들기 위한 횟수 정해져 작동하는 함수 만들기
  for i in range(int(360/angle)):
    tim.pencolor(random_color())
    tim.speed(0)
    tim.circle(50)
    tim.left(angle)

draw_spirograph(10)

 

<실행화면>