파이썬 터틀 그래픽스는 로고 프로그래밍 언어의 일부 그래픽관련 기능을 파이썬에서 모듈화 한 것이다. 파이썬 기본 패키지 안에 들어있다.
로고 프로그래밍 언어는 특별히 어린이들을 위해 개발된 프로그래밍 언어이다. 그게 언제나면 무려 1966년이었다... 당시 시 10살 정도의 어린이라면 현재 60대 중반이다 (ㅡ.,ㅡ;;;)
그 때 어린이면 지금은 손주 볼 나이
로고 프로그래밍 언어 인터뷰까지 유튜브에 있다 헐... 막 없는게 없어 유튜브는
터틀 그래픽스를 파이썬 기본 패키지에 포함시킬 정도면 아직까지 교육적 가치가 있다는 것으로 이해할 수 있겠다. 어찌보면 파이썬과 추구하는 방향이 비슷하다. 사용해보면 쉽게 무언가를 할 수 있다고 느끼게 만드는 힘이 있다. 사용자(어른이 포함)는 내가 컨트롤 하고 있다는 느낌을 받는다.
이것으로 어떤 프로그램을 만들기는 쉽지 않겠지만 (터틀을 활용한 그래픽 쑈는 할 수 있다) 충분한 교육은 될 것이다. 베이식 계열과는 또 다른 재미가 있다.
일단 시작하기 전에 파이썬의 공식 DOCUMENTATION 이 잘 되어 있다. 막히면 여기서 참고해도 좋다.
*파이썬 공식문서 turtle
https://docs.python.org/3.3/library/turtle.html?highlight=turtle
https://python.flowdas.com/library/turtle.html 한글판이 있다!
*앞쪽 10초정도 파이썬 데모를 볼 수 있음
우선 turtle 모듈부터 import 한다. turtle은 from turtle import *을 해야 재미를 느낄 수 있다.
from turtle import *
forward(200)
left(90)
forward(200)
left(90)
forward(200)
left(90)
forward(200)
left(90)
mainloop()
눈앞에서 바로 그려준다.
소스 코드를 보니 for문으로 고쳐도 될 것 같다.
from turtle import *
for i in range(4):
forward(200)
left(90)
mainloop()
이렇게 하면 깔끔하다. 사각형이니까 range(4)이다.
- 삼각형도 그려보자. 360을 3으로 나누면 120이 된다. range에 3을 넣으면 삼각형이다.
from turtle import *
for i in range(3):
forward(200)
left(120)
mainloop()
- 이번에는 수식으로 다 바꿔봤다. 360도를 5로 나눈다. 변의 길이는 150으로 한다.
from turtle import *
total_degree = 360
line_number = 5
line_length = 150
for i in range(line_number):
forward(line_length)
left(total_degree/line_number)
mainloop()
20각형을 그리면 어떤일이 생길까? 컴퓨터니까 100각형도 그릴 수는 있다. 하지만 어떨까?
from turtle import *
total_degree = 360
line_number = 20
line_length = 30
for i in range(line_number):
forward(line_length)
left(total_degree/line_number)
mainloop()
놀랍게도 원에 가까워지고 있다. 기원전 아르키메데스가 정 96각형을 측정하여 파이(3.14ㅌㅌㅌ)를 구했다는 것은 역사의 일화다. 원은 원래 다각형이었다는 것이다...
import turtle
n = 5
for i in range(n): # 5
turtle.forward(200)
turtle.right((360/n)*2) # 72*2 = 144
turtle.mainloop()
피라미드는 내가 붙인 이름이다. 눈에 착시현상이 탑처럼 깊이를 만들어낸다.
간격을 range의 세번째 인수로 조절할 수 있다
from turtle import *
speed(0)
colors = ['blue']
pencolor(colors[0])
for i in range(1,500,2):
forward(i)
left(90)
mainloop()
역시 터틀하면 RGB 스파이럴이다. 빨려들어갈 것 같은 나선형 그래픽을 보여준다. 90도 턴하는게 아니라 1,2도 차이를 주면 사각형이 나선형으로 돈다. (원을 사각형으로 그린다.)
turtle 모드에서는 저 함수들은 그대로 사용하면 된다. (import *) speed는 0일때가 제일 빠르다.
from turtle import *
speed(0)
colors = ['red','green','blue']
pensize(2)
degree = 2
for i in range(1,500):
pencolor(colors[i%3])
forward(i)
left(90+degree)
mainloop()
from turtle import *
speed(0)
pensize(2)
degree = 2
for i in range(1,1200,3):
forward(i)
left(120+degree)
mainloop()
from turtle import *
speed(0)
color('red')
for i in range(50,700,1): # this "for" loop will repeat these functions 500 times
forward(i)
right(90.1)
n값을 조정하여 그린다.
import turtle
n = 60
turtle.speed('fastest')
for i in range(n):
turtle.circle(150)
turtle.right(360/n)
turtle.mainloop()
*로고 프로그래밍 언어
https://en.wikipedia.org/wiki/Logo_(programming_language)
*터틀 그래픽스
https://en.wikipedia.org/wiki/Turtle_graphics