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

[19-3 파이썬] 드로잉팬 만들기(터틀 명령어 실습)

Olivia-BlackCherry 2022. 8. 27. 22:30

<도전과제>

- 키보드를 누르면 앞, 뒤로 가거나 방향을 시계, 반시계 방향으로 바꾼다.
from turtle import Turtle, Screen

nin = Turtle()
# print(nin.heading() +20)
screen = Screen()

def move_forwards():
    nin.forward(10)

def move_backwards():
    nin.forward(-10)

def counter_clockwise():
    nin.left(20)

def clockwise():
    nin.right(10)

def left():
    new_heading = nin.heading() +20
    nin.setheading(new_heading)

def right():
    new_heading = nin.heading() - 20
    nin.setheading(new_heading)

screen.listen()
screen.onkey(key="w",fun=move_forwards)
screen.onkey(key="s",fun=move_backwards)
screen.onkey(key="a",fun=counter_clockwise)
screen.onkey(key="d",fun=clockwise)
screen.onkey(key="q",fun=right)
screen.onkey(key="e",fun=left)

screen.exitonclick()

다양한 터틀 메서드를 활용하여 

다양한 방향으로 직선, 곡선을 그릴 수 있는 드로잉팬을 만들어보자.

 

함수의 인수로 함수를 받을 때 괄호를 넣지 않는다는 것을 고려하자.

자세한 내용을 알고 싶다면 --> 클릭

 

<코드>

from turtle import Turtle, Screen

nin = Turtle()
screen = Screen()

screen.listen()

# 함수 인수로 함수를 받을 때는 괄호 넣지 않음!!
# onkey()함수는 인수가 없는 함수만 인수로 받음!
screen.onkey(key="w",fun=move_forwards)

screen.exitonclick()

onkey() 함수는 인수가 없는 함수만을 받는다.

그래서 앞으로 가는 함수, 뒤로 가는 함수, 반시계방향으로 돌리는 함수, 시계방향으로 돌리는 함수를 

각각 만들어야 한다.

1. 앞으로 가는 함수

def move_forwards():
    nin.forward(10)

 

 

2. 뒤로 가는 함수

def move_backwards():
    nin.forward(-10)
def move_backwards():
    nin.backrward(10)

 

 

<거북이의 방향과 관련된 함수- heading()>

방향, 각도 숫자에 관해 더 알고 싶다면 -->클릭

(0, 90, 270, 360)

 


3. 반시계 방향으로 회전하는 함수

def counter_clockwise():
    nin.left(20)
def counter_clockwise():
    new_heading = nin.heading() + 10
    nin.setheading(new_heading)

 


4. 시계 방향으로 회전하는 함수

def clockwise():
    nin.right(10)
def clockwise():
    new_heading = nin.heading() - 10
    nin.setheading(new_heading)



<지우는 함수- clear()>

★ 삭제: 거북이가 그린 그림만 삭제

☆ 삭제: 화면에 있는 모든 것(그림, 거북이) 삭제

 

 

5. 그림 지우기

def clear():
    nin.clear()

 

 

6. 시작점으로 이동하기

def start_position():
    nin.home()

 

<실행화면>

 

<최종코드>

from turtle import Turtle, Screen

nin = Turtle()
# print(nin.heading() +20)
screen = Screen()

def move_forwards():
    nin.forward(10)

def move_backwards():
    nin.forward(-10)

def counter_clockwise():
    nin.left(20)

def clockwise():
    nin.right(10)

def left():
    new_heading = nin.heading() +20
    nin.setheading(new_heading)

def right():
    new_heading = nin.heading() - 20
    nin.setheading(new_heading)

def clear():
    nin.clear()

def start_position():
    nin.home()


screen.listen()
screen.onkey(key="w",fun=move_forwards)
screen.onkey(key="s",fun=move_backwards)
screen.onkey(key="a",fun=counter_clockwise)
screen.onkey(key="d",fun=clockwise)
screen.onkey(key="q",fun=right)
screen.onkey(key="e",fun=left)
screen.onkey(key="c",fun=clear)
screen.onkey(key="v",fun=start_position)

screen.exitonclick()