개발 꿀팁/PYTHON

파이썬 그림 함수

Jammie 2023. 1. 11. 11:12
반응형

파이썬 그림 함수
1.터틀 모듈을 사용합니다

import turtle

2. 브러시 상태 함수입니다

turtle.penup () # 브러시를 들어 올리면 이동 후 도형이 그려지지 않습니다.
turtle.pendown() #붓을 내려놓고 이동 후 도형을 그리며 penup()과 함께 사용합니다.
turtle.pensize(width) # 브러시 선의 굵기를 설정합니다. () 숫자를 채우면 숫자가 클수록 붓이 굵어집니다.
turtle.speed() # 브러시의 속도를 0에서 10 사이로 설정합니다.
turtle.pencolor () # 펜의 색을 설정합니다.
turtle.color( ) # 펜의 색상과 채우기 색상을 설정합니다
turtle.begin_fill( ) # 도면을 채우기 전에 이 함수를 호출합니다.
turtle.end_fill( ) #도면을 채웁니다.
turtle.filling () # 채우기 상태를 반환합니다. True는 채우기, False는 채우기입니다.
turtle.hideturtle () # 브러시를 숨깁니다.
turtle.showturtle() #브러쉬를 보여줍니다.
turtle.isvisible () # 브러시가 보이는지 확인하고, 보이면 True로 돌아갑니다

3.창 함수입니다

turtle.setup(width,height,startx,starty)
"""
wideth: 창 너비입니다.만약 정수가 되면 픽처의 값을 나타내고, 소수는 창폭과 화면의 비율을 나타냅니다
height : 창 높이입니다.만약 정수가 되면 픽처의 값을 나타내고, 소수는 창폭과 화면의 비율을 나타냅니다
startx: 창 왼쪽과 화면 왼쪽의 픽셀 거리입니다.값은 None이고 폼은 화면 수평 중앙에 있습니다
starty: 창 오른쪽과 화면 오른쪽의 픽셀 거리입니다.값은 None이고 창은 화면 수평 중앙에 있습니다
"""
turtle.screensize( ) # 창의 높이, 너비, 배경색을 설정합니다
turtle.clear( ) # 브러시의 상태를 변경하지 않고 현재 창을 비웁니다.
turtle.reset( ) # 현재 창을 비우고 위치 등을 기본값으로 재설정합니다

4. 브러시 운동 함수입니다

turtle.forword () # 현재 방향으로 움직입니다 () 픽셀 거리
turtle.backword () # 현재 반대 방향으로 움직입니다 () 픽셀 거리
turtle.right (angle) # 오른쪽으로 angle 각도 돌립니다
turtle.left(angle) # 왼쪽으로 angle 각도 돌립니다
turtle.setheading(angle) #현재 angle로 향하는 방향을 설정합니다
turtle.goto(x,y) #좌표로 이동합니다. (x,y)
turtle.setx(x) # 브러시의 가로 좌표를 x로 수정하고 세로 좌표는 변경하지 않습니다.
turtle.sety(y) # 브러시의 세로 좌표를 y로 수정하고 가로 좌표는 변경하지 않습니다.
turtle.home() # 브러시 위치를 원점으로 하고 방향을 동쪽으로 합니다.
turtle.circle(r,extent=None, step=None) #반경 r, 각도 e의 원 또는 호를 그립니다. steps는 원의 내접 다각형, 변의 수는 steps입니다.
turtle.undo () # 브러시의 마지막 단계를 취소합니다.
turtle.dot(radius, e) #반경이 r이고 색이 e인 점을 그립니다.
turtle.done () # 그림을 끝냅니다

5.터틀 라이브러리의 연습입니다.
예1: 하나의 for 사이클로, 보기 좋은 도형을 만듭니다

import turtle
turtle.speed(0)
turtle.color("red")
for i in range(260):
    turtle.forward(i)
    turtle.right(160)
turtle.done()

예 2: 터틀 프로그램을 사용하여 중앙 위치에서 시작하여 가장자리의 특정 지점에서 멈추는 방식으로 각자 자유롭게 걷는 것을 모방합니다

#체크요
import turtle
import random
turtle.speed(0)
row=8 #줄입니다
col=8 #열입니다
cell=40
uplimit=(row//2)*cell #상한입니다
downlimit=-(row//2)*cell #하한입니다
leftlimit=-(col//2)*cell #좌한계입니다
rightlimit=(col//2)*cell #오른쪽한계입니다
turtle.penup()
turtle.goto(leftlimit,uplimit)
turtle.pendown()
"""
#방법1소격법입니다
for i in range(1,9):
for j in range(1,9):
for k in range(1,5):
turtle.forward(cell)
turtle.right(90)
turtle.forward(cell)
turtle.penup()
turtle.goto(leftlimit,uplimit-i*cell)
turtle.pendown()
#turtle.done()
"""
# 방법2 가로세로선법입니다
for i in range(1,row+2):
turtle.forward(col*cell)
turtle.penup()
turtle.goto(leftlimit,uplimit-i*cell)
turtle.pendown()
turtle.up()
turtle.goto(leftlimit,uplimit)
turtle.pendown()
turtle.right(90)
for j in range(1,col+2):
turtle.forward(row*cell)
turtle.penup()
turtle.goto(leftlimit+j*cell,uplimit)
turtle.pendown()

turtle.penup()
turtle.goto(0,0)
turtle.pendown()
turtle.pensize(5)
x=0
y=0
while x!=leftlimit and y!=uplimit and y!=downlimit and x!=rightlimit:
direction=random.randint(0,3) #0동 1북 2서 3남입니다.
if direction==0:
x+=cell
if direction==1:
y+=cell
if direction==2:
x-=cell
if direction==3:
y-=cell
turtle.setheading(direction*90)
turtle.forward(cell)
print(x,y)
turtle.done()
turtle.hideturtle()

예3:write 함수를 사용하지 않고 lay를 켭니다

import turtle
#알파벳L입니다
turtle.penup()
turtle.goto(-200,150)
turtle.pendown()
turtle.pensize(10)
turtle.pencolor("yellow")
turtle.goto(-220,-100)
turtle.right(90)
turtle.circle(50,150)
# 알파벳 a입니다.
turtle.penup()
turtle.goto(-50,20)
turtle.pendown()
turtle.pencolor("red")
turtle.left(70)
turtle.circle(55,280)
turtle.penup()
turtle.goto(-50,20)
turtle.pendown()
turtle.right(170)
turtle.circle(70,90)
# 알파벳 y입니다.
turtle.penup()
turtle.goto(20,150)
turtle.pendown()
turtle.pencolor("blue")
turtle.goto(10,70)
turtle.right(50)
turtle.circle(50,60)
turtle.penup()
turtle.goto(100,150)
turtle.pendown()
turtle.goto(80,-130)
turtle.left(90)
turtle.circle(60,-100)
turtle.right(30)
turtle.circle(30,-60)
turtle.goto(150,0)
turtle.penup()
turtle.goto(45,30)
turtle.pendown()
turtle.left(130)
turtle.circle(50,70)
turtle.hideturtle()
turtle.done()

 

반응형