【问题标题】:In pygame : Can I save the keyboard input in a variable?在 pygame 中:我可以将键盘输入保存在变量中吗?
【发布时间】:2017-02-23 04:25:51
【问题描述】:

我正在用 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")

.

我该怎么办? 谢谢。

【问题讨论】:

  • 如果您直接粘贴问题代码而不是附加图像会很有用
  • 左键时是否按任意键?
  • @PeterWood 一点也不
  • @신성빈如果您没有按任何键,为什么您认为单击鼠标时某个键应该显示为已按下?
  • @PeterWood 我想在鼠标左键时保存键盘输入

标签: python pygame keyboard-input


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-04-21
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 2012-06-07
    • 2019-11-17
    • 2019-06-13
    • 2022-09-27
    • 1970-01-01
    相关资源
    最近更新 更多