1. 터틀 임포트 해 오기
import turtle
혹은 밑처럼 임포트 해 온다면 사용할 때마다 앞에 turtle를 붙일 필요가 없다.
from turtle import *
터틀을 임포트 행 온다.
import turtle as t
as를 붙여서 쓰면 ~로 부르겠다. 라는 의미이다. 밑에서는 turtle을 t로 줄여서 쓸 수 있다.
2. 터틀 객체 생성하기
tim = turtle.Turtle()
터틀을 사용할 객체를 가져와 준다. 나는 tim이라는 터틀을 만들 것이다.
3. 터틀 모양 바꾸기
turtle.shape라는 파라메터를 사용한다.
터틀은 여러가지 모양이 있다.
“arrow”, “turtle”, “circle”, “square”, “triangle”, “classic”
적용방법
tim.shape("turtle")
터틀 색 바꾸기
tim.color('orange')
색 참고 사이트: https://trinket.io/docs/colors
화면 꺼질 때까지 유지시키기
screen = Screen()
screen.exitonclick()
터틀 정사각형 그리기
from turtle import *
tim = Turtle()
tim.shape("turtle")
tim.color('orange')
# screen = Screen()
# screen.exitonclick()
for i in range(4):
tim.forward(100)
tim.left(90)
터틀 점선 그리기
1번 방법 - for문
for i in range(30): # for 문 사용하기
tim.pendown() # 그릴 준비를 한다.
tim.forward(5) # 움직이며 그린다.
tim.penup() # 움직일 때 그리지 않는다.
tim.forward(5) # 움직이며 그리지 않는다.
2번 방법 - while문
current_step = 0
steps = 30
while current_step < steps:
tim.pendown()
tim.forward(5)
tim.penup()
tim.forward(5)
current_step += 1
터틀 여러가지 도형 그리기
def tim_forward(tim_color, num, angle):
tim.color(tim_color)
for i in range(num):
tim.forward(100)
tim.left(angle)
# tim.forward(100)
# 삼각형
tim_forward('red', 3, 120)
# 사각형
tim_forward('orange', 4, 90)
#오각형
tim_forward('yellow', 5, 72)
#육각형
tim_forward('green', 6, 60)
#팔각형
tim_forward('blue', 8, 45)
#구각형
tim_forward('navy', 9, 40)
#십각형
tim_forward('purple', 10, 36)
터틀 random walk 그리기
import turtle
from turtle import *
import random
tim = Turtle()
tim.shape("turtle")
tim.color('red')
screen = Screen()
colors = ['red', 'orange', 'yellow', 'blue', 'navy', 'purple', 'green', 'turquoise', 'gold']
tim.width(4) # 두께 수정
num = 0 # 변수 0으로 설정
while num < 30: # 30이 될 때까지 while문 반복
tim_color = random.randint(0, len(colors)) # 색 랜덤 지정
tim.color(colors[tim_color - 1]) # 색 바꿔주기
coin = random.randint(0, 1) # 랜덤 이동지정
if coin == 0: # 0일때
tim.right(90) # 오른쪽으로 90도 돌고
elif coin == 1: # 1일때
tim.left(90) # 왼쪽으로 90도 돌고
tim.forward(50) # 앞으로 50 전진
num += 1 # num에 1 더해주기
screen.exitonclick()
강사님 코드
import turtle
from turtle import *
tim = Turtle()
screen = Screen()
colours = ["CornflowerBlue", "DarkOrchid", "IndianRed", "DeepSkyBlue", "LightSeaGreen",
"wheat", "SlateGray", "SeaGreen"]
direction = [0, 90, 180, 270]
tim.pensize(20) #터틀의 굵기 변경
for i in range(200):
tim.color(random.choice(colours))
tim.forward(30)
tim.setheading(random.choice(direction)) #setheading(각도)는 터틀을 각도만큼 회전시키게 함
screen.exitonclick()
터틀 속도 변경하기
(https://docs.python.org/3/library/turtle.html#turtle.speed)
- “fastest”: 0
- “fast”: 10
- “normal”: 6
- “slow”: 3
- “slowest”: 1
tim.speed('slow')
터틀 객체에 문구나 숫자를 넣어주면 된다.
완전 랜덤한 터틀 색 변경하기
import turtle
from turtle import *
import random
tim = Turtle()
turtle.colormode(255) #컬러모드에 255까지 들어갈 수 있게 담아준다.
# tim.shape("turtle")
# tim.color('red')
screen = Screen()
def random_color():
"""r, g, b 색 반환 함수"""
r = random.randint(0, 255)
g = random.randint(0, 255)
b = random.randint(0, 255)
return (r, g, b)
direction = [0, 90, 180, 270]
tim.speed(2)
tim.pensize(15)
for i in range(200):
tim.pencolor(random_color())
tim.forward(30)
tim.setheading(random.choice(direction)) #setheading(각도)는 터틀을 각도만큼 회전시키게 함
터틀로 원 그리기
처음 작성한 코드
import turtle
import turtle as t
tim = t.Turtle()
screen = t.Screen()
r = 50
angle = 0
num = 0
tim.speed(6)
while num < 100:
tim.circle(r)
tim.setheading(angle)
angle += 3.6
num += 1
screen.exitonclick()
강의 보면서 수정한 코드
import turtle
import turtle as t
import random
tim = t.Turtle() #터틀 객체 생성
t.colormode(255)
def random_color():
"""r, g, b 색 반환 함수"""
r = random.randint(0, 255)
g = random.randint(0, 255)
b = random.randint(0, 255)
return (r, g, b)
screen = t.Screen() #화면 생성
tim.speed('fastest') #터틀 속도: 가장 빠르게
def draw_the_circle(size_of_gap):
"""터틀이 원 그리는 함수"""
for i in range(int(360 / size_of_gap)): #360도를 함수에 넣은 숫자로 나눈 만큼 반복
tim.color(random_color()) #랜덤한 숫자 받아옴
tim.circle(100) #반지름은 100
tim.setheading(tim.heading() + size_of_gap) #for문이 돌아갈 때마다 터틀의 각도 변경해줌
# 함수 호출
draw_the_circle(5)
screen.exitonclick() #클릭하기 전까지 켜져 있게 함
터틀로 점 찍기 그림그리기
import random
import colorgram
from turtle import *
import turtle as t
# 컬러그램으로 색 추출하기
# colors = colorgram.extract('image.jpg', 30) #색들을 30가지 추출하고
# color_palette = [] #이를 담을 빈 리스트 만들어 놓는다.
#
# for color in colors: #FOR문을 돌려서
# r = color.rgb.r #RGB 각 값들을 뽑아
# g = color.rgb.g
# b = color.rgb.b
# new_color = (r, g, b) #튜플로 담는다.
# color_palette.append(new_color) #append한다.
#
# print(color_palette)
screen = t.Screen() # 스크린 객체 만들어 놓는다. 창이 꺼질 때까지 닫히지 않는다.
# 컬러그램에서 담은 rgb 값들을 콘솔창에서 복사해 와서 가져온다.
colors = [(250, 247, 244), (248, 245, 246), (213, 154, 96), (52, 107, 132), (179, 77, 31), (202, 142, 31),
(115, 155, 171), (124, 79, 99), (122, 175, 156), (229, 236, 239), (226, 198, 131), (242, 247, 244),
(192, 87, 108), (11, 50, 64), (55, 38, 19), (45, 168, 126), (47, 127, 123), (200, 121, 143),
(168, 21, 29), (228, 92, 77), (244, 162, 160), (38, 32, 35), (2, 25, 24), (78, 147, 171), (170, 23, 18),
(19, 79, 90), (101, 126, 158), (235, 166, 171), (177, 204, 185), (49, 62, 84)]
# 20 원 간격은 50
tim = t.Turtle() # 팀이라는 터틀 객체를 만든다.
tim.penup() # 팀의 그림자를 가지 않게 한다.
t.colormode(255) # 컬러모드 255색을 넣어준다.
tim.setheading(225) # 터틀 머리 방향을 255각도로 해서 좌하 방향으로 내려가도록 한다.
tim.forward(250) # 250만큼 움직이게 한다.
tim.setheading(0) # 다시 터틀 방향을 0도로 만든다.
number_of_dots = 100 # 100개의 점을 찍는다
for dot_count in range(1, number_of_dots + 1): # 100번 반복한다
tim.dot(20, random.choice(colors)) #터틀 객체의 색을 반복할 때마다 바꿔 준다.
tim.forward(50) #점을 찍고 50씩 나아간다.
if dot_count % 10 == 0: # 만약 10을 찍은 상태라면
tim.setheading(90) #90도 각도를 틀고
tim.forward(50) # 50만큼 전진
tim.setheading(180) # 다시 180도 돌고
tim.forward(500) # 온 만큼 돌아가서
tim.setheading(0) # 초기값으로 각도 0으로 만들어준다.
tim.hideturtle() #for문이 끝난 후에는 터틀 객체를 숨겨주고
screen.exitonclick() #화면이 꺼질 때까지 화면이 닫히지 않게 함
gui를 터틀로 먼저 접했으면 더 재밌었을까...
더 공부해 봐야겠다.
'개발공부 > Python' 카테고리의 다른 글
[Python] Selenium 모듈 설치 및 Chrome 드라이브 다운로드 (0) | 2023.06.05 |
---|---|
[Python] sqlite3 모듈 (0) | 2023.06.04 |
CSV 파일 파이썬에서 읽기, 쓰기, 추가하기 (0) | 2023.05.09 |
그림판 사용하여 이미지 크기 조정하기 (0) | 2023.05.04 |
[파이썬] time 함수 사용해서 간단한 디지털 시계 만들기 (0) | 2023.04.30 |