일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- JavaScript
- 파이썬터틀
- 일본워킹홀리데이계획서
- 바이트디그리
- 자바스크립트
- 내일배움카드
- 국비지원
- 일러스트레이터강의
- 디지털기초역량훈련
- 독후감
- 파이썬
- 플렉스박스
- 클린코드
- 웹개발자를위한자바스크립트의모든것
- flexbox
- 7장오류처리
- 5장형식맞추기
- 중첩된객체
- 패스트캠퍼스
- 코딩 #개발자 #노마드북클럽 #노개북
- 9장단위테스트
- 일본워홀서류
- 디스트럭처링
- python turtle
- 3장함수
- python
- css
- 일본워킹홀리데이이유서
- es6
- 노개북
- Today
- Total
KARIU의 IT 블로그
[Python turtle] 04. 파이썬 터틀로 거북이 모양 스탬프 찍기 본문
이번에는 길 위에 걸어 다니는 거북이들을 그려(찍어) 보겠습니다.
일단 길 위에 있는 거북이들을 파이썬 터틀로 표현하기 위해서 약간의 좌표 계산이 필요합니다.
전 600x600창을 만들어서 사용하였습니다.
만약 파이썬 터틀에서 600x600짜리 창을 만들었다면 좌표는
이러한 형식으로 지정됩니다.
양의 좌표의 최대는 300, 음의 좌표의 최대는 -300으로 총 합쳐서 600으로 구성이 됩니다.
이러한 특성을 생각하여 좌표 계산을 해보겠습니다.
일단 터틀 라이브러리를 불러오고 창 크기를 설정합니다. 그리고 갈색 길을 그려줄 커서와 거북이 모양을 찍어 줄 커서를 생성합니다.
1
2
3
4
5
6
|
import turtle
turtle.setup(width=600, height=600) #창 크기 600x600
gil=turtle.Turtle()
t=turtle.Turtle()
|
cs |
길을 그려봅시다. 저는 가로 300, 세로 600 짜리의 길을 그렸습니다. x좌표의 -150과 150을 걸치게 설정하였습니다. 색깔은 갈색으로 지정하였습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import turtle
turtle.setup(width=600, height=600) #창 크기 600x600
gil=turtle.Turtle()
t=turtle.Turtle()
gil.penup()
gil.goto(-150,-300)
gil.pendown()
gil.pensize(5)
gil.color("brown")
gil.begin_fill()
gil.goto(-150,300)
gil.goto(150,300)
gil.goto(150,-300)
gil.goto(-150,-300)
gil.end_fill()
|
cs |
성공적으로 길이 그려졌습니다.
이제 메인인 거북이들을 길 위에 찍어줍시다.
총 9마리의 거북이들을 찍겠습니다. 각각의 좌표를 정해서 리스트에 저장하였습니다.
1
2
|
xy=[[-75,-250],[50,-200],[-50,-150],[50,-100],
[-25,50],[50,75],[-75,100],[100,150],[-50,200]] #거북이들을 찍을 좌표들
|
cs |
리스트로 저장하는 이유는 반복문을 사용하여 간편하게 코드를 짜기 위함입니다.
1
2
3
|
t.shape("turtle")
t.color("green")
t.setheading(90) #거북이의 머리가 북쪽을 향하게
|
cs |
일단 커서의 모양을 turtle(거북이)로 설정해줍니다.
그리고 거북이하면 초록색이 떠오르니깐 초록색으로 지정해줍니다.
또한 거북이의 머리가 위로 향하게(북쪽) setheading() 함수를 사용합니다. 90을 넣어주면 북쪽을 향하게 됩니다.
1
2
3
4
5
6
|
t.penup()
t.goto(xy[0])
t.stamp()
for x,y in xy :
t.goto(x,y)
t.stamp()
|
cs |
거북이의 이동경로가 표시되지 않게 penup() 함수를 사용합니다.
이제 첫 번째 거북이를 찍어봅시다. goto()를 이용하여 거북이를 옮겨줍니다. xy[0]은 맨 처음 만들었던 좌표 리스트 기억 나시죠? 거기서 첫 번째 값을 가져온다는 의미입니다.
그리고 stamp() 함수를 이용하면 그 자리에 거북이 모양이 그대로 찍힙니다!
이제 여러 마리의 거북이들을 찍어야 됩니다. 하지만 앞에서 한 것처럼 일일히 코드를 작성하면 비효율적입니다. 그래서 반복문 for문을 이용하여 단 3줄 만에 모든 거북이들을 찍어보겠습니다.
for x,y in xy:
위의 코드의 해석은 xy리스트에서 하나씩 계속 값을 가져온다는 의미입니다. 저희는 리스트를 생성할 때부터 2개의 숫자를 지정하였고 좌표도 x와 y가 둘 다 있어야 되므로 x, y라고 적어줍니다.
그러면 xy리스트에서 좌표를 하나씩 가져와 반복문 안에 있는 코드들을 실행합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import turtle
turtle.setup(width=600, height=600) #창 크기 600x600
gil=turtle.Turtle()
t=turtle.Turtle()
#길 만들기
def draw_gil() :
gil.penup()
gil.goto(-150,-300)
gil.pendown()
gil.pensize(5)
gil.color("brown")
gil.begin_fill()
gil.goto(-150,300)
gil.goto(150,300)
gil.goto(150,-300)
gil.goto(-150,-300)
gil.end_fill()
#거북이 찍기
def stamp():
xy=[[-75,-250],[50,-200],[-50,-150],[50,-100],
[-25,50],[50,75],[-75,100],[100,150],[-50,200]] #거북이들을 찍을 좌표들
t.shape("turtle")
t.color("green")
t.setheading(90) #거북이의 머리가 북쪽을 향하게
t.penup()
t.goto(xy[0])
t.stamp()
for x,y in xy :
t.goto(x,y)
t.stamp()
#함수 실행
draw_gil()
stamp()
|
cs |
최종 코드입니다. 최종 코드에는 길을 그리는 함수와 거북이를 찍는 함수를 따로 만들어 정리하였습니다.
코드는 github에서 다운로드 받을 수 있습니다.
'프로그래밍 언어 > Python turtle' 카테고리의 다른 글
[Python turtle] 03. 터틀로 도형 그리기 (0) | 2020.12.30 |
---|---|
[Python turtle] 02. 파이썬 터틀명령어 정리 (0) | 2020.12.29 |
[Python turtle] 01. 파이썬 터틀이란? & 터틀 사용법 (1) | 2020.12.29 |