반응형
일 년에 한 번 있는 크리스마스가 왔네요, 올해 크리스마스는 어떻게 보낼 계획입니까?누구와 함께 보내든, 내가 파이썬으로 여러분을 위해 준비한 크리스마스 선물부터 만나보세요!
1, 로딩 라이브러리
본문의 크리스마스 선물을 실현하려면 먼저 파이썬에 아래 라이브러리를 로드해야 합니다
import pygame
import random
import os
from turtle import *
from pygame.locals import *
import tkinter as tk
from PIL import Image
from tkinter import filedialog
2.배경사진과 음악 선택
아래와 같은 코드에 따라 원하는 배경 이미지와 음악을 커스터마이징 할 수 있다
root = tk.Tk( )
root.withdraw( )
Folderpath = filedialog.askdirectory (title = '그림 저장할 폴더를 선택하십시오') # 선택한 폴더 가져오기
bgpath = filedialog.askopenfilename (title = '배경 그림을 선택하십시오')
mucpath = filedialog.askopenfilename (title = '음악을 선택하십시오')
os.chdir(Folderpath)
위의 코드를 실행하면 컴퓨터 바탕화면 팝업창에 파일을 저장할 폴더, 배경 사진, 음악을 차례로 선택하라는 메시지가 나타납니다.
3. 동적 효과 설정 및 음악 재생
이어서 다음과 같은 코드로 동적 효과를 제어하고 음악을 재생한다
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("즐거운 크리스마스")
ori_bg = Image.open(bgpath)
new_bg = ori_bg.resize(790,430))
new_bg.save(Folderpath + '/new_bg.gif')
bg = pygame.image.load(Folderpath + '/new_bg.gif')
snow_list = [] #눈송이 목록
fori 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 (mucpath) # 음악 파일 로드
pygame.mixer.music.play () # 음악 스트리밍 시작
pygame.mixer.music.fadeout(600000) #음악이 얼마나 오랫동안 희미하게 끝날지 설정
play_image = pygame.image.load (bgpath).convert_alpha( ) # 재생 그림 만들기surface 개체
pause_image = pygame.image.load (bgpath).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 # 재생 플래그 비트 정의
while True:
# 큐 이벤트 찾기
for event in pygame.event.get():
# 창 닫기 이벤트 찾기
if event.type == pygame.QUIT:
sys.exit( )
# 마우스 오른쪽 클릭 이벤트 찾기
if event.type == MOUSEBUTTONDOWN:
# 마우스 왼쪽 단추를 눌렀는지 확인합니다
if event.button == 1:
pause = not pause
# 마우스 오른쪽 단추를 눌렀는지 확인합니다
if event.button == 3:
pause = not pause
# 키가 눌렸는지 감지하기
if event.type == KEYDOWN:
# 스페이스 키 눌림 감지하기
if event.key == K_SPACE:
pause = not pause
# 인터페이스 배경 채우기
screen.fill(bg_rgb)
# 공백으로 재생과 일시 중단을 제어하고 적절한 그림을 표시합니다
if pause:
pygame.mixer.music.pause( )
screen.blit(pause_image, pause_rect)
else:
pygame.mixer.music.unpause( )
screen.blit(play_image, pause_rect)
screen1.blit(bg, (0, 0)) #사진 배경
j = 0
for i in range(len(snow_list):
j + = 1
if j<10:
pygame.draw.circle(screen1, (255, 255, 255), snow_list[i][:2], snow_list[i][3]-3)
elif j<20:
pygame.draw.circle(screen1, (random.randint(200, 255), random.randint(200, 255), random.randint(200, 255)), snow_list[i][:2], snow_list[i][3]-3]
elif j<30:
pygame.draw.circle(screen1, (random.randint(100, 200), random.randint(100, 200), random.randint(100, 200), snow_list[i][:2], snow_list[i][3]-3]
elif j<40:
pygame.draw.circle(screen1, (random.randint(0, 100), random.randint(0, 100), random.randint(0, 100), snow_list[i][:2], snow_list[i][3]-3]
else:
pygame.draw.circle(screen1, (random.randint(0, 255), random.randint(0, 255), random.randint(0, 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( ) #종료
반응형
'개발 꿀팁 > PYTHON' 카테고리의 다른 글
가장 완전한 파이썬 작업 엑셀 (0) | 2022.11.22 |
---|---|
【Pytho상용 함수] (0) | 2022.11.22 |
[python] 설날 불꽃쇼 (0) | 2022.11.21 |
python등롱을 그리다 (0) | 2022.11.21 |
[파이썬은 오리를 그릴 수 있다] (1) | 2022.11.21 |