본문 바로가기
파이썬

파이썬 turtle 패키지로 그림그리기 코드 작성 (색상,반복)

by ㈜㎹Ω∞ 2022. 7. 21.
728x90

저번에는 수작업으로 졸라맨을 그려봤는데요. 이번에는 반복문을 이용해서 색상도 변경하고, 조금 더 간단하게 코드 작성해 보겠습니다.

 

  1. 삼각형, 사각형, 등의 꼭짓점이 있는 모양을 만들 때는 left 또는 right의 숫자를 360 나누기 꼭짓점 개수로 계산해서 입력합니다.
  2. 꼭짓점 없이 커지는 모양이 만들고 싶을 때는 생각한 도형의 각도에서 +1이나-1을 해주면 됩니다. 예를 들어) 삼각형의 점점 커지는 모양을 만들고 싶을 때는 119 또는 121을 입력합니다. (360/3-1)

 

색상변경

 

import turtle as t

t.Turtle()	### 객체생성
t.bgcolor("black")	### 배경색
t.speed(15)	### 속도

 

기본적으로 배경색과 속도, 정도만 입력했습니다.

 

### 1번모양
length=15	### 길이
t.color("white")	### 색상

for a in range(70):	### 70번반복	
    t.forward(length)	### 길이15
    t.left(119)	### 각도119
    length+=5	### 길이5씩증가

 

for문을 사용해서 100번을 반복하게 만듭니다. 삼각형으로 점점 커지는 모양이라 왼쪽으로 119도 회전하도록 했습니다. 또한 forward에는 length변수를 입력해서 길이는 15로 설정하고 한번 반복할 때마다 길이가 5씩 커지게끔 설정했습니다.

 

### 2번모양
count=0	### 횟수
length=15	### 길이

for a in range(100):	### 100번반복
    if count % 3 ==1:	### count가1이라면
        t.color("white")	### 하얀색
    elif count % 3 ==2:	### count가1이라면
        t.color("yellow")	### 노란색
    elif count % 3 ==0:	### count가1이라면
        t.color("red")	### 빨간색
    t.forward(length)	### 길이15 
    t.left(100)	### 각도100
    length+=5	### 길이5씩증가
    count+=1	### 횟수1씩증가

 

for문과 if문을 사용해서 펜 색상을 변경할 수 있습니다. 색상 변경하는 코드는 생각보다 쉽습니다. 색상을 몇 개 사용할지 정한 뒤 나머지를 구하는 %를 사용합니다.

 

  • count변수를 만듭니다.
  • for문을 사용해서 몇 번 반복할지 정합니다.
  • if문을 사용해서 count가 0,1,2중에 해당하는 값이 있다면 설정한 펜 색상이 그려지게 작성합니다.
  • 길이는 length변수를 사용하고, 마지막에 count+=1을 작성해서 코드가 한번 끝날 때마다 길이가 5씩 증가하고, count를 1씩 높입니다. 

 

### 3번모양
colors=["white","yellow","blue","red","green","orange"]	### 색상
count=0	### 횟수
length=15	### 길이

for a in range(70):	### 70번반복
    t.color(colors[count % 3])	### 색상반복
    t.forward(length)	### 길이15
    t.left(100)	### 각도100
    length+=5	### 길이5씩증가
    count+=1	### 횟수1씩증가

 

3번 모양은 2번 모양과 똑같은데 코드만 더 짧게 작성해봤습니다. if문보다 for문을 사용하면 코드가 더 짧아집니다. 일단 색상을 리스트로 만듭니다.

 

  • for문을 사용해서 몇 번 반복할지 정합니다.
  • 컬러 색상을 정하는데, 아까 만든 리스트를 사용해서 만듭니다. 색상은 리스트 안에 있는데 count 횟수에 따라 색상이 변합니다. (삼각형 모양이면 3 사각형 모양이면 4 이렇게 숫자는 변경 가능합니다.)
  • 길이와 각도를 정합니다.
  • lengrh+=5와 count+=1을 작성해서 한번 끝날 때마다 길이와 횟수 증가합니다.

 

 

### 4번모양
t.color("white")	### 색상
length=15	### 길이

for a in range (6):	### 6번반복
    for b in range(6):	### 6번반복
        for c in range(3):	### 3번반복
            t.forward(length)	### 길이15
            t.left(120)	### 각도120
        t.left(60)	### 각도60
    length+=10	### 길이10씩증가

 

for문에 for문을 사용해서 더욱 복잡한 모양을 만들어 보겠습니다. 4번 모양은 오각형의 거미줄 모양이 나옵니다.

 

  • 펜 색상과 길이는 정해줍니다.
  • for문 c부터 설명하자면 길이 15의 삼각형을 만드는 겁니다. c가 끝나면 for문 b로 갑니다.
  • for문 b는 c가 끝날 때마다 왼쪽으로 60도 회전합니다. 그 행위를 6번 반복합니다. b가 끝나면 for문 a로 갑니다.
  • for문 a는 b가 끝날 때마다 길이를 10씩 증가합니다. 그 행위를 6번 반복합니다.
  • c가 완료되면 b로, b가 완료되면 a로, 이 순서를 반복합니다.

 

### 5번모양
colors=["white","yellow","blue","red","green","orange"]	### 색상
length=15	### 길이
count=0	### 횟수

for a in range (6):	### 6번반복
    t.color(colors[count % len(colors)]) #1
    for b in range(6):
        for c in range(3):
            #1.색상
            t.forward(length)
            t.left(120)
            #2.횟수
        t.left(60)
    length+=10
    count+=1 #2

 

5번 모양은 4번 모양과 똑같은데 펜 색상만 다릅니다.

 

  • 펜 색상 리스트와 횟수 변수를 만듭니다.
  • 색상 코드를 작성해야 되는데 a, b, c 중에 어디에 작성하냐에 따라 그림색이 달라집니다. a에 코드 작성 시 b가 완료될 때마다 색상이 변하고, c에 코드 작성 시 선 한번 그을 때마다 색상이 변합니다.
  • t.color(colors[count % len(colors)]) 해석하자면 count횟수로 colors길이를 나누었을 때 나머지 값을 colors리스트에 있는 값과 맞는 색상을 선택한다는 뜻입니다.
  • 물론 t.color(colors[count % len(colors)]) 말고 t.color(colors[count % 6]) 처럼 숫자로 작성해도 됩니다.

 

728x90

댓글