728x90
반응형
파이썬 실습창을 열 수 있습니다.실습창 열기
1. 해바라기
이 그림을 그린 코드입니다.
from turtle import*
speed(0)
color('red')
for i in range(15): # 15회 반복
fd(200) # 앞으로 200 픽셀
lt(96) # 좌회전 96도
ht() # 거북이 숨김(hide turtle)
done()
이 그림은 5회 반복, 좌회전 144도.
1. 반복 회수와 좌회전
이 그림은 5회 반복, 좌회전 140도인데 끝이 꼭 맞지 않습니다.
끝을 꼭 맞게 하려면 반복 회수와 좌회전 각도(외각)를 어떻게 조정해야 할까요?
좌회전 각도의 배수가 360도(원의 1바퀴 각도)의 배수이면 끝이 꼭 맞게 됩니다.
즉, 좌회전 각도의 배수와 360의 최소 공배수를 구하면 됩니다.
다음 코드가 끝이 꼭 맞는 좌회전 각도와 반복 회수의 관계를 구하는 것입니다.
r=[] # 결과를 모을 예정
for a in range(91,180): # 좌회전 각도. 90보다 크고 180보다 작은 범위
for i in range(1,1000): # 반복 회수. 1000은 임의의 수
if a*i%360==0: # 각도의 배수가 360의 배수이면
r.append((a,i)) # 좌회전 각도와 반복 회수를 튜플로 모음
break # 최소 배수만 구함. 더 큰 배수는 겹쳐서 그리게 됨
print(r)
'''
[(91, 360), (92, 90), (93, 120), (94, 180), (95, 72), (96, 15),
(97, 360), (98, 180), (99, 40), (100, 18), (101, 360), (102, 60),
(103, 360), (104, 45), (105, 24), (106, 180), (107, 360), (108, 10),
(109, 360), (110, 36), (111, 120), (112, 45), (113, 360), (114, 60),
(115, 72), (116, 90), (117, 40), (118, 180), (119, 360), (120, 3),
(121, 360), (122, 180), (123, 120), (124, 90), (125, 72), (126, 20),
(127, 360), (128, 45), (129, 120), (130, 36), (131, 360), (132, 30),
(133, 360), (134, 180), (135, 8), (136, 45), (137, 360), (138, 60),
(139, 360), (140, 18), (141, 120), (142, 180), (143, 360), (144, 5),
(145, 72), (146, 180), (147, 120), (148, 90), (149, 360), (150, 12),
(151, 360), (152, 45), (153, 40), (154, 180), (155, 72), (156, 30),
(157, 360), (158, 180), (159, 120), (160, 9), (161, 360), (162, 20),
(163, 360), (164, 90), (165, 24), (166, 180), (167, 360), (168, 15),
(169, 360), (170, 36), (171, 40), (172, 90), (173, 360), (174, 60),
(175, 72), (176, 45), (177, 120), (178, 180), (179, 360)]
이렇게 89가지 경우가 있네요.
'''
2. 해바라기 밭
임의의 위치에, 임의의 크기로, 임의의 해바라기를 그려봅시다.
소스 코드입니다.
더보기
from turtle import*
from random import*
# 위의 프로그램에서 찾은 쌍 중에서 반복 회수가 적은 것을 임의로 선택했습니다.
# 데이터를 바꾸어도 됩니다.
flower=[(96, 15),(99, 40), (100, 18),(105, 24),(108, 10),(110, 36),
(130, 36),(132, 30),(135, 8),(140, 18), (144, 5), (150, 12),
(156, 30),(160, 9),(162, 20),(165, 24),(168, 15),(171, 40)]
f=len(flower) # 꽃의 종류
speed(0)
color('red')
for loop in range(30): # 30송이의꽃(바꾸어도 됨)
x=randint(-150,150) # 꽃의 x좌표
y=randint(-150,150) # 꽃의 y좌표
s=randint(10,100) # 꽃의 크기
r=randint(0,f-1) # 곷 모양(인덱스는 꽃의 종류보다 1 작음)
a,n=flower[r] # 좌회전 각도와 반복 회수
up(); goto(x,y); down() # 꽃을 그릴 위치로 이동
for i in range(n): # 꽃을 그림
fd(s)
lt(a)
ht()
done()
3. 아름다운 해바라기
꽃그림은 색이 있어야하지요?
from turtle import*
from random import*
# colormode(255) # 파이썬 실습창이 아니면 주석을 해제하세요.
flower=[(96, 15),(99, 40), (100, 18),(105, 24),(108, 10),(110, 36),
(130, 36),(132, 30),(135, 8),(140, 18), (144, 5), (150, 12),
(156, 30),(160, 9),(162, 20),(165, 24),(168, 15),(171, 40)]
f=len(flower)
speed(0)
for loop in range(30):
r=randint(0,255) # 이곳 추가. 빨강
g=randint(0,255) # 이곳 추가. 녹색
b=randint(0,255) # 이곳 추가. 파랑
color(r,g,b) # 이곳 추가. 색깔 만듬
w=randint(1,3) # 이곳 추가. 임의의 선 두께
width(w) # 이곳 추가
x=randint(-150,150)
y=randint(-150,150)
s=randint(10,100)
r=randint(0,f-1)
a,n=flower[r]
up(); goto(x,y); down()
for i in range(n):
fd(s)
lt(a)
ht()
done()
여러가지로 응용하여 보세요.
수고하셨습니다.
안녕!
728x90
반응형
'거북이 그림' 카테고리의 다른 글
[거북이그림] 일곱번째 <사인 곡선> (1) | 2024.04.28 |
---|---|
[거북이그림] 여섯번째 <나선 그리기> (1) | 2024.04.27 |
[거북이그림] 네번째 <에펠 탑> (0) | 2024.04.10 |
[거북이그림] 두번째 <다각형 놀이> (0) | 2024.03.31 |
[거북이그림] 첫번째 <거북아 놀자> (0) | 2024.03.28 |