2017-02-23 17 views
-3

저는 파이 게임으로 piano_code 프로그램을 만들고 있습니다. 이미 피아노 기능을 만들었지 만 좀 더 추가하고 싶습니다. 마우스 왼쪽 버튼을 클릭하면 "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를 : \ 성빈 \ 고등학교 \ 과학 전람회 \ 파이 게임 피아노 \의 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

여기서 마우스 왼쪽 버튼을 클릭하면 변수에 눌려진 모든 키를 저장한다고 가정합니다. 필자의 이해에서 보면, 키가 눌려지는 역사를 줄 수있는 파이 게임의 기능은 없다. 이것은 매우 간단한 문제입니다. 각 노트의 if 문에서 배열에 노트를 추가하기 만하면됩니다. 그런 다음 왼쪽 클릭을하면 해당 배열을 my_code에 저장하거나 출력 할 수 있습니다.

pygame.key.get_pressed()에 대해 혼란 스럽습니다. 키보드가 눌려지는 순간 키보드 상태의 스냅 샷을 반환합니다. 이것은 순간에 눌려진 키를 기반으로 플립 된 부울 배열입니다. 그것은 키 누르기의 역사가 아닙니다.