일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 웹크롤링
- 유데미
- 상태코드
- SMTP
- 파이썬
- Sheety
- class
- HTTP
- API
- ndarray
- 최저가
- 오류
- 게임
- Tequila
- 프로젝트
- 파싱
- 계산기
- Pygame
- twilio
- Python
- API플랫폼
- 웹페이지
- 프로그램
- udemy
- HTML
- Endpoint
- 부트스트랩
- phython
- 쉬티
- Game
- Today
- Total
데이터 분석가
파이썬(Python) 스피로 그래프 & Spot painting 본문
안녕하세요 !!
이번 시간에는 거북이가 자유롭게 돌아다니면서 그림을 그립니다 !
그냥 거북이가 아니라 해적거북이인듯
첫 번째 거북이 그림
import turtle as t #turtle을 t로 명명합니다
import random
tim = t.Turtle() #이 거북이 이름은 tim입니다
colours = ["CornflowerBlue", "DarkOrchid", "IndianRed", "DeepSkyBlue", "LightSeaGreen", "wheat", "SlateGray", "SeaGreen"]
directions = [0, 90, 180, 270] #directions은 90도씩 4가지 방향이 있습니다
tim.pensize(15) #거북이의 펜 사이즈는 15포인트입니다
tim.speed("fastest") #거북이의 속도는 "아주빠름"
for _ in range(200): #200번 반복
tim.color(random.choice(colours)) #첫번째 컬러선택
tim.forward(30) #30칸을 갑니다
tim.setheading(random.choice(directions)) #[0, 90, 180, 270] 중 한 가지 방향
이 거북이 이름은 tim 입니다
방향을 정해주고 이를 바탕으로 [0, 90, 180, 270] 도 중 랜덤 선택이 되고
forward(30) 30칸씩 앞으로 나아갑니다
끝 !
두 번째 스피로 그래프(spirograph)
import turtle as t #t로 명명
import random
tim = t.Turtle()
t.colormode(255) #rgb는 1~255 숫자 중 선택
def random_color(): #랜덤 색을 받습니다rgb는 3가지 색 조합임
r = random.randint(0, 255)
g = random.randint(0, 255)
b = random.randint(0, 255)
color = (r, g, b)
return color #랜덤 color 반환
def draw_spirograph(size_of_gap):
for _ in range(int(360 / size_of_gap)):
tim.color(random_color())
tim.circle(100) #100은 원을 의미한다
tim.setheading(tim.heading() + size_of_gap)
draw_spirograph(5)
rgb 각각 요소들의 값들을 랜덤으로 받아 조합하여 랜덤 색을 정합니다.
size_of_gap = 5부터
heading은 현재 거북이가 바라보는 방향의 각도를 반환합니다
허스트의 spot painting은 30종류의 색을 이용해 100개의 점을 만든 작품입니다
이번에는 30종류의 색을 추출하기 위해 colorgram을 다운하여 추출해봅시다
https://pypi.org/project/colorgram.py/
세 번째 그림은 어디서 많이 본 것 같은 그림이지 않나요 ??
사실 제가 파이썬 프로그램으로 그린 그림인데요 !
물론 원작자는 데미안 허스트 spot painting 입니다만 30개의 점은 랜덤으로 표시 돼 있으므로
아주 똑같진 않을 않습니다
import turtle as turtle_module #
import random
turtle_module.colormode(255)
tim = turtle_module.Turtle()
tim.speed("fastest")
tim.penup() #펜 이동 중 펜을 올려서 표시 안되게함
tim.hideturtle() #커서를 숨깁니다
color_list = [(202, 164, 109), (238, 240, 245),
(150, 75, 49), (223, 201, 135), (52, 93, 124),
(172, 154, 40), (140, 30, 19), (133, 163, 185),
(198, 91, 71), (46, 122, 86), (72, 43, 35),
(145, 178, 148), (13, 99, 71), (233, 175, 164),
(161, 142, 158), (105, 74, 77), (55, 46, 50),
(183, 205, 171), (36, 60, 74), (18, 86, 90),
(81, 148, 129), (148, 17, 20), (14, 70, 64),
(30, 68, 100), (107, 127, 153), (174, 94, 97),
(176, 192, 209)]
바로 코드를 살펴 보겠습니다 !
turtle을 turtle_module로 이름을 바꿔 불러왔습니다
***rgb 색상을 기준으로 하므로 colormode(255)로 설정합니다
speed로 그림 그리는 속도 설정, penup으로 공백을 만들고 커서를 숨깁니다
그리고 컬러는 30종류로 , 데미안 허스트가 사용한 구색과 같은 구색입니다 !
tim.setheading(225) #225도로 각도
tim.forward(300) #300만큼 앞으로
tim.setheading(0) #0도로 각도 변경
number_of_dots = 100 # 점 개수
for dot_count in range(1, number_of_dots + 1): #100사이즈
tim.dot(20, random.choice(color_list)) #점의 크기 20, 컬러는 랜덤
tim.forward(50) #50앞으로
if dot_count % 10 == 0: #한 행에 10개씩만 입력되고 10개가 될 때 줄 바꿈
tim.setheading(90)
tim.forward(50)
tim.setheading(180)
tim.forward(500)
tim.setheading(0)
screen = turtle_module.Screen() #별도의 스크린을 불러옵니다
screen.exitonclick() #스크린을 클릭 시 종료됩니다
setheading은 각도를 조정합니다 (0도 ~ 360도)
forward는 이동 거리를 조정합니다
def dot_count in range(1, number_of_dots +1): 을 통해 100개의 반복문을 작성합니다
dot(크기, 색깔)로 20크기 컬러 랜덤.
이중 if문을 이용해 한 행에 10줄만 점이 찍히고 다음 줄로 올라갑니다
그렇게 10 x 10 로 100개의 점이 찍히면서 완료됩니다.
'파이썬(python) 프로젝트 모음' 카테고리의 다른 글
파이썬 뱀 게임(Snake game) Turtle Game 프로젝트 (0) | 2023.03.29 |
---|---|
파이썬(Python) 거북이 경주(turtle race) 프로젝트 (0) | 2023.03.28 |
파이썬(Python) 퀴즈 프로그램(quizprogram) 프로젝트 (0) | 2023.03.27 |
파이썬(Python) 커피 자판기 프로그램 (0) | 2023.03.24 |
파이썬(Python) HigerLower 게임 프로젝트 (0) | 2023.03.24 |