Language/Python

[ Python ] 랜덤 다각형 그리기

곽수진 2021. 9. 27. 01:32
반응형
삼각형, 사각형, 오각형, 육각형, 원 중에 하나를 랜덤으로 그리는 프로그램을 작성해보자.

그림이 그려지는 위치는 마우스를 클릭하는 곳이고, 선 색과 채우기 색은 동일한 랜덤값으로 하며, 다각형의 크기는 50~100 중 랜덤으로 결정하도록 함

초기 색상은 검정색이고, c를 누르면 모든 내용이 지워지며 스페이스바를 누르면 랜덤으로 색상이 결정되도록 함

 

import random, turtle
t = turtle.Turtle()
s = turtle.Screen()
t.speed(5)

def drawit(x,y): 
    t.penup()
    t.goto(x,y)
    t.pendown()
    t.begin_fill()
    draw_polygon(size)
    t.end_fill()

def draw_polygon(size): 
    p=[3, 4, 5, 6, 7]
    s = random.choice(p)
    if s == 7:
        t.circle(size)
    else:
        t.circle(size, steps=s)

def turtle_color():
    global r, g, b
    r = random.random()
    g = random.random()
    b = random.random()
    t.pencolor((r, g, b))
    t.fillcolor((r, g, b)) 

r, g, b = 0.0, 0.0, 0.0
     
def poly_size():
    size=random.randint(50, 100)
    return size

s.onscreenclick(drawit) 
size=poly_size() 
s.onkeypress(t.clear,"c")
s.onkeypress(turtle_color, "space") 
s.listen()

 

def drawit(x,y):
    t.penup()
    t.goto(x,y)
    t.pendown()
    t.begin_fill()
    draw_polygon(size)
    t.end_fill()

▶ 마우스로 클릭한 곳(x,y)에 그림을 그림

 

def draw_polygon(size):
    p=[3, 4, 5, 6, 7]
    s = random.choice(p)
    if s == 7:
        t.circle(size)
    else:
        t.circle(size, steps=s)

▶ 삼각형, 사각형, 오각형, 육각형, 원 중에 하나를 랜덤으로 결정

  → 각각 삼각형(3), 사각형(4), 오각형(5), 육각형(6), 원(7)을 지칭하는 값들을 리스트에 미리 저장 후 랜덤으로 선택하도록 함

 

def turtle_color():
    global r, g, b
    r = random.random()
    g = random.random()
    b = random.random()
    t.pencolor((r, g, b))
    t.fillcolor((r, g, b))

r, g, b = 0.0, 0.0, 0.0

▶ 전역변수 r, g, b를 선언하고 터틀 그래픽의 선 색과 채우기 색을 모두 랜덤으로 결정된 r, g, b 값으로 사용

  → r, g, b를 0.0으로 초기화 함, 즉 초기 색상을 검정으로 선언

 

def poly_size():
    size=random.randint(50, 100)
    return size

▶ 다각형의 크기는 50~100 중 랜덤으로 결정됨

 

s.onscreenclick(drawit) : 화면을 클릭하면 그림을 그리도록 함

size = poly_size() : 랜덤으로 다각형의 크기를 결정하여 반환함

s.onkeypress(t.clear, "c") : "c"를 누르면 화면의 모든 내용이 지워짐

s.onkeypress(turtle_color, "space") : "space bar"를 누르면 랜덤으로 색상이 결정됨

s.listen() : 프로그램이 활성화 됨

 

출력 결과 모습

 

반응형