2017-02-23 65 views
-3

Я делаю программу piano_code с pygame. Я уже сделал функцию фортепиано, но хочу добавить еще немного. Я хочу сохранить свой ввод с клавиатуры в переменной с именем «my_code», когда я оставил клик мышью. Но это не работаетВ pygame: Могу ли я сохранить ввод с клавиатуры в переменной?

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

Было бы полезно, если бы вы вставили код проблемы напрямую, а не прикрепляли изображение. – Simon

+0

Нажимаете ли вы какие-либо клавиши, когда вы оставляете клик? –

+0

@PeterWood Совсем нет –

ответ

0

Я предполагаю, что вы пытаетесь сделать здесь, чтобы сохранить все ключи, которые были нажаты в переменную, щелкнув левой кнопкой мыши. По моему мнению, в Pygame нет функции, которая может дать вам историю нажатия клавиш. Это довольно простая проблема: в инструкции if для каждой заметки просто добавьте примечание в массив. Затем, щелкнув левой кнопкой мыши, вы можете сохранить этот массив в my_code или вывести его.

Я думаю, вы смущены относительно того, что pygame.key.get_pressed(). Он возвращает моментальный снимок состояния клавиатуры в тот момент, когда он называется. Это всего лишь массив логических элементов, которые перевернуты в зависимости от того, какие клавиши нажаты в данный момент. Это не история нажатия клавиш.