-3

我正在用 pygame 制作一个钢琴代码程序。我已经制作了钢琴功能,但我想添加更多功能。当我用鼠标左键单击时,我想将键盘输入保存在名为“my_code”的变量中。但它不起作用

import os, sys
import random
import pygame
from pygame.locals import *


My_red_color = (255, 0, 0)
My_blue_color = (0, 0, 255)
My_green_color = (0, 255, 0)
My_yellow_color = (255, 255, 0)
My_black_color = (0,0,0)
My_white_color = (255,255,255)

pygame.init()
APPLICATION_x_size = 800
APPLICATION_y_size = 800
screen = pygame.display.set_mode((APPLICATION_x_size, APPLICATION_y_size))

myImg=pygame.image.load('E:\성빈\고등학교\과학전람회\pygame钢琴\code_input.png')

x=200
y=400


pygame.display.set_caption('Piano')
pygame.mouse.set_visible(True)
#pygame.mouse.set_visible(False)
green_square= pygame.Surface(screen.get_size())
green_square.fill((0, 255, 0))
screen.blit(green_square, (0, 0))
Weeee = True
pygame.draw.rect(screen, My_white_color, (30,100,100,200))
pygame.draw.rect(screen, My_white_color, (132,100,100,200))
pygame.draw.rect(screen, My_white_color, (234,100,100,200))
pygame.draw.rect(screen, My_white_color, (336,100,100,200))
pygame.draw.rect(screen, My_white_color, (438,100,100,200))
pygame.draw.rect(screen, My_white_color, (540,100,100,200))
pygame.draw.rect(screen, My_white_color, (642,100,100,200))
pygame.draw.rect(screen, My_black_color, (81,50,100,200))
pygame.draw.rect(screen, My_black_color, (183,50,100,200))
pygame.draw.rect(screen, My_black_color, (387,50,100,200))
pygame.draw.rect(screen, My_black_color, (489,50,100,200))
pygame.draw.rect(screen, My_black_color, (591,50,100,200))
b=screen.blit(myImg, (x,y))
pygame.display.flip()

while Weeee :



    for event in pygame.event.get():
        if event.type == pygame.QUIT:
        pygame.quit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_a:
                print("C")
                pygame.mixer.music.load('E:\성빈\고등학교\과학전람회\pygame piano\pygame piano\sound1.mp3')
                pygame.mixer.music.play(1,0)
            if event.key == pygame.K_s:
                print("D")
                pygame.mixer.music.load('E:\성빈\고등학교\과학전람회\pygame piano\pygame piano\sound2.mp3')
            pygame.mixer.music.play(1,0)
            if event.key == pygame.K_d:
                print("E")
                pygame.mixer.music.load('E:\성빈\고등학교\과학전람회\pygame piano\pygame piano\sound3.mp3')
            pygame.mixer.music.play(1,0)
            if event.key == pygame.K_f:
                print("F")
                pygame.mixer.music.load('E:\성빈\고등학교\과학전람회\pygame piano\pygame piano\sound4.mp3')
            pygame.mixer.music.play(1,0)
            if event.key == pygame.K_g:
                print("G")
                pygame.mixer.music.load('E:\성빈\고등학교\과학전람회\pygame piano\pygame piano\sound5.mp3')
            pygame.mixer.music.play(1,0)
            if event.key == pygame.K_h:
                print("A")
                pygame.mixer.music.load('E:\성빈\고등학교\과학전람회\pygame piano\pygame piano\sound6.mp3')
            pygame.mixer.music.play(1,0)
            if event.key == pygame.K_j:
                print("B")
                pygame.mixer.music.load('E:\성빈\고등학교\과학전람회\pygame      piano\pygame piano\sound7.mp3')
                pygame.mixer.music.play(1,0)



        if event.type == MOUSEBUTTONDOWN  :
            if event.button==1 :
                print("Setting Code")
                my_code=pygame.key.get_pressed()
               print("My code is" + str(my_code))



            if event.button == 3 :
                print("Type your Code")
                code_try=pygame.key.get_pressed()
                if code_try==my_code :
                    print("Done")
                else :
                      print("You've typed wrong code")

.

我应该怎么办?谢谢你。

4

1 回答 1

0

我假设您在这里尝试做的是将所有已按下鼠标左键的键保存到变量中。不过,据我了解,Pygame 中没有一个函数可以为您提供按键被按下的历史记录。这是一个非常简单的问题:在每个音符的 if 语句中,只需将音符添加到数组中。然后左键单击您可以将该数组保存到my_code或输出它。

我认为你对做什么感到困惑pygame.key.get_pressed()。它在调用它的确切时刻返回键盘状态的快照。这只是一个布尔数组,根据当前按下的键进行翻转。这不是按键的历史。

于 2017-02-24T15:48:55.543 回答