반응형
리스트에 저장된 색상을 하나씩 꺼내 거북이의 색상으로 설정하면서 속이 채워진 다각형을 랜덤한 위치에 랜덤한 크기로 그리는 프로그램을 작성해보자.
import turtle, random
t=turtle.Turtle()
t.shape("turtle")
s=turtle.Screen()
def draw_shape(t, c, length, sides, x, y):
t.up()
t.goto(x,y)
t.down()
t.fillcolor(c)
angle = 360.0 / sides
t.begin_fill()
for dist in range(sides):
t.forward(length)
t.left(angle)
t.end_fill()
for i in range(10):
color=random.choice(['red', 'orange', 'yellow', 'green', 'blue', 'purple'])
side_length = random.randint(10,100)
sides = random.randint(3,10)
x = random.randint(-200,200)
y = random.randint(-200,200)
draw_shape(t, color, side_length, sides, x, y)
▶️ draw_shape(t, c, length, sides, x, y) : 화면의 (x,y) 위치에 다각형을 그리는 함수 정의
리스트에 색상을 미리 저장하지 않고 r, g, b 값을 랜덤으로 선정해 그림을 그리도록 하려면?
import turtle, random
t=turtle.Turtle()
t.shape("turtle")
s=turtle.Screen()
def draw_shape(t, length, sides, x, y):
global r,g,b
r=random.random()
g=random.random()
b=random.random()
t.pencolor((r,g,b))
t.up()
t.goto(x,y)
t.down()
t.fillcolor((r,g,b))
angle = 360.0 / sides
t.begin_fill()
for dist in range(sides):
t.forward(length)
t.left(angle)
t.end_fill()
r, g, b = 0.0, 0.0, 0.0
for i in range(10):
side_length = random.randint(10,100)
sides = random.randint(3,10)
x = random.randint(-200,200)
y = random.randint(-200,200)
draw_shape(t, side_length, sides, x, y)
▶️ global r, g, b : r,g,b 색상을 사용하기 위한 전역 함수
▶️ 랜덤값을 각각 r, g, b 값에 지정함
r = random.random()
g = random.random()
b = random.random()
▶️ r,g,b = 0.0, 0.0, 0.0 : r, g, b 초기 값을 각각 0.0으로 설정함
→ 검은 색상으로 설정
x, y 좌표가 -200~200 사이에서 50~100 사이의 크기를 가지는 랜덤으로 삼각형, 사각형, 오각형, 육각형 원을 그리는 프로그램을 작성해보자.
그림의 개수는 최소 10개, 최대 20개로 사용자에게 입력을 받으며, 잘못 입력한 경우 올바른 값이 입력될 때까지 반복해서 입력받음
import random, turtle
t=turtle.Turtle()
t.shape("turtle")
def poly_num():
msg = ""
while True:
num = int(turtle.textinput("", msg+"다각형 개수를 입력하세요.: "))
if 10 <= num <= 20:
break
else:
msg="10~20 사이의 수를 입력하세요.\n"
return num
def poly_size():
size=random.randint(50, 100)
return size
def random_position():
x = random.randint(-200, 200)
y = random.randint(-200, 200)
t.up()
t.goto(x,y)
t.down()
def draw_polygon(size):
p=[3, 4, 5, 6, 9]
s= random.choice(p)
if s == 9:
t.circle(size)
else:
t.circle(size, steps=s)
for i in range(poly_num()):
s=poly_size()
random_position()
draw_polygon(s)
▶️ 사용자 정의 함수(poly_num())을 만들어 사용자에게 다각형의 개수를 입력받을 때, 그 값이 10 이상 20 이하면 다음 함수로 이동하지만 이에 해당되지 않을 겨우 10~20 사이의 수를 입력하도록 다시 안내
def poly_num():
msg = ""
while True:
num = int(turtle.textinput("", msg+"다각형 개수를 입력하세요.: "))
if 10 <= num <= 20:
break
else:
msg="10~20 사이의 수를 입력하세요.\n"
return num
▶️ size=random.randint(50, 100) : 다각형의 크기는 50~100 사이의 랜덤값으로 정함
▶️ x와 y 좌표값을 -200부터 200사이로 정해 그 사이에서 그림을 그리도록 함
def random_position():
x = random.randint(-200, 200)
y = random.randint(-200, 200)
t.up()
t.goto(x,y)
t.down()
▶️ 다각형을 그리도록 함수를 정의할 때, 리스트에 저장된 값중 9가 랜덤으로 선택되면 원을 그리도록 함
▶️ steps : 원 반경내에 step값 만큼의 다각형을 그림
→ steps=s : s에 뽑힌 수(p 리스트에 존재하는 수들 중 랜덤으로 뽑힘)만큼 깎은 다각형을 그림
→ 역삼각형 그릴 때 활용 가능
def draw_polygon(size):
p=[3, 4, 5, 6, 9]
s= random.choice(p)
if s == 9:
t.circle(size)
else:
t.circle(size, steps=s)
반응형
'Language > Python' 카테고리의 다른 글
[ Python ] 가위 바위 보 게임 프로그램 (0) | 2021.08.30 |
---|---|
[ Python ] To-Do List 출력 프로그램 (0) | 2021.08.30 |
[ Python ] 주사위 빈도 계산 프로그램 (0) | 2021.08.30 |
[ Python ] 평균 계산 프로그램 (0) | 2021.08.30 |
[ Python ] 습도 구하기 프로그램 (0) | 2021.08.30 |