<도전과제>
- 키보드를 누르면 앞, 뒤로 가거나 방향을 시계, 반시계 방향으로 바꾼다.
-
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()
'파이썬 > 파이썬(python) 중급' 카테고리의 다른 글
[19-5 파이썬] 터틀 방향 & 각도 숫자 의미(0, 90, 270, 360) (0) | 2022.08.27 |
---|---|
[19-4 파이썬] 인스턴스(instance), 상태(state) (0) | 2022.08.27 |
[19-2 파이썬] 터틀(turtle) 모듈에서 이벤트 리스너(event listner) (0) | 2022.08.27 |
[19-1 파이썬] 함수를 인수로 사용할 때> 괄호 사용하지 X (0) | 2022.08.27 |
[18-7 파이썬] 예술 작품 만들기(파이썬 라이브러리 turtle, colorgram 이용) (0) | 2022.08.27 |