[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

RE: [pygame] pygame.init before pygame.mixer.init?



I tried running your code and don’t hear anything playing.  I added back pygame.mixer.init() before pygame.init() in your code, and it played.

-- Clare

 


From: owner-pygame-users@xxxxxxxx [mailto:owner-pygame-users@xxxxxxxx] On Behalf Of Ian Mallett
Sent: Wednesday, October 10, 2007 4:18 PM
To: pygame-users@xxxxxxxx
Subject: Re: [pygame] pygame.init before pygame.mixer.init?

 

The simplest thing to do is:

---------------------------------------
import pygame
from pygame.locals import *
pygame.init()
sound = pygame.mixer.Sound("bark.wav")
sound.play()
while pygame.mixer.get_busy ():
   pass
---------------------------------------

...because "pygame.locals" is everything you'll need: the keys module, surfaces, sound, etc.  This way you don't have to do one line of code for every submodule you want to import:

--------------------------------
import pygame.key
import pygame.mixer
import pygame.draw
import pygame.image
import pygame.font
import pygame.mouse
--------------is = to:-------------------
from pygame.locals import *
-------------------------------------------

I recommend doing this.  I've been programming many times and realized that I hadn't imported all the necessary modules.  Opps.  Especially for simplicity, use "from pygame.locals import *"

Anyway, about your question:  Your first line, "pygame.mixer.init()" imports pygame.mixer (you can't init a non-loaded module), and then inits it.  Your next line, "pygame.init()" inits all of the imported modules and pygame.  So, here's what your code is doing:

pygame.mixer.init()  #imports pygame.mixer and inits pygame.mixer
pygame.init ()  #inits all imported modules and pygame. (This re-inits pygame.mixer)

One way to check would be to change the first line:

-----------------------------
pygame.mixer.init()
-----becomes----------
import pygame.mixer
----------------------------

which will still work, but would not init the module, and so would be more efficient.

Ian