DAY 13 거북이그래픽응용하기 모두의파이썬 20 일만에배우는프로그래밍기초
거북이그래픽응용하기 01 자주사용하는거북이그래픽명령어 02 03 키보드로거북이를조종해서그림그리기 마우스로거북이를조종해서그림그리기 2
1. 자주사용하는거북이그래픽명령어 자주사용하는거북이그래픽명령어 2 함수설명사용예 pos( ) / position( ) xcor( ), ycor( ) goto(x, y), setpos(x, y) setx(x), sety(y) distance(x, y) 거북이의현재위치 ( 좌표 ) 를구합니다 (x, y 둘다 ). 거북이의 x 좌표나 y 좌표를구합니다 (x, y 중하나만 ). 거북이를특정위치 ( 좌표 ) 로보냅니다 (x, y 둘다 ). 거북이의 x 좌표나 y 좌표를지정한위치로이동합니다 (x, y 중하나만 ). 현재거북이가있는위치에서특정위치까지의거리를구합니다. t.pos() a = t.ycor() # 거북이의 y 좌표를구해 a 에저장합니다. t.goto(100,50) heading( ) 거북이가현재바라보는각도를구합니다. ang = t.heading() towards(x, y) setheading( 각도 )/ seth( 각도 ) home( ) 현재거북이가있는위치에서특정위치까지바라보는각도를구합니다. t.sety(50) # 거북이의 y 좌표를 50 만큼이동합니다. x 좌표는그대로둡니다 d = t.distance(100,100) # 현재위치에서 (100, 100) 까지의거리를구해서 d 에저장합니다. ang = t.towards(10,10) # 현재위치에서 (10, 10) 까지가는데필요한각도를구해 ang 에저장합니다. 거북이가바라보는방향을바꿉니다. t.setheading(90) # 거북이가화면위쪽을바라봅니다. 거북이가오른쪽을바라볼때의각도가 0 이며, 시계반대방향으로돌면서각도가커집니다. 거북이의위치와방향을처음상태로돌립니다. t.home() # 거북이가화면가운데인 (0, 0) 에서오른쪽 (0 도 ) 을바라봅니다.
1. 자주사용하는거북이그래픽명령어 자주사용하는거북이그래픽명령어 2 함수설명사용예 onkeypress( 함수, 키이름 ) onscreenclick( 함수 ) ontimer( 함수, 시간 ) listen( ) title( 창이름 ) write( 문자열 ) 키보드를눌렀을때실행할함수를정합니다. 마우스버튼을눌렀을때실행할함수를정합니다. 일정한시간이지난뒤실행할함수를정합니다. 사용자입력이잘처리되도록거북이그래픽창에포커스를줍니다 거북이그래픽창의이름을지정합니다. 현재거북이위치에문자를출력합니다. def f(): t.forward(10) t.onkeypress(f, "Up") # 위쪽방향키 를누르면 f 함수를호출합니다 (f 함수는거북이를 10 만큼앞으로이동시킵니다 ). t.onscreenclick(t.goto) # 마우스버튼을누르면앞에서정의한 goto 함수를호출합니다 (goto 함수는거북이를마우스버튼을누른위치로이동시킵니다 ). def f(): t.forward(10) t.ontimer(f, 1000) # 1000 밀리초 (1 초 ) 후에 f 함수를호출합니다 (f 함수는거북이를 10 만큼앞으로이동시킵니다.) t.listen() t.title("welcome") # 거북이그래픽창의이름이 Untitle 에서 welcome 으로바뀝니다. t.write("hello") # 현재거북이위치에 Hello 를출력합니다. t.write("hello", False, "center", ("", 20)) # 현재거북이위치에가운데정렬로크기가 20 인 Hello 를출력합니다 ( 이문장전체를구문처럼통째로기억하는정도로만알고넘어가도괜찮습니다 ).
1. 자주사용하는거북이그래픽명령어 태극모양을그리는프로그램 import turtle as t t.bgcolor("black") t.speed(0) for x in range(200): if x % 3 == 0: t.color("red") if x % 3 == 1: t.color("yellow") if x % 3 == 2: t.color("blue") t.forward(x * 2) t.left(119) # 배경색을검은색으로지정 # 거북이속도를가장빠르게지정 # for 반복블록을 200 번실행 # 번갈아가면서선색을바꿈 # x*2 만큼앞으로이동 ( 반복하면서선이점점길어짐 ) # 거북이를 119 도왼쪽으로회전.
1. 자주사용하는거북이그래픽명령어 태극모양을그리는프로그램
1. 자주사용하는거북이그래픽명령어 나머지연산자 (%) 를사용하여색을반복하는원리 x x % 3 (3 으로나눈나머지 ) 실행되는문장 선색 0 0 t.color("red") 빨간색 1 1 t.color("yellow") 노란색 2 2 t.color("blue") 파란색 3 0 t.color("red") 빨간색 4 1 t.color("yellow") 노란색 5 2 t.color("blue") 파란색
1. 자주사용하는거북이그래픽명령어 질문 119 를 120 으로바꾸면결과가어떻게나올까? import turtle as t t.bgcolor("black") t.speed(0) for x in range(200): if x % 3 == 0: t.color("red") if x % 3 == 1: t.color("yellow") if x % 3 == 2: t.color("blue") t.forward(x * 2) t.left(120) # 배경색을검은색으로지정 # 거북이속도를가장빠르게지정 # for 반복블록을 200 번실행 # 번갈아가면서선색을바꿈 # x*2 만큼앞으로이동 ( 반복하면서선이점점길어짐 ) # 거북이를 119 도왼쪽으로회전.
1. 자주사용하는거북이그래픽명령어 삼각형모양을그리는프로그램
2. 키보드로거북이를조종해서그림그리기 자주사용하는거북이그래픽명령어 2 ( 다시보기 ) 함수설명사용예 setheading ( 각도 )/ seth( 각도 ) 거북이가바라보는방향을바꿉니다. t.setheading(90) # 거북이가화면위쪽을바라봅니다. 거북이가오른쪽을바라볼때의각도가 0 이며, 시계반대방향으로돌면서각도가커집니다. Forward ( 거리 )/ fd( 거리 ) 거북이가앞으로이동합니다. t.forward(100) # 거북이가 100 만큼앞으로이동합니다.
02 2. 키보드로거북이를조종해서그림그리기 import turtle as t def turn_right(): t.setheading(0) t.forward(10) def turn_up(): t.setheading(90) t.forward(10) def turn_left(): t.setheading(180) t.forward(10) def turn_down(): t.setheading(270) t.forward(10) # 오른쪽으로이동하는함수 # t.seth(0) 으로입력해도됨 # t.fd(10) 으로입력해도됨 # 위로이동하는함수 # 왼쪽으로이동하는함수 # 아래로이동하는함수
1. 자주사용하는거북이그래픽명령어 자주사용하는거북이그래픽명령어 2 함수설명사용예 onkeypress( 함수, 키이름 ) 키보드를눌렀을때실행할함수를정합니다. def f(): t.forward(10) t.onkeypress(f, "Up") # 위쪽방향키 를누르면 f 함수를호출합니다 # f 함수는거북이를 10 만큼앞으로이동시킵니다 ). listen( ) 사용자입력이잘처리되도록거북이그래픽창에포커스를줍니다 t.listen()
02 2. 키보드로거북이를조종해서그림그리기 def blank(): t.clear() # 화면을지우는함수 t.shape("turtle") t.speed(0) t.onkeypress(turn_right, "Right") t.onkeypress(turn_up, "Up") t.onkeypress(turn_left, "Left") t.onkeypress(turn_down, "Down") t.onkeypress(blank, "Escape") t.listen() # 거북이모양을사용 # 거북이속도를가장빠르게지정 # 를누르면 turn_right 함수를실행 # ESC 를누르면 blank 함수를실행 # 거북이그래픽창이키보드입력을받음
02 2. 키보드로거북이를조종해서그림그리기
02 2. 키보드로거북이를조종해서그림그리기 실행하자마자프로그램이종료되었어요! 파이썬 IDLE 프로그램이아닌다른파이썬개발프로그램 ( 예를들어파이참 ) 을사용하고있다면실행하자마자결과없이바로프로그램이종료될수있습니다. IDLE 프로그램을사용하더라도실행설정이다르다면같은현상이나타날수있습니다. 그럴때는코드제일끝 (13B-walk.py 에서는 t.listen( ) 아래 ) 에다음코드를한줄추가한다음프로그램을실행해보세요. t.mainloop() t.mainloop 함수는사용자가거북이그래픽창을종료할때까지프로그램을실행하면서마우스나키보드입력을계속처리하도록하는함수입니다.
03 3. 마우스로거북이를조종해서그림그리기 import turtle as t t.speed(0) t.pensize(2) t.hideturtle() t.onscreenclick(t.goto) # 거북이의속도를가장빠르게지정 # 펜굵기를 2로지정 # 거북이를화면에서숨김 # 마우스버튼을누르면 t.goto 함수를호출 # 그위치로거북이가움직이면서선을그림
03 3. 마우스로거북이를조종해서그림그리기