본문 바로가기
프로그램

[파이썬] 문제 : 터틀(turtle) 5개의 줄어드는 원 그리기 및 달팽이 모양 회전하기

by 오디세이99 2023. 5. 17.
728x90
반응형

import turtle
import random

turtle.colormode(255)       # 색을 RGB로 하도록 지정
t=turtle.Turtle()           # 터틀
t.shape('classic')
t.hideturtle()
t.speed(0)                  # 속도 빠르게

def draw(x, y, rad):        # 그리는 함수. x,y 좌표. rad:반지름. co:칼라
    t.penup()               # 펜 들기
    t.goto(x, y)            # 이동
    t.pendown()             # 펜 내리기
    r = random.randint(0,255)    # 색을 0~255의 값을 임의의로 지정하도록 함
    g = random.randint(0,255)
    b = random.randint(0,255)
    t.begin_fill()
    t.color(r,g,b)           # 색 지정
    # t.width(20)              # 선 두께
    t.circle(rad)            # 원 그리기
    t.end_fill()

    
radius = 100                # 원 반지름 지정
x = -400                    # 처음 x 좌표
y  = 0                      # 처음 y 좌표
for i in range(6, 1, -1):         # 5개의 원을 그리기 위한 반복
    x += int(i*100/i) - (30-i)    # x 좌표 변경. 적당히 x 축 거리가 줄어들도록 함
    draw(x, y, radius)             # 원 그리기 함수
    radius -= (radius * ((7-i)*0.1))       # 반지름이 줄어들도록 함

turtle.done()

try:
    turtle.bye()
except:
    print("bye")

 

import turtle
import random

turtle.colormode(255)       # 색을 RGB로 하도록 지정
t=turtle.Turtle()           # 터틀
t.shape('classic')
t.hideturtle()
t.speed(0)                  # 속도 빠르게

def draw(x, y, length):    # 그리는 함수. x,y 좌표. rad:반지름. co:칼라
    t.penup()               # 펜 들기
    t.goto(x, y)            # 이동
    t.pendown()             # 펜 내리기
    r = random.randint(0,255)    # 색을 0~255의 값을 임의의로 지정하도록 함
    g = random.randint(0,255)
    b = random.randint(0,255)
    t.color(r,g,b)          # 색 지정
    t.width(4)              # 선 두께
    t.forward(length)       # 선 그리기

    
length = 10                # 원 반지름 지정
x = 0                      # 처음 x 좌표
y = 0                      # 처음 y 좌표
t.left(180)                # 왼쪽으로 먼저 그리도록 함
for i in range(15):        # 5개의 원을 그리기 위한 반복
    draw(x, y, length)      # 원 그리기 함수
    x = t.xcor()            # 함수를 통해서 이동한 좌표 구하기
    y = t.ycor()
    length += (radius * 0.8)  # 선의 길이를 점점 늘어나도록 계산
    t.left(90)                # 회전

turtle.done()

try:
    turtle.bye()
except:
    print("bye")

728x90
반응형

댓글