• 검색 결과가 없습니다.

14.1. turtle class

N/A
N/A
Protected

Academic year: 2022

Share "14.1. turtle class"

Copied!
54
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

14장. turtle로 그림 그리기 ­ turtle 객체

14.1. turtle class

(2)

turtle 이란?

2

14.1. turtle class

▪ turtle이란 앞서 배웠던 python이 제공하는 클래스 중 하나이다.

▪ 거북이의 모양을 가진 객체를 생성하여 선을 그려 디자인을 만들어 내는 것이 가능한 시각적인 도구

▪ ‘import turtle’을 함으로써 turtle 모듈을 사용

(3)

turtle이 제공하는 메소드

3

14.1. turtle class

▪ 위의 표와 같이 작성하면 다음과 같은 화면이 생성된다. 이 화살표를 이동시키면서 선을 그려 도 형을 만들 수 있다.

>>> import turtle

>>> turtlee = turtle.Turtle()

# turtle모듈을 import함으로써 turtle이 제공하는 메소드를 
 사용할 수 있다.

# 새로 만들어지는 turtle 객체의 이름은 ‘turtlee’로 지정한다.

(4)

4

기준 좌표

x축 y축

(0,0)

원점

(5)

5

turtle0.py 라고 저장하고 실행하면 atom 에디터에서 실행창이 뜨고나서 바로 사라진다

-> 터틀 그래픽을 화면에 그린 후 실행을 마쳤으므로 곧바로 화면이 종료된다

turtle.done() 함수는 turtle 그래픽 화면을 붙잡아두는 역할을 한다

-> myturtle.done() 이 아니다!!!( turtle.done() 으로 해야함 )

-> 화면은 닫기 버턴을 클릭해서 닫는다

(6)

14장. turtle로 그림 그리기 ­ turtle 객체

14.2. turtle 클래스가 제공하는 메소드

(7)

7

14.2. turtle 클래스가 제공하는 메소드

▪ turtle이 제공하는 메소드를 써보기 위해 다음과 같이 ‘myTurtle’라는 객체를 선언한다.

▪ turtle에서는 turtle의 모양 및 크기, 색을 지정하고, turtle의 움직이 는 방향이나 거리를 정하여 선을 그리게 하는 등 여러 가지 메소드 를 제공한다.

>>> myTurtle = turtle.Turtle()

(8)

앞뒤로 움직이기

8

14.2. turtle 클래스가 제공하는 메소드

(9)

9

(10)

turtle 객체의 모양 지정하기

10

14.2. turtle 클래스가 제공하는 메소드

▪ turtle의 모양은 여러 가지로 지정할 수 있다.

[예제]

turtle의 객체.shape(‘shape이름‘) turtle의 모양을 지정한 모양으로 변경

종류) arrow, turtle, circle, square, triangle, classic

(11)

11

(12)

turtle 객체의 색이나 크기 지정하기 (1/2)

12

14.2. turtle 클래스가 제공하는 메소드

▪ 색이나 크기도 지정하는 대로 다음과 같은 메소드를 통해 바꿀 수 있다.

[예제]

Turtle의 객체.shapesize(w, h, b) turtle의 크기를 원하는 세로 w, 가로 h, 윤곽선 b배로 변경

(13)

turtle 객체의 색이나 크기 지정하기 (2/2)

13

14.2. turtle 클래스가 제공하는 메소드

▪ 색이나 크기도 지정하는 대로 다음과 같은 메소드를 통해 바꿀 수 있다.

[예제]

Turtle의 객체.fillcolor(‘색 이름’) Turtle의 색을 지정한 색으로 변경 종류) white, red, green, blue…

turtle 그래픽 모듈의 Turtle() 객체를 만들어

myturtle 이라는 이름으로 부르자(참조라고 함)

(14)

[예제 14-2] turtle 이동시키기 (1/2)

14

14.2. turtle 클래스가 제공하는 메소드

(15)

[예제 14-2] turtle 이동시키기 (2/2)

15

14.2. turtle 클래스가 제공하는 메소드

(16)

각도 지정해서 움직이기

16

14.2. turtle 클래스가 제공하는 메소드

▪ 앞서 turtle이 앞, 뒤로 움직이는데 각도를 지정해주어 모든 방향을 자유자재로 움직이도록 할 수 있다.

▪ 각도를 지정하는 방식에는 여러 가지가 있는데, 이 중 대표적인 방법에는 2가지가 있다.

[예제]

turtle의 객체.setheading(각도) 원점을 기준으로 지정한 각도만큼 방향을 바꿈 turtle의 객체.left(각도) /

right(각도) 왼쪽 또는 오른쪽 방향으로 지정한 각도만큼 방향을 바꿈

(17)

17

(18)

18

(19)

[예제]

19

14.2. turtle 클래스가 제공하는 메소드

(20)

[주의] 객체의 방향

20

14.2. turtle 클래스가 제공하는 메소드

▪ 주의할 점은 객체의 방향을 정할 때 기준과 방향을 정확하게 알아야 한다는 것이다.

▪ setheading() 메소드를 사용하여 방향을 지정할 때는 turtle의 머리를 기준으로 
 왼쪽 방향으로 각도를 계산한다.

▪ left() 혹은 right() 메소드를 사용할 때는 turtle의 머리 기준으로 왼쪽인지 오른쪽인지 
 잘 보고 각도를 지정하면 된다. 그래서 setheading(90)과 left(90)은 동일한 역할을 한다.

(21)

21

(22)

22

(23)

23

import ~ as 구문

- “turtle이라는 모듈을 t라는 이름으로 import하라”

- turtle.shape() 대신에 t.shape() 으로 사용가능함

(24)

원 그리기

24

14.2. turtle 클래스가 제공하는 메소드

▪ 원의 반지름을 지정하여 메소드를 호출하면 그에 해당하는 원을 그릴 수 있다.

▪ circle()은 turtle을 이용하여 더 심화되고 복잡한 그래픽적인 이미지를 만들어 낼 때 많이 
 쓰이는 메소드이다.

[참고] 작업 도중 reset 하기

▪ turtle 객체를 이용하다 보면 객체의 위치를 원위치인 중간으로 가져오거나 화면을 다시 초기 
 상태로 만들어야 할 때가 생긴다.

▪ 또는 그림을 완성한 후 그림 본연의 모습을 보기 위해 객체를 숨기고자 하는 경우도 생기게 된다.

▪ 그럴 때 다음과 같은 메소드를 사용하여 진행한다.

turtle의 객체.circle


(반지름 길이) 원점을 기준으로 지정한 반지름 길이에 해당하는 원을 그림

turtle의 객체.hideturtle() turtle을 숨김

turtle의 객체.home() turtle을 초기 위치로 되돌림 turtle의 객체.clear() 화면을 초기 상태로 되돌림

(25)

좌표로 움직이기

25

14.2. turtle 클래스가 제공하는 메소드

▪ 좌표 기준으로 지정하는 turtle 객체 이동 방법이 있다.

▪ 원래 turtle 클래스의 객체는 지정된 x, y 좌표 위에 나타나기 때문에 좌표를 활용하여 
 움직이면 된다.

[예제]

Turtle의 객체.setposition(x좌표, y좌표) Turtle의 위치를 지정한 좌표(x,y)로 바꿔줌 Turtle의 객체.position() Turtle의 현재 위치를 나타냄

(26)

[예제 14-4] 정사각형 만들기 (1/2)

26

14.2. turtle 클래스가 제공하는 메소드

(27)

[예제 14-4] 정사각형 만들기 (1/2)

27

14.2. turtle 클래스가 제공하는 메소드

(28)

펜 들고 내리기 (1/3)

28

14.2. turtle 클래스가 제공하는 메소드

▪ turtle이 이동할 때 선이 그어지는 것에 대하 여부를 결정하고 싶을 때는 다음과 같은 
 메소드를 사용하면 된다.

[예제]

turtle의 객체.penup() turtle의 pen이 놓여 짐. 이동할 때 선을 그리지 않음

(29)

펜 들고 내리기 (2/3)

29

14.2. turtle 클래스가 제공하는 메소드

turtle의 객체.pendown() turtle의 pen이 들려짐. 이동할 때 선을 그림

(30)

▪ turtle 객체를 이동시키기 전, 선을 그리는 혹은 그리지 않는 상태의 여부를 알고 싶다면 
 다음과 같은 메소드를 사용하여 확인한다.

펜 들고 내리기 (3/3)

30

14.2. turtle 클래스가 제공하는 메소드

turtle의 객체.isdown() turtle의 pen의 상태를 알려줌

펜이 놓여져 있으면 True, 놓여있지 않으면 False 반환

>>> turtlee.isdown()

True

(31)

[실습 14-1] penup & pendown 응용하여 심화된 그림 그리기

31

14.2. turtle 클래스가 제공하는 메소드

(32)

[실습 14-1] penup & pendown 응용하여 심화된 그림 그리기

32

14.2. turtle 클래스가 제공하는 메소드

(33)

[실습 14-2] 눈사람 그리기

33

14.2. turtle 클래스가 제공하는 메소드

(34)

[실습 14-2] 눈사람 그리기

34

14.2. turtle 클래스가 제공하는 메소드

(35)

14장. turtle로 그림 그리기 ­ turtle 객체

14.3. 조건문과 반복문 사용하여 동작 조절하기

(36)

조건문이나 반복문이 사용되는 이유

36

14.3. 조건문과 반복문 사용하여 동작 조절하기

▪ 앞서 배운 메소드들을 사용하여 별 모양을 그렸을 때,

조건문이나 반복문이 없다면, (a)와 같이 프로그램을 짜게 된다.

하지만, 조건문이나 반복문이 들어간다면 (b)와 같은 짧은 프로그램으로 짤 수 있다.

(37)

[예제 14-5] 정오각형 그리기 (1/2)

37

14.3. 조건문과 반복문 사용하여 동작 조절하기

(38)

[예제 14-5] 정오각형 그리기 (2/2)

38

14.3. 조건문과 반복문 사용하여 동작 조절하기

(39)

14장. turtle로 그림 그리기 ­ turtle 객체

14.4. 다른 클래스와 함께 turtle 사용하기

(40)

다른 클래스와 함께 사용하기

40

14.4. 다른 클래스와 함께 turtle 사용하기

▪ turtle 또한 클래스이므로 앞 장에서 배웠던 다른 클래스들도 함께 사용이 가능하다.

▪ 예를 들어, random 클래스를 포함하여 turtle 객체의 이동 거리를 임의의 수를 주는 것이 
 가능하다.

▪ 위와 같은 아이디어로 다양한 프로그램을 작성하는 것이 가능하다.

▪ 참고로 다른 클래스를 포함하여 프로그램을 작성할 때는 파일로 작성하는 것이 더욱 
 효율적이다.

(41)

[실습 14-3] 무작위로 움직이는 turtle

41

14.4. 다른 클래스와 함께 turtle 사용하기

(42)

[실습 14-3] 무작위로 움직이는 turtle

42

14.4. 다른 클래스와 함께 turtle 사용하기

(43)

43

(44)

[실습 14-4] 무작위로 움직이는 
 여러 마리의 turtle

44

14.4. 다른 클래스와 함께 turtle 사용하기

(45)

[실습 14-4] 무작위로 움직이는 
 여러 마리의 turtle

45

14.4. 다른 클래스와 함께 turtle 사용하기

(46)

[참고] list를 이용하여 turtle 관리하기

46

14.4. 다른 클래스와 함께 turtle 사용하기

▪ turtle의 객체를 여러 개 생성하는 경우, 한꺼번에 관리하기 위해 list를 사용하는 것이 
 효율적이다.

위의 [실습 14-4] 가 그 예이다.

▪ 예를 들어, 4개의 turtle 객체를 생성하여 list인 turtles에 넣는다고 가정했을 때 프로그램은 다음 과 같다.

(47)

47

(48)

48

(49)

49

다음과 같은 turtle graphic을 그리시오

- red, green, blue, gray의 turtle 이 랜덤하게 움직임

(50)

50

(51)

[연습문제]

51

14.4. 다른 클래스와 함께 turtle 사용하기

2. 다음 프로그램의 잘못된 부분을 찾고, 고쳐 보아라.

(52)

[연습문제]

52

14.4. 다른 클래스와 함께 turtle 사용하기

3. 다음 요구사항에 맞추어 프로그램을 작성해보자.

(53)

▪ 참조

53 http://ivis.kr/index.php/

2017_%ED%8C%8C%EC%9D%B4%EC%8D%AC_%ED%84%B0%ED%8B%80%EA%B7%B8%EB%9E%98%ED%94%BD

(54)

54

참조

관련 문서

포인터가 가리키는 변수가 없을 때는

제시된 상황 이나 활동을 학생 스스로 가 해결해야하는 상황으 로 인식시키기 위한 과정 이

중앙처리장치에서는 센서에서 보내 오는 신호를 프로그램대로 처리하도록 설계되어 있습니다.. 동력전달의 시작은

그로부터 70년 가까이 지난 현재, 이 황금백 합을 쫓는 사람들이 당시 매장된 보물의 실마리를 찾아 다니고 있습니다.. 실마리는 또 다른

하이라이팅 기법은 이러한 적중영역을 문제해결에 적합한 형태로 재진술 하는 기법입니다.... 아이디어

현재 아이디어의 고쳐 야 할 점을 생각하여 더 좋은 아이디어를 구상할 수 있는 도전의 기회를 갖습니다?. - 학생이 평가영역을 만들어 평가 하는

나는 어떻게든 할아버지를 도와드리고 싶었습니다.. 학생들의 결과물에 대해서 격 려와 칭찬을 아끼지 않습니다.. 그러나 한국가스공사를 비롯하여 전

로봇들이 많아지면서 생겨나는 새로운 직업에는 어떤 것