Можно ли установить событие.ключ к переменной?

#python #events #pygame #key #keydown

Вопрос:

Я работаю над небольшим проектом на Python, просто чтобы узнать больше о языке, но столкнулся с проблемой. Я пытаюсь установить случайную величину, и всякий раз, когда я нажимаю соответствующую цифру на клавиатуре, я выигрываю игру. Однако я не знаю, смогу ли я установить событие.ключевая переменная в строке или другая переменная, которая будет меняться вместе со случайным числом.

 import pygame
import sys
import random

pygame.init()

key = random.randint(0,9)
key2 = ('K_', key)

window = pygame.display.set_mode((300, 300))

pygame.display.set_caption('Text Editor')
font_color = (0, 150, 250)
font_obj = pygame.font.SysFont('forte', 25)

text_obj = font_obj.render(str(key), True, font_color)
won = font_obj.render('you won', True, font_color)
while True:
    window.fill((255,255,255))
    window.blit(text_obj,(22,0))
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            sys.exit()

        if event.type==pygame.KEYDOWN:
            if event.key==key2:
                window.blit(won,(22,50))
                print('you won')
    pygame.display.update()
 

Ответ №1:

В Pygame ссылки на ключи выполняются с помощью констант, определенных в pygame.locals . Вы должны сравнить свое ключевое событие с одним из них:

 from pygame.locals import *

num_keys = [K_0, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9]
target = random.choice(num_keys)

# ...

while True:
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN and event.key == target:
            window.blit(won, (22,50))
            print('you won')