본문 바로가기
Programming/Python

[ L2P ] ColorBox Basic Ex. 001

by The Programmer 2026. 10. 18.

1. Introduction

 

FMSLogo 코드를 파이썬으로 옮겨보는 연습 예제입니다. 평이한 이런 저런 코드들을 옮겨보는 연습을 통해서 로고 언어와 파이썬 언어의 차이점을 이해하고자 합니다.

 

컬러박스인데 예제 내용은 현재 완전 흑백, 그렇지만 아직 내용이 더 있습니다만. 컬러박스 내용은 다음 기회에 이어서, 일단은 여기까지. 코드만.

 

FMSLogo 코드 원본은 아래 Notes 항목에 있습니다.

 

 

2. Code

 

import turtle

win1 = turtle.Screen()
win1.setup(1024, 800)
win1.title("YZ, Babuooong!")

win1.tracer(2, 50)
# Test it! tracer() function maybe cause a problem.

turtle.mode("logo")
t = turtle.Turtle()

t.shape("turtle")
t.shapesize(3)
t.reset()
t.st()

def box1():
    for i in range(4):    # i is counter. 0, 1, 2, 3.
        t.fd(50)
        t.rt(90)

def box4():
    for i in range(4):
        box1()
        moveNext()

def moveNext():
    t.pu()
    t.rt(90)
    t.fd(70)
    t.lt(90)
    t.pd()

def boxAIO():
    for i in range(4):
        box4()
        moveTurn()

def moveTurn():
    t.pu()
    t.fd(50)
    t.rt(90)
    t.pd()

def setup():
    t.home()
    t.clear()
    t.pd()
    t.st()
    gotoStartPosition()

def gotoStartPosition():
    t.pu()
    t.lt(90)
    t.fd(440)
    t.rt(90)
    t.fd(280)
    t.pd()

def draw():
    boxAIO()
    t.ht()
    turtle.done()

def main():
    setup()
    draw()

main()

# win1.listen()
# win1.mainloop()


 

3. Result

 

[ L2P Basic Ex. 001 결과 ]

 

 

4. Notes

 

FMSLogo 코드를 Python으로 옮겨보는 연습입니다.

 

■ 원본 로고 코드 포함 :

더보기

[ ColorBox Basic Ex. 001 ]

; FMSLogo 코드입니다.

 

to box1
    repeat 4 [ fd 50 rt 90 ]
end

to box4
    repeat 4 [ box1 moveNext ]
end

to boxAIO
    repeat 4 [ box4 moveTurn ]
end

to draw
    boxAIO
    HT
end

to gotoStartPosition
    pu lt 90 fd 440 rt 90 fd 280
    pd
end

to main
    setup
    draw
end

to moveNext
    pu rt 90 fd 50+20 lt 90
    pd
end

to moveTurn
    pu fd 50 rt 90
    pd
end

to setup
    Home CS PPT PD ST
    gotoStartPosition
end

 

.

.

 

■ 응용 연습 과제

1) 랜덤 컬러링

2) ......

 

 

5. 응용 연습 - 1 - PyDroid3용 코드.

 

 

위 본문 코드와 같은 내용이지만, Android 스마트폰용 PyDroid3에서는 작은 차이가 있습니다. PyDroid3에서는 일부 명령이 다릅니다. 그 부분만 수정합니다.

 

 

더보기

import turtle

 

scr = turtle.Screen()

scr.screensize(1024, 768)

scr.mode("logo")

# "standard" 모드가 기본입니다.

# "standard" 모드는 Python turtle 모듈의 기본 설정으로 초기 거북이의 방향이 동쪽East을 향하고 있습니다.

# "logo" 모드에서는 기본 설정으로 거북이가 북쪽을 향합니다. FMSLogo와 동일하게 설정됩니다.

# 이 설정을 권장합니다.

 

"""
PyDroid3에서는 
turtle.setup(1024, 768)이나
turtle.mode("logo")는 작동되지 않습니다.

 

위 코드처럼 screen 객체 방식으로 처리되어야 합니다.


"""

 

scr.tracer(2, 50)
# Test it! tracer() function maybe cause a problem.

# tracer()는 문제를 일으킬 수 있습니다.

# 도형의 규모가 매우 거대할 경우, tracer()는 처리 속도에 큰 영향을 줍니다.

# 하지만 문제가 발생한다면, 이 명령문은 주석문 처리로 제외하세요.

#  일부 상황에서는 거북이의 위치와 방향에 영향을 주었습니다.

 

t1 = turtle.Turtle()

 

t1.shape("turtle")

t1.shapesize(5)

# t1.reset()

def box1():
    for i in range(4):    # i is counter. 0, 1, 2, 3.
        t.fd(50)
        t.rt(90)

def box4():
    for i in range(4):
        box1()
        moveNext()

def moveNext():
    t.pu()
    t.rt(90)
    t.fd(70)
    t.lt(90)    # YZ님은 이 한 줄을 빼먹고 저에게 야만스러운 행패를! ^.^;
    t.pd()

def boxAIO():
    for i in range(4):
        box4()
        moveTurn()

def moveTurn():
    t.pu()
    t.fd(50)
    t.rt(90)
    t.pd()

def setup():
    t.home()
    t.clear()
    t.pd()
    t.st()
    gotoStartPosition()

def gotoStartPosition():
    t.pu()
    t.lt(90)
    t.fd(440)
    t.rt(90)
    t.fd(280)
    t.pd()

def draw():
    boxAIO()

    t.pu() 
    t.home()
    t.pd()
    t.ht() 
    t._update()
    # t.ht() 함수가 일부 환경에서 정상 작동하지 않을 경우,
    # _update() 함수로 보완할 것. 화면 갱신.
    # scr.tracer()와 관련이 있음.
    turtle.done()   
# turtle 그래픽 그리기를 완성하고 대기상태를 유지합니다. 최종 출력 결과 유지.

 

def main():
    setup()
    draw()

main()   

# main() 함수 콜이 있어야 main()함수가 실행됩니다. 함수 콜이 없는데 저절로 실행되지는 않습니다.

# 이 부분을 누락하지 않도록 주의하세요.

# win1.listen()
# win1.mainloop()

 .

.

 

 

 

6. Files

 

코드 기본 파일만 올려둡니다. 나머지는 매우 비슷한 이유로 생략.

 

L2P_Basic_Ex_001_.py
0.00MB

 

 

7. Ref.

1) Python 내장 도움말(turtle Module).

2) 강환수, 신용현, [ 누구나 코딩 Python ]

3) 김영탁, Python.

4) 이전에 업로드한  L2P 예제들.

 

 

Happy Programming!

^.^;

 

 

 

 

'Programming > Python' 카테고리의 다른 글

실행시간 측정 - 001  (0) 2026.10.14
Hidden 변수 __name__ 활용법 - 001  (0) 2026.10.14
PySide6 Intro. Ex. 001  (0) 2026.10.02
wx.Sizer()  (0) 2026.09.20
Syndia (v.0.0.3)  (0) 2026.09.15