Моя игра не будет работать, когда я использую элементы управления, как мне это исправить? - PullRequest
0 голосов
/ 28 января 2019

Я не могу заставить работать элементы управления, я пытаюсь нажать escape, чтобы открыть меню, которое я создал, но оно не открывается, и я не знаю, правильно ли я проверяю события, есть ли способ, который Я ПРЕДЛАГАЮ сделатьэто?

Я попытался использовать функции для проверки различных ключей, и я пошел на электронную таблицу, которая отображает все имена событий, чтобы вы могли отобразить их на pygame.org, но он не откроется, когда я используюEscape или также известный как:

elif event.type == pygame.K_ESCAPE:
    Frame.blit('Textures/GUI/loom.png', (0,0))

Вот полный код:

import pygame

#Textures/Blocks/loom_side.png

pygame.init()

Screen = "None"

DB = 0

Width = 800

Height = 600

Frame = pygame.display.set_mode((Width,Height))

pygame.display.set_caption("HypoPixel")

FPS = pygame.time.Clock()

def Raycast(TTR, RayXPos, RayYPos, RaySizeX, RaySizeY):
    RaycastThis = pygame.image.load(TTR)
    RaycastThis = pygame.transform.scale(RaycastThis,(RaySizeX,RaySizeY))
    Frame.blit(RaycastThis, (RayXPos, RayYPos))
Loop = True
Raycast('Textures/Screens/Skybox/Earth.png',0,0,800,600)
while Loop == True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()
        elif event.type == pygame.K_ESCAPE:
            Frame.blit('Textures/GUI/loom.png', (0,0))
    pygame.display.update()

    FPS.tick(60)

Я ожидал получить GUI ткацкого станка, который я сделал.Как только я попытался нажать побег, ничего не произошло.

1 Ответ

0 голосов
/ 28 января 2019

pygame.K_ESCAPE не тип события (см. pygame.event), но это pygame.key.

Сначала проверьте, была ли нажата клавиша, сравнив тип события с pygame.KEYDOWN:

event.type == pygame.KEYDOWN

Затем проверьте, является ли event.key, который вызывает событие, pygame.K_ESCAPEключ:

event.key == pygame.K_ESCAPE

Кроме того, параметр Surface.blit() должен быть объектом Surface, а не именем файла.

сначала загрузите изображение в Surface, pygame.image.load(), затем blit Surface:

sprite = pygame.image.load('Textures/GUI/loom.png')
Frame.blit(sprite, (0,0)) 

Конечно, ваш *Для этого можно вызвать функцию 1034 *:

Raycast('Textures/GUI/loom.png',0,0,800,600)

Ваш код должен выглядеть примерно так:

while Loop == True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()

        elif event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
            Raycast('Textures/GUI/loom.png',0,0,800,600)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...