기타/What I Learned
[TIL] 파이썬으로 익히는 STEAM 코딩 (21.11.23)
가죽방패
2021. 11. 23. 12:10
※ 자유 낙하 운동 궤적 그리기
- 터틀 스크린을 이용해 자유 낙하 운동의 궤적을 그리는 프로그램을 코딩
import turtle as t # 터틀 그래픽 모듈인 turtle 을 t로 불러들임
def draw_pos(x, y): # 터틀의 궤적을 표시하는 함수
t.clear()
t.setpos(x, y)
t.stamp()
hl = -(t.window_height() / 2)
tm = 0
while True:
d = (9.8 * tm**2) / 2 # 이동거리 계산 - 중력 가속도 9.8m/s
ny = y - int(d)
if ny > hl: # ny의 값이 화면 하달에 도달하지 않았을 경우 계속 반복
t.goto(x, ny)
t.stamp()
tm = tm + 0.3
else:
break
t.setup(500, 600) # 터틀 스크린의 크기
t.shape("circle") # 터틀 모양 설정
t.shapesize(0.3, 0.3, 0) # 터틀 모양 크기 설정 (가로, 세로, 테두리)
t.penup() # 터틀 펜 올림
s = t.Screen()
s.onscreenclick(draw_pos)
s.listen()
t.mainloop()
# t.mainloop() : 기본 제공되는 IDLE을 사용하지 않을 경우 터틀스크린이 켜지자마자 꺼지는 경우가 있는데
# 이를 방지하기 위해 스크린을 종료할 때까지 마우스와 키보드 입력을 키다리게 하는 코드임
이벤트가 발생하였을 때, 호출되는 함수를 콜백 함수(callback function)이라고 하는데
위 코드에서는 터틀 스크린에서 마우스가 클릭되는 이벤트가 발생할 시
onscreenclick() 함수의 인수로 콜백 함수를 등록할 수 있음
onscreenclick() 함수의 두 번째 인수는 보통은 생략되어 있으나 1은 마우스 왼쪽 버튼, 2는 가운데 버튼
3은 오른쪽 버튼을 의미하며 다음과 같이 사용이 가능하다.
t.onscreenclick(draw_pos, 1) # 마우스 왼쪽 버튼
t.onscreenclick(draw_pos, 2) # 마우스 가운데 버튼
t.onscreenclick(draw_pos, 3) # 마우스 오른쪽 버튼