펜 제어(penup/pendown), goto 좌표 이동, 드로잉 모듈 함수화 및 패턴 연산
펜 자국 없이 특정 좌표로 순간 이동할 때의 안전 프로토콜
t.penup() # 1. 펜 떼기 (선 그리기 방지)
t.goto(-100, 50) # 2. X:-100, Y:50 위치로 이동
t.pendown() # 3. 펜 대기 (다시 그릴 수 있게 셋팅)
t.color("red")
t.pensize(3)
t.forward(100) # 4. 빨간선 드로잉 원하는 곳에 원하는 크기와 색상으로 임의의 도형을 소환하는 모듈 함수
# 도형 모듈 정의
def draw_square(x, y, size, color_name):
t.penup()
t.goto(x, y)
t.pendown()
t.color(color_name)
for _ in range(4):
t.forward(size)
t.right(90)
# 다른 인자로 호출하여 조립
draw_square(-50, 50, 30, "blue")
draw_square(100, -100, 80, "green") 정의된 도형 드로잉 함수를 루프 내에서 각도를 틀어가며 반복 호출합니다.
t.speed(0) # 속도를 최대치로 지정
def draw_star(size):
for _ in range(5):
t.forward(size)
t.right(144)
# 12도씩 돌려가며 30번 호출
for _ in range(30):
draw_star(120)
t.right(12) # ❌ penup() 해제 누락 오류
t.penup()
t.goto(50, 50)
t.forward(100) # ⚠️ pendown()이 없어서 선이 그려지지 않고 빈 화면 유지됨
# 대안: goto 동작 이후 pendown() 매칭을 기계적으로 확인
# ❌ 화면 버벅임 해소
t.speed(0) # 애니메이션 최적 속도 셋팅 | 실천 과제 | 구현 솔루션 |
|---|---|
| 선 꼬임 방지 | 이동 명령인 goto 전후에 penup() / pendown()을 페어로 선언 |
| 코드 모듈화 | 도형의 x, y, size, color를 매개변수 인터페이스로 받아 def 포장 |
| 패턴 생성 | 루프 안에 도형 드로잉 함수를 두고 누적 각도 연산을 엮어 반복 수행 |