프로그램

[파이썬] 문제 : 3각형 부터 4,5,6 각형 그리기

오디세이99 2023. 4. 3. 11:03
728x90
반응형

import turtle as t

t.setup(width = 1000, height = 600)      # 화면 큭기 설정
t.speed(5)

def draw_rectangle(x, y, width, heigh):  # 사걱형을 그리기 위한 함수
    t.up()                                # 이동을 위한 펜 들기
    t.home()                              # 위치 및 각도 초기화
    t.goto(x, heigh)                      # 처음 그리기 위한 위치로 이동
    t.down()                              # 그리기 위해 펜 내리기
    t.color('black')                      # 색 지정
    for j in range(4):                   # 4각형 반본문
        if j%2 == 0:                     # 가로, 세로에 따라 길이 따로 지정
            line_size = width
        else:
            line_size = heigh
        t.forward(line_size*2)           # 한변 그리기
        t.right(360//4)                  # 회전

        
draw_rectangle(-380, -60, 300, 130)      # 사각형 그리기

start_x = -300                  # 초기 x 위치
line_size = 80                  # 초기 한 변의 길이
n_lst = [3,4,5,6]               # 도형의 5각형, 5각형, 8각형
a_lst = [60, 45, 36, 30]        # 그리는 도형에 따른 각도
color = ['red', 'blue', 'green', 'yellow']    # 도형에 따른 색
for i in range(len(n_lst)):                  # 도형 수에 따른 반복
    # draw_rectangle(start_x, 0, 96)  # 사걱형 외곽 그리기. (x,y, 라인 반절 크기)
    t.up()                      # 이동시 선이 그려지지 않기 위한 펜 들기
    t.home()                    # 위치, 각도 초기화
    t.goto(start_x, 0)          # 펜 이동
    t.down()                    # 그리기 위해 펜 내리기

    t.left(a_lst[i])            # 도형에 따른 각도 지정
    t.color(color[i])           # 색 지정
    t.begin_fill()              # 색 채우기 시작
    n = n_lst[i]                # 도형을 몇 번 회전할 것인지
    angle = 360 // n            # 하나의 다각형이 회전하기 위한 각도
    for j in range(n):         # 하나의 도형을 그리기 위한 반복문
        t.forward(line_size)    # 선 그리면 이동
        t.left(360//n)          # 회전
    
    t.end_fill()                # 색 채우기 종료
    start_x += 140              # 도형에 따라 시작 위치 계산
    line_size -= 10             # 한 변의 길이를 같은 길이로 하면 도형이 커지기 때문에 -10 씩 함


draw_rectangle(240, -60, 100, 130)    # 사각형 그리기
    
t.up()                          # 이동시 선이 그려지지 않기 위한 펜 들기
t.home()
t.goto(300, 30)                 # 펜 이동
t.down()                        # 그리기 위해 펜 내리기
n = 3                           # 도형을 몇 번 회전할 것인지
angle = 360 // n                # 하나의 다각형이 회전하기 위한 각도
t.color('red')                  # 색지정
t.begin_fill()                  # 색 채우기 시작
for j in range(n):             # 하나의 도형을 그리기 위한 반복문
    t.forward(80)               # 선 그리면 이동
    t.left(360//n)              # 회전    
t.end_fill()                    # 색 채우기 종료

t.up()                          # 이동시 선이 그려지지 않기 위한 펜 들기
t.home()
t.goto(300, -30)                # 펜 이동
t.down()                        # 그리기 위해 펜 내리기
n = 4                           # 도형을 몇 번 회전할 것인지
angle = 360 // n                # 하나의 다각형이 회전하기 위한 각도
t.color('blue')
t.begin_fill()
line_size = 80
for j in range(n):              # 하나의 도형을 그리기 위한 반복문
    if j%2 == 0: 
        line_size = 80 
    else: 
        line_size = 60
    t.forward(line_size)         # 선 그리면 이동
    t.left(360//n)              # 회전    
t.end_fill()

t.done()

728x90
반응형