코드 상세
파이썬이 스파이더맨을 그리는 원리는 터틀 라이브러리를 이용해 몸의 다른 부위를 그리는 것이다
1 가져오기
먼저 본문에서 로드해야 하는 라이브러리를 가져오고, 일부 라이브러리가 설치되지 않아 실행 코드가 잘못되면 아나콘다 프롬프트에서 pip 방법으로 설치할 수 있습니다
# -*- coding: UTF-8 -*-
'''
import os
import pygame
import turtle as t
이 논문은 os, pygame 및 turtle의 세 가지 라이브러리만 사용하여 더 적은 라이브러리를 적용합니다.
os 라이브러리는 파일을 읽을 위치를 설정할 수 있습니다.
pygame 라이브러리는 그리기 과정을 더 재미있게 하기 위해 그리기 과정에 배경음악을 추가했습니다.
터틀 라이브러리는 그림 라이브러리로, 캔버스에 수학적 논리 제어 코드로 그림을 완성할 수 있는 브러시를 주는 것과 같습니다.
2 음악 재생
이어서 pygame 라이브러리를 사용하여 배경음악을 재생합니다
os.chdir(r'F:
#음악을 틀다
print('음악 재생')
pygame.mixer.init( )
pygame.mixer.music.load("Cope - Sunflower (Original Version).mp3")
pygame.mixer.music.set_volume(0.5)
pygame.mixer.music.play(1, 10)
3 스파이더맨 상반신을 그리는 함수 정의
그런 다음 그림판의 크기를 설정하고 스파이더맨의 상반신을 그리는 함수를 정의합니다
t.title
t.speed(10)
#t.screensize(1000, 800)
t.setup(startx=0, starty=0, width=800, height=600)
def up_body():
#화두
t.penup( )
t.goto(60, 200)
t.pendown( )
t.pensize(1)
t.color('black', 'red')
t.begin_fill( )
t.setheading(60)
t.circle(60, 30)
t.left(4)
t.circle(40, 173)
t.left(4)
t.circle(60, 30)
#목을 그리다
t.setheading(260)
t.circle(30, 29)
#어깨 그리기
t.setheading(220)
t.forward(30)
#손의 근육을 그리다
t.setheading(150)
t.circle(30, 130)
#가슴 안쪽 라인을 그리다
t.setheading(30)
t.circle(-100, 13)
t.setheading(270)
t.circle(50, 40)
t.setheading(255)
t.circle(55, 40)
t.circle(-40, 50)
#허리의 바깥쪽 가로선을 그리다
t.setheading(0)
t.forward(-7)
t.setheading(270)
t.forward(18)
#허리선을 긋다
t.setheading(-30)
t.forward(50)
t.setheading(15)
t.forward(80)
t.setheading(90)
t.forward(22)
#중복되는 곳
#옷의 안쪽 윤곽을 그리다
t.setheading(190)
t.forward(20)
t.setheading(103)
t.circle(-160, 41)
#손안의 윤곽을 그리다
t.setheading(5)
t.circle(-80, 30)
t.setheading(20)
t.circle(30, 30)
#중복되는 곳
#팔 근육
t.setheading(70)
t.circle(22, 150)
t.setheading(150)
t.forward(30)
t.setheading(120)
t.forward(15)
t.end_fill( )
titaiteul tiseupideusip
키코드 상세:
t.pensize(width): 브러시의 크기를 설정합니다.
t.color(color): 브러시의 색상을 설정합니다.
t.penup(): 브러시를 들어 올립니다. 일반적으로 다른 곳에서 그림을 그리는 데 사용됩니다.
t.goto(x,y)는 브러시가 특정 위치로 이동하고 매개변수는 (x,y)이며, 이는 오는 가로 및 세로 좌표에 해당합니다.
t.pendown(): 브러시를 내려놓고 일반적으로 penup과 조합하여 사용한다.
t.left(degree) : 붓을 왼쪽으로 몇 도 돌리고 괄호 안에 도수를 나타낸다.
t.right(degree) : 붓을 오른쪽으로 몇 도 돌리면 괄호 안에 도수를 나타낸다.
t.circle(radius, extent, steps): radius는 반지름을 말하며 양수이면 반지름이 작은 거북이의 왼쪽 radius에서 멀고 음수이면 반지름이 작은 거북이의 오른쪽 radius에서 멀고 extent는 호를 가리키며 steps는 차수를 나타냅니다.
외곽선의 핵심은 서클 함수의 반지름과 호를 조절해 곡선의 호를 조절함으로써 스파이더맨의 윤곽을 매끄럽게 만드는 것이다.
4 왼손과 오른손을 그리는 함수 정의
이어서 왼손과 오른손을 그리는 함수를 정의한다
defleft_hand():
#왼팔을 그리다
#가슴 안쪽 라인을 그리다
t.penup( )
t.goto(-69, 134)
t.color('black', 'blue')
t.pendown( )
t.begin_fill( )
t.setheading(30)
t.circle(-100, 13)
t.setheading(270)
t.circle(50, 40)
t.setheading(255)
t.circle(55, 40)
t.circle(-40, 50)
#허리의 바깥쪽 가로선을 그리다
t.setheading(0)
t.forward(-8)
t.setheading(90)
t.circle(220, 18)
t.setheading(-90)
t.circle(-40, 50)
t.setheading(-85)
t.circle(-50, 50)
t.setheading(135)
t.circle(30, 40)
t.setheading(95)
t.circle(-50, 50)
t.setheading(98)
t.circle(-60,51)
t.end_fill( )
def right_hand():
#오른팔을 그리다
#옷의 안쪽 윤곽을 그리다
t.penup( )
t.goto(80, 39)
t.color('black', 'blue')
t.pendown( )
t.begin_fill( )
t.setheading(190)
t.forward(20)
t.setheading(103)
t.circle(-160, 41)
#손안의 윤곽을 그리다
t.setheading(5)
t.circle(-80, 30)
t.setheading(20)
t.circle(30, 30)
t.setheading(-20)
t.circle(-55,65)
t.setheading(-30)
t.circle(-50, 60)
t.setheading(180)
t.circle(30, 40)
t.setheading(154)
t.circle(-48, 60)
t.setheading(164)
t.circle(-50, 60)
t.setheading(-90)
t.circle(-40, 60)
t.left(40)
t.circle(150, 23)
t.end_fill( )
defleft_wrist():
#왼손목을 그리다
t.penup( )
t.goto(-81, 37)
t.color('black', 'red')
t.pendown( )
t.begin_fill( )
t.setheading(135)
t.circle(30, 40)
t.setheading(-90)
t.circle(-60, 30)
t.setheading(-90)
t.forward(20)
t.setheading(-45)
t.forward(12)
t.circle(6,180)
t.setheading(-50)
t.circle(5,160)
t.setheading(95)
t.forward(10)
t.setheading(135)
t.forward(8)
t.setheading(95)
t.forward(6)
t.setheading(35)
t.circle(30, 10)
t.left(10)
t.circle(30, 27)
t.end_fill( )
#손목선 그리기
#가로선
#첫 번째 가로선
t.penup( )
t.gooto(-84, 30)
t.color('black')
t.pendown( )
t.setheading(145)
t.circle(30, 36)
#두 번째 가로선
t.penup( )
t.gooto(-90, 22)
t.color('black')
t.pendown( )
t.setheading(185)
t.circle(-30, 31)
#세 번째 가로선
t.penup( )
t.goto(-83, 10)
t.color('black')
t.pendown( )
t.setheading(210)
t.circle(-50, 31)
#네 번째 가로선
t.penup( )
t.goto(-102,-10)
t.color('black')
t.pendown( )
t.setheading(50)
t.circle(-20, 41)
t.setheading(55)
t.circle(-90,8)
#첫 번째 세로줄
t.penup( )
t.goto(-105, 24)
t.color('black')
t.pendown( )
t.setheading(-95)
t.circle(100, 20)
#두 번째 세로줄
t.penup( )
t.goto(-87, 42)
t.color('black')
t.pendown( )
t.setheading(-110)
t.forward(22)
t.setheading(-63)
t.circle(-50, 40)
def right_wrist():
#오른손목을 그리다
t.penup( )
t.goto(189, 57)
t.color('black', 'red')
t.pendown( )
t.begin_fill( )
t.setheading(180)
t.circle(30, 40)
t.setheading(-55)
t.circle(-100, 10)
t.circle(-20, 70)
t.setheading(-90)
t.forward(10)
t.setheading(-0)
t.forward(5)
t.setheading(-85)
t.forward(8)
t.setheading(-20)
t.circle(8, 60)
t.setheading(-35)
t.circle(8, 70)
t.setheading(-15)
t.circle(6, 70)
t.setheading(60)
t.circle(20, 80)
t.setheading(115)
t.circle(-100, 20)
t.end_fill( )
#첫 번째 가로선을 긋다
t.goto(191, 45)
t.color('black')
t.pendown( )
t.setheading(215)
t.circle(-30, 34)
#두 번째 가로선을 긋다
t.penup( )
t.goto(197, 29)
t.color('black')
t.pendown( )
t.setheading(215)
t.circle(-30, 37)
#세 번째 가로선을 긋다
t.penup( )
t.goto(174, 11)
t.color('black')
t.pendown( )
t.setheading(-0)
t.circle(-30, 27)
t.setheading(20)
t.circle(-20, 27)
t.setheading(40)
t.circle(-30, 23)
#첫 번째 세로선을 긋다
t.penup( )
t.goto(178,55)
t.color('black')
t.pendown( )
t.setheading(-70)
t.circle(-200, 9)
t.setheading(-82)
t.circle(-100, 18)
#두 번째 세로선을 긋다
t.penup( )
t.goto(185,55)
t.color('black')
t.pendown( )
t.setheading(-70)
t.circle(-200, 8)
t.setheading(-68)
t.circle(-80, 25)
5 거미를 그리는 함수 정의
이어 거미를 그리는 함수를 정의한다
def spider():
#거미를 그리다
t.penup( )
t.goto(8, 146)
t.color('black')
t.pendown( )
t.begin_fill( )
t.setheading(-120)
t.circle(40, 60)
t.setheading(60)
t.circle(40,60)
t.end_fill( )
#거미의 발을 그리다
#오른쪽 발1
t.penup( )
t.goto(13, 129)
t.color('black')
t.pendown( )
t.setheading(30)
t.forward(10)
t.setheading(90)
t.forward(15)
#오른쪽 발2
t.penup( )
t.goto(14, 125)
t.color('black')
t.pendown( )
t.setheading(30)
t.forward(16)
t.setheading(90)
t.forward(17)
#오른쪽 발 3
t.penup( )
t.goto(14, 124)
t.color('black')
t.pendown( )
t.setheading(-20)
t.forward(16)
t.setheading(-90)
t.forward(17)
#오른쪽 발 4
t.penup( )
t.goto(14, 120)
t.color('black')
t.pendown( )
t.setheading(-20)
t.forward(10)
t.setheading(-90)
t.forward(15)
#거미의 발을 그리다
#왼쪽 발 1
t.penup( )
t.goto(3, 129)
t.color('black')
t.pendown( )
t.setheading(150)
t.forward(10)
t.setheading(90)
t.forward(15)
#오른쪽 발2
t.penup( )
t.goto(2,125)
t.color('black')
t.pendown( )
t.setheading(150)
t.forward(16)
t.setheading(90)
t.forward(17)
#오른쪽 발 3
t.penup( )
t.goto(2, 124)
t.color('black')
t.pendown( )
t.setheading(-170)
t.forward(16)
t.setheading(-99)
t.forward(17)
#오른쪽 발 4
t.penup( )
t.goto(3, 120)
t.color('black')
t.pendown( )
t.setheading(-170)
t.forward(10)
t.setheading(-90)
t.forward(15)
6 함수를 호출하여 그림 그리기
마지막으로 함수를 호출하여 도형을 그립니다
print('상체 바깥쪽 윤곽 그리기')
up_body()
print('오른손 그리기')
right_hand( )
print('왼손 그리기')
left_hand( )
print('왼쪽 주먹 그리기')
left_wrist( )
print('오른주먹 그리기')
right_wrist( )
print('거미 그리기')
스파이더( )
'개발 꿀팁 > PYTHON' 카테고리의 다른 글
[파이썬은 오리를 그릴 수 있다] (1) | 2022.11.21 |
---|---|
[파이썬 럭키풀 그리기] 만나는 사람마다 행운 O(__))O 만나는 사람마다 행운 (0) | 2022.11.21 |
파이썬, 햄스터 그리기 (1) | 2022.11.21 |
Python으로 피카츄 그리기 (10) | 2022.11.21 |
파이썬, 520 고백코드 그리기-영원한 설렘 (1) | 2022.11.21 |