반응형
테세우스 터틀이 화면에 그려진 미로의 벽에 닿지 않도록 ←, → 화살표 키로 조종하여 미로를 탈출하는 프로그램을 작성해보자.
import turtle
t=turtle.Turtle()
t.shape('turtle')
s=turtle.Screen()
t.speed(0)
def draw_maze(x,y):
for i in range(2):
t.penup()
if i==1:
t.goto(x+100, y+100)
else:
t.goto(x,y)
t.pendown()
t.forward(300)
t.right(90)
t.forward(300)
t.left(90)
t.forward(300)
def turn_left():
t.left(10)
t.forward(10)
def turn_right():
t.right(10)
t.forward(10)
draw_maze(-300,200)
s.onkey(turn_left,'Left')
s.onkey(turn_right,'Right')
t.penup()
t.goto(-300,250)
t.pendown()
s.listen()
s.mainloop()
▶️ draw_maze() 사용자 정의 함수를 생성해 두 번 반복하며 i값이 1일 경우, x와 y에 각각 100씩 더해준 좌표로 이동하고 그렇지 않은 경우에는 x,y로 이동함
→ 앞으로 300만큼 이동하고 오른쪽으로 90도 회전, 앞으로 300 이동하고 왼쪽으로 90도 회전, 다시 앞으로 300 이동해 미로를 그림
def draw_maze(x,y):
for i in range(2):
t.penup()
if i==1:
t.goto(x+100, y+100)
else:
t.goto(x,y)
t.pendown()
t.forward(300)
t.right(90)
t.forward(300)
t.left(90)
t.forward(300)
▶️ 사용자가 키보드를 이용해 왼쪽, 오른쪽으로 이동할 때는 각각 앞으로 10씩 이동하고 10도씩 회전
def turn_left():
t.left(10)
t.forward(10)
def turn_right():
t.right(10)
t.forward(10)
▶️ draw_maze 함수를 호출해 x와 y값에 -300, 200을 적용
→ 좌측 키를 누르면 왼쪽으로, 우측 키를 누르면 오른쪽으로 이동함
draw_maze(-300,200)
s.onkey(turn_left,'Left')
s.onkey(turn_right,'Right')
▶️ mainloop() : 사용자가 터틀 그래픽 창을 종료할 때까지 프로그램을 실행하면서 마우스나 키보드 입력을 계속 처리
▶ listen() : 키 입력모드가 실행되도록 하는 명령어
★ 오류 ★
화살표 키를 눌렀을 때 동작하는 함수를 정의하는 과정에서, "Left"와 "Right"를 소문자로 작성해 오류가 발생함
반응형
'Language > Python' 카테고리의 다른 글
[ Python ] 피보나치 수열 계산 프로그램 (0) | 2021.09.01 |
---|---|
[ Python ] 팩토리얼 계산 프로그램 (0) | 2021.09.01 |
[ Python ] 이차함수 그래프 그리기 프로그램 (0) | 2021.09.01 |
[ Python ] 숫자 거꾸로 출력하기 프로그램 (0) | 2021.09.01 |
[ Python ] 한 붓 그리기 프로그램 (0) | 2021.09.01 |