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

Новое здесь, так что в любом случае я могу быть немного новичком на сайте форума. У меня есть эта проблема, когда я загружаю экран, и он показывает мой экран заголовка.Далее я нажимаю пробел, а затем он падает.У меня есть песни в том же каталоге.В моем коде также есть __init__. Я также мог бы использовать справку с моими отступами python / pygame, так как я исправил это в консоли, но скопируйте и вставьте его здесь на форум, он не будет работать.РЕДАКТИРОВАТЬ: вставьте выделение кода, затем нажмите Я не знал этого ..

#2/2/2019
#My first game jam!
#Started at 3:03 AM

import pygame
import os
import random
from pygame.locals import *

pygame.init
pygame.mixer.init(44100, -16,2,2048)
pygame.display.init

#Checks to see if on the title screen
isTitle = True
isOP = False

#Character
isAlive = False
isLeft = False
isRight = False
isJumping = False
isThrowing = False

#Items
hasKey = False

#Projectile
hasGrap = False
hasDart = False
hasKuni = False

#Abilities
hasArmor = False
hasBoots = False
hasCrawl = False

#Window info
FPS = pygame.time.Clock()
sWidth = 512
sHeight = 512
isRunning = True
SCREEN = pygame.display.set_mode((sWidth, sHeight))
pygame.display.set_caption("Golden Dreamer: Evocation")

#Sets icon for window
GDE = pygame.image.load('GD_icon.png').convert()
pygame.display.set_icon(GDE)

#Loads all sprites here
GDT = pygame.image.load('GD_title.png').convert()
PLR_IDLE = pygame.image.load('Plr_idle.png').convert()
OP_1 = pygame.image.load('OP_1.png').convert()

#TITLE SCREEN
if (isTitle == True):
    SCREEN.blit(GDT, (-8, 0))
    GDTM = pygame.mixer.music.load("GD_title_m.ogg")
    pygame.mixer.music.play(-1)

while isRunning:
    for event in pygame.event.get():
            if (event.type == pygame.QUIT):
                isRunning = False 

    keys = pygame.key.get_pressed()            
    if (keys[pygame.K_a]):
        xPos -= mSpd

    if (keys[pygame.K_d]):
        xPos += mSpd

    if (keys[pygame.K_SPACE] and isTitle == True):
        isOP = True
        isTitle = False

    if (isOP == True):
        pygame.mixer.stop()
        SCREEN.blit(OP_1, (-8, 0))
        OP_M = pygame.mixer.music.load("OP_m.ogg")

    FPS.tick(60)
    pygame.display.flip()
    pygame.display.update()
    print(FPS, ' FPS')

pygame.quit()

1 Ответ

0 голосов
/ 04 февраля 2019

Похоже, что проблема вызвана тем, что в основном цикле проверяется isOP.

При нажатии [Space] устанавливается флаг isOP, который инициирует воспроизведение загрузки нового звукового файла.Однако, поскольку проверка этого флага находится внутри вашего основного цикла обработки событий, после его запуска микшер получает команду перезагружать звуковой файл снова и снова.

Установка isOP обратно в false должна исправить эту проблему.

if (keys[pygame.K_SPACE] and isTitle == True):
    isOP = True
    isTitle = False

if (isOP == True):
    pygame.mixer.stop()
    SCREEN.blit(OP_1, (-8, 0))
    OP_M = pygame.mixer.music.load("OP_m.ogg")
    isOP = False     # DON'T RELOAD AGAIN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...