하늘에 가득한 눈꽃, 세상 끝까지 걷는 것은 줄곧 내가 생각하는 매우 낭만적인 그림이다.연구 끝에 파이썬(Python)으로 실현되었습니다!배경그림과 음악이 들어간 눈 내리는 그림을 함께 보자
만천설화 실현 원리
하늘 가득한 눈꽃 하늘 끝까지 걷는 코드 구현은 다음 세 단계로 나뉩니다.
step1: 내리는 눈송이를 그려서 떨어지는 속도와 오프셋을 조절한다.
step2:눈이 내리는 배경사진을 추가한다.
step3: 배경음악을 재생하고 일시정지 및 재시작 버튼을 제어합니다.
다음으로 구체적인 구현 코드를 보겠습니다.
3. 온 하늘에 흩날리는 눈송이는 단계별 해설을 실현한다.
1 로드백
먼저 눈송이를 그리는 데 필요한 가방을 잘 로드합니다
# -*- coding: utf-8 -*-
"""
import pygame
import random
import os
from turtle import *
from pygame.locals import *
2 창 크기 설정
전체 화면 디스플레이 창을 설정할 수도 있고 배경 이미지에 따라 창 크기를 사용자 정의할 수도 있습니다
os.chdir(r'F:\위챗 공식계정\Python\42_python 눈내림')
pygame.init( ) #pygame 초기화
SIZE = (790, 430) #화면 가로세로 설정, 배경화면에 맞게 조정(또는 이미지 조정)
bg_size = width, height = 300, 200 # 인터페이스 창 시작 및 닫기 설정
bg_rgb = (255, 255, 255)
screen = pygame.display.set_mode(bg_size)
screen = pygame.display.set_mode(SIZE)
screen1 = pygame.display.set_mode(SIZE)
pygame.display.set_caption("하늘의 눈꽃, 세상을 걷다")
본문에는 배경음악이 추가되어 배경사진을 클릭하면 음악을 일시 정지하고 다시 클릭하면 재생이 가능합니다.
3 눈송이의 하강 속도 조절 및 배경 이미지 추가
자신의 기호에 따라 배경 이미지를 변경할 수 있다
bg = pygame.image.load('두 사람이 눈 속을 걷는 V3.jpg')
snow_list = [] #눈송이 목록
for i in range(300):
x_site = random.randrange(0, SIZE[0]) #눈꽃의 중심 위치
y_site = random.randrange(0, SIZE[1]) #눈꽃의 중심 위치
X_shift = random.randint(-1, 1) #x축 오프셋
radius = random.randint(4, 6) #반경과 y주위 강하량
snow_list.append([x_site, y_site, X_shift, radius])
clock = pygame.time.Clock () # 프레임 레이트 객체 생성
track = pygame.mixer.music.load ('아름다운 시간.mp3') # 음악 파일 불러오기
pygame.mixer.music.play () # 음악 스트리밍 시작
pygame.mixer.music.fadeout(600000) #음악이 얼마나 오랫동안 희미하게 끝날지 설정
play_image = pygame.image.load("두 사람이 눈을 걷는 V3.jpg").convert_alpha( ) # 그림 재생 surface 개체 만들기
pause_image = pygame.image.load("두 사람이 V3.jpg").convert_alpha( ) # 일시 중지된 그림 surface 개체 만들기
pause_rect = pause_image.get_rect( ) # 재생 직사각형 상자 가져오기
print(pause_rect.width,pause_rect.height) # 일시정지 직사각형 상자 가져오기
pause_rect.left, pause_rect.top = (width - pause_rect.width) // 2, (height - pause_rect.height) // 2
pause = False # 재생 플래그 비트 정의
부분 매개 변수 해석:
bg:첨부된 배경 이미지를 당신이 좋아하는 배경으로 바꿀 수 있습니다.
snow_list는 눈송이의 위치, 반경, 오프셋 거리 및 하강 거리를 저장합니다.
track: 배경음악을 추가하여 당신이 좋아하는 음악으로 대체 할 수 있습니다.
pause_image: 일시정지 버튼에 사용된 그림, 본문에서 직접 사용한 배경 그림.
4 순환을 통한 동적 눈내림
눈송이의 위치를 업데이트하여 동적으로 눈이 내리는 효과를 실현합니다
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
screen1.blit(bg, (0, 0)) #사진 배경
for i in range(len(snow_list)):
pygame.draw.circle(screen1, (255, 255, 255), snow_list[i][:2], snow_list[i][3]-3)
snow_list[i][0] += snow_list[i][2]
snow_list[i][1] += snow_list[i][3]
if snow_list[i][1] > SIZE[1]: #눈송이의 위치가 화면을 넘어갔는지 여부를 판단한다. 예, 위치 재설정
snow_list[i][0] = random.randrange(0, SIZE[0])
snow_list[i][1] = random.randrange(0, SIZE[1])
pygame.display.flip( ) # 화면 새로 고침
clock.tick(20)
pygame.quit( ) #종료
부분 매개 변수 해석:
pygame.draw.circle: 각각 (Surface, color, pos, radius, width=0)
Surface: 객체를 나타내며 윈도우 화면을 나타냅니다.
color: 원의 색깔.
pos: 중심 위치.
radius: 원의 반지름.
width: 테두리의 너비입니다. 0으로 설정하면 도면이 채워집니다
'개발 꿀팁 > PYTHON' 카테고리의 다른 글
파이썬 유도식 (0) | 2022.11.23 |
---|---|
로지스틱 회귀 3부작 - 로지스틱 회귀(logistics regression) 원리 - 로지스틱 회귀를 완전히 읽을 수 있게 해준다 (0) | 2022.11.23 |
파이썬 데이터 분석 - 데이터 업데이트 (0) | 2022.11.23 |
파이썬 데이터 분석-애플리케이션 함수 (0) | 2022.11.23 |
파이썬 데이터 분석 - 데이터 정렬 (0) | 2022.11.23 |