프로그램
[파이썬] 문제 : 랜덤색 및 크기로 사각형 그리기
오디세이99
2023. 6. 7. 16:20
728x90
반응형
import turtle
import random
t = turtle.Turtle()
t.hideturtle() # 거북이 모양 숨기기
# t.shape ("turtle")
t.speed(0) # 가장 빠르게 그리기
colors = ['red','blue','yellow','black'] # 조건1
x = [30, 60, 90, 150, 300] # 조건 2
y = [400, 600, 800] # 조건 3
z = [1, 3, 5] # 조건 4
t.pencolor('black') # 조건1, 펜 컬러 black
def move(): # 조건5
a = random.randrange(-800, 800) # 랜덤값 선택
b = random.randrange(-800, 800)
t.penup() # 펜 들기. 그림이 그려지지 않도록 펜을 듬
t.goto(a, b) # a(x), b(y) 좌표로 이동. 화면 중앙이 0,0
t.pendown() # 그리기 시작하기 위해 펜 내림
def draw_box(xx, color): # 조건2
move() # 핸덤 위치로 이동
t.fillcolor(color) # 채우기 색으로 지정
t.begin_fill() # 채우기 시작
for i in range(4): # 사각형이니까 4번 반복. 한변 그리는 것을 4번 반복
t.pensize(z[random.randint(0, len(z)-1)]) # 조건4. 펜 굵기 랜덤 선택
t.forward(xx) # 이동. xx 길이만큼 이동
t.right(90) # 오른쪽으로 90도 방향 변경
t.end_fill() # 채우기 종료
def draw_bigbox(yy): # 조건3
move() # 핸덤 위치로 이동
pos = [] # 첫 사각형을 그릴때 우측상단,우측하단,좌측하단의 좌표 기억하기 위한 리스트 변수 선언
for i in range(4): # 사각형 4개 이어 붙여 그리기
for j in range(4): # 사각형 1개 그리기
t.pensize(z[random.randint(0, len(z)-1)]) # 조건4. 펜 굵기 랜덤 선택
t.forward(yy) # 이동. yy 길이마큼 이동
t.right(90) # 오른쪽 90도 방향 변경
if i == 0 and j < 3: # 첫번째 사각형의 우측상단,우측하단,좌측하단의 좌표 기억
pos.append([int(t.xcor()), int(t.ycor())]) # 좌표 추가. xcor(), ycor() 함수는 현재 x, y 좌표 알 수 있음
if i < 3: # 첫번째 사각형에 이어붙이기 위해 각 사각형의 첫번째 위치로 이동
t.penup()
t.goto(pos[i][0], pos[i][1])
t.pendown()
for i in range(4): # 조건3
yy = y[random.randint(0, len(y)-1)] # 길이를 랜덤하게 선택. random.randint(0, len(y)-1)로 0~5 번호 선택. 이를 인덱스로 y리스트 요소 선택
draw_bigbox(yy) # 랜덤하게 선택한 길이를 인수로 해서 그리기
for i in range(40): # 조건 2
color = colors[random.randint(0, len(colors)-1)] # 랜덤하게 색 선택
xx = x[random.randint(0, len(x)-1)] # 길이를 랜덥하게 선택
draw_box(xx, color) # 사각형 그리기
turtle.done()
try:
turtle.bye()
except:
print("bye")
728x90
반응형