python 开发按键钢琴

废话不多说,直接上代码,
PianoGame.py

import pygame
import sys
from pygame.locals import *
import sound #加载音频文件
import cv2

"""
pygame.init()
pygame.mixer.init()

six = pygame.mixer.Sound("A 6.wav")
six.set_volume(0.5)

sixlow = pygame.mixer.Sound("A b6.wav")
sixlow.set_volume(0.5)

seven = pygame.mixer.Sound("B 7.wav")
seven.set_volume(0.5)

sevenlow = pygame.mixer.Sound("B b7.wav")
sevenlow.set_volume(0.5)

onehigh = pygame.mixer.Sound("C 1#.wav")
onehigh.set_volume(0.5)

one = pygame.mixer.Sound("C 1(C).wav")
one.set_volume(0.5)

twohigh = pygame.mixer.Sound("D 2#.wav")
twohigh.set_volume(0.5)

two = pygame.mixer.Sound("D 2.wav")
two.set_volume(0.5)

threehigh = pygame.mixer.Sound("E 3#.wav")
threehigh.set_volume(0.5)

three = pygame.mixer.Sound("E 3.wav")
three.set_volume(0.5)

four = pygame.mixer.Sound("F 4.wav")
four.set_volume(0.5)

five = pygame.mixer.Sound("G 5.wav")
five.set_volume(0.5)

fivelow = pygame.mixer.Sound("G b5.wav")
fivelow.set_volume(0.5)
"""
image = pygame.image.load("piano.png")
image_rect = image.get_rect()

img = cv2.imread('piano.png')
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
SIZE = (width, height)

screen = pygame.display.set_mode((SIZE))
pygame.display.set_caption("Piano Game")

note = pygame.image.load("the crotchets.png")
note_rect = note.get_rect()
quaver = pygame.image.load("quaver.png")
quaver_rect = note.get_rect()



clock = pygame.time.Clock()

while True:
    for event in pygame.event.get():
        screen.blit(image,image_rect)
        pygame.display.flip()
    if event.type == QUIT:
        pygame.quit()
        sys.exit()

    if event.type == KEYDOWN:
        if event.key == K_BACKQUOTE:
            sound.fivelow.play()
            quaver_rect.left,quaver_rect.top = 5,(image_rect.height - quaver_rect.height-30)
            screen.blit(quaver,quaver_rect)
            pygame.display.flip()

        if event.key == K_1:
            sound.sixlow.play()
            note_rect.left,note_rect.top = 90,(image_rect.height - note_rect.height)
            screen.blit(note,note_rect)
            pygame.display.flip()
            
        if event.key == K_2:
            sound.sevenlow.play()
            quaver_rect.left,quaver_rect.top = 165,(image_rect.height - quaver_rect.height-15)
            screen.blit(quaver,quaver_rect)
            pygame.display.flip()
        
        if event.key == K_3:
            sound.one.play()
            note_rect.left,note_rect.top = 250,(image_rect.height - note_rect.height)
            screen.blit(note,note_rect)
            pygame.display.flip()

        if event.key == K_4:
            sound.two.play()
            quaver_rect.left,quaver_rect.top = 325,(image_rect.height - quaver_rect.height)
            screen.blit(quaver,quaver_rect)
            pygame.display.flip()

        if event.key == K_5:
            sound.three.play()
            note_rect.left,note_rect.top = 415,(image_rect.height - note_rect.height)
            screen.blit(note,note_rect)
            pygame.display.flip()

        if event.key == K_6:
            sound.four.play()
            quaver_rect.left,quaver_rect.top = 485,(image_rect.height - quaver_rect.height-30)
            screen.blit(quaver,quaver_rect)
            pygame.display.flip()

        if event.key == K_7:
            sound.five.play()
            note_rect.left,note_rect.top = 575,(image_rect.height - note_rect.height)
            screen.blit(note,note_rect)
            pygame.display.flip()

        if event.key == K_8:
            sound.six.play()
            quaver_rect.left,quaver_rect.top = 650,(image_rect.height - quaver_rect.height-15)
            screen.blit(quaver,quaver_rect)
            pygame.display.flip()

        if event.key == K_9:
            sound.seven.play()
            note_rect.left,note_rect.top = 735,(image_rect.height - note_rect.height)
            screen.blit(note,note_rect)
            pygame.display.flip()

        if event.key == K_0:
            sound.onehigh.play()
            quaver_rect.left,quaver_rect.top = 815,(image_rect.height - quaver_rect.height)
            screen.blit(quaver,quaver_rect)
            pygame.display.flip()

        if event.key == K_MINUS:
            sound.twohigh.play()
            note_rect.left,note_rect.top = 900,(image_rect.height - note_rect.height)
            screen.blit(note,note_rect)
            pygame.display.flip()

        if event.key == K_EQUALS:
            sound.threehigh.play()
            quaver_rect.left,quaver_rect.top = 975,(image_rect.height - quaver_rect.height-30)
            screen.blit(quaver,quaver_rect)
            pygame.display.flip()
            
    
    clock.tick(30)

sound.py

import pygame

pygame.init()
pygame.mixer.init()

six = pygame.mixer.Sound("A 6.wav")
six.set_volume(0.5)

sixlow = pygame.mixer.Sound("A b6.wav")
sixlow.set_volume(0.5)

seven = pygame.mixer.Sound("B 7.wav")
seven.set_volume(0.5)

sevenlow = pygame.mixer.Sound("B b7.wav")
sevenlow.set_volume(0.5)

onehigh = pygame.mixer.Sound("C 1#.wav")
onehigh.set_volume(0.5)

one = pygame.mixer.Sound("C 1(C).wav")
one.set_volume(0.5)

twohigh = pygame.mixer.Sound("D 2#.wav")
twohigh.set_volume(0.5)

two = pygame.mixer.Sound("D 2.wav")
two.set_volume(0.5)

threehigh = pygame.mixer.Sound("E 3#.wav")
threehigh.set_volume(0.5)

three = pygame.mixer.Sound("E 3.wav")
three.set_volume(0.5)

four = pygame.mixer.Sound("F 4.wav")
four.set_volume(0.5)

five = pygame.mixer.Sound("G 5.wav")
five.set_volume(0.5)

fivelow = pygame.mixer.Sound("G b5.wav")
fivelow.set_volume(0.5)

效果图:

点击键盘上“~ 1 2 3 4 5 6 7 8 9 0 - +”十三个键会发出对应的音效
源代码及资源文件见:https://download.csdn.net/download/qq_28414893/10898495

猜你喜欢

转载自blog.csdn.net/qq_28414893/article/details/85883998