Python Forum
Fatal error after trying to play sound.
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Fatal error after trying to play sound.
#1
Hello guys.

I am creating a space invader sort of game and for some reason when the sound of the shooting or explosion is heard, right after the programs quits fatal with the following errors.

I searched through google and tried all the tips offered to correct this issue to no avail. Would appreciate your help. MAC Osx 10.13.6

Error code:
Hello from the pygame community. https://www.pygame.org/contribute.html
Fatal Python error: PyEval_SaveThread: NULL tstate

Current thread 0x0000000101931380 (most recent call first):
File "/Users/giladalon/Desktop/Python Projects/Games/new_game.py", line 108 in <module>
Abort trap: 6
(base) Gilads-MBP:Games giladalon$ /Library/Frameworks/Python.framework/Versions/3.6/bin/python3 "/Users/giladalon/Desktop/Python Projects/Games/new_game.py"
pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
Fatal Python error: PyEval_SaveThread: NULL tstate

Current thread 0x0000000101931380 (most recent call first):
File "/Users/giladalon/Desktop/Python Projects/Games/new_game.py", line 105 in <module>
Abort trap: 6


import pygame
from pygame import mixer
pygame.mixer.pre_init(frequency=44100)
pygame.init()
pygame.mixer.init(frequency=44100)
pygame.mixer.pre_init(44100, -16, 2, 4096)

pygame.init()
import random
import math



screen = pygame.display.set_mode((800, 600)) 

#background
background = pygame.image.load("background.png")

# Background music
#mixer.music.load("background.wav")
#mixer.music.play(-1)



# Title and Caption
pygame.display.set_caption("Space invaders")
icon = pygame.image.load("rocket.png")
pygame.display.set_icon(icon)

# Player
playerIMG = pygame.image.load('rocket-flying.png')
playerX = 370
playerY = 480
playerX_change = 0

 # Enemy
enemyIMG = []
enemyX = []
enemyY = []
enemyX_change = []
enemyY_change = [] 
num_of_enemies = 10
speed_change = 2

for i in range(num_of_enemies):
    enemyIMG.append(pygame.image.load('enemy.png'))
    enemyX.append(random.randint(0, 800))
    enemyY.append(random.randint(50, 100))
    enemyX_change.append(4)
    enemyY_change.append(40)

# Bullet
# Ready = you cant see the bullet on the screen.
# Fire =  The bullet is currently moving
bulletIMG = pygame.image.load('bullet.png')
bulletX = 0
bulletY = 480
bulletX_change = 0
bulletY_change =  10 
bullet_state = "ready"

# Score
score_value = 0
font = pygame.font.Font('freesansbold.ttf', 32)

textX = 0
textY = 0

over_font = pygame.font.Font('freesansbold.ttf', 64)


def  show_score(x,y):
    score = font.render("Score: " + str(score_value), True, (255,255,255))
    screen.blit(score, (x,y))
    
    


def game_over_text():
    over_text = over_font.render("Game Over Man!", True, (255,255,255))
    screen.blit(over_text, (200,250))

def player(x,y):
    screen.blit(playerIMG, (x, y))

def enemy(x,y, i ):
    screen.blit(enemyIMG[i], (x, y))

def fire_bullet(x, y):
    global bullet_state
    bullet_state = "fire"
    screen.blit(bulletIMG, (x, y + 10))

def isCollision(enemyX, enemyY, bulletX, bulletY):
    distance = math.sqrt(math.pow(enemyX - bulletX, 2) + (math.pow(enemyY - bulletY, 2)))
    if distance < 27:
        return True
    else:
        return False

# Main game loop
running = True
while running:
    # RGB
    screen.fill((255, 255,255))
    screen.blit(background, (0,0))
   
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            print("I quit")
            running = False
        if event.type == pygame.KEYDOWN:
            #print("A key stroke has been pressed")
            if event.key == pygame.K_LEFT:
                #print("left arrow is pressed")
                playerX_change -= 10
            if event.key == pygame.K_RIGHT:
                #print("right arrow is pressed")
                playerX_change += 10
            if event.key == pygame.K_SPACE:
                if bullet_state is "ready":  
                    bullet_sound = pygame.mixer.Sound('gun.ogg')
                    bullet_sound.play()
                    bulletX = playerX
                    fire_bullet(bulletX, bulletY)
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                #print("Keystroke has been released")
                playerX_change = 0
   
    #player movement
    playerX += playerX_change
    if playerX <= 0:
        playerX_change = 0
    elif playerX > 765:
        playerX_change = 0

    #enemy movement
    for i in range(num_of_enemies):
        # Game over
        if enemyY[i] > 500:
            for j in range(num_of_enemies):
                enemyY[j] = 2000
            game_over_text()
            break
        enemyX[i] += enemyX_change[i]
        if enemyX[i] <= 0:
            enemyX_change[i] += speed_change
            enemyY[i] += enemyY_change[i]
        elif enemyX[i] >= 765:
            enemyX_change[i] -= speed_change
            enemyY[i] += 1
        #collision
        collision = isCollision(enemyX[i], enemyY[i], bulletX, bulletY)
        if collision:
           explosion_sound = mixer.Sound('explosion.ogg')
           explosion_sound.play()
           bulletY = 480
           bullet_state = "ready"
           score_value += 1
           enemyX[i] = random.randint(0,735 )
           enemyY[i]  = random.randint(5,150 )
        enemy(enemyX[i], enemyY[i], i) 
    
    #Bullet movement
    if bulletY <= 0:
        bulletY = 480
        bullet_state = "ready"

    if bullet_state is "fire":
        fire_bullet(bulletX, bulletY)
        bulletY -= bulletY_change
    if score_value == 2:
        speed_change = 5
        print("2 point, speed upped")
    elif score_value == 5:
        print("5 points, speed upped")
        speed_change = 10

    player(playerX, playerY)
    show_score(textX, textY)
    pygame.display.update()
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How can I send a .mp3 to play through my mic? ejected 20 19,823 Sep-01-2022, 02:38 AM
Last Post: victormayer
  Handling Python Fatal Error richajain1785 7 5,764 Oct-14-2021, 01:34 PM
Last Post: Tails86
  Play the next music in a list Pymax 0 1,181 Jul-28-2021, 07:27 PM
Last Post: Pymax
  Play fixed frequency sound in python 3 jpezz 2 2,724 Feb-07-2021, 08:21 PM
Last Post: jpezz
  how do i play an mp3 from a list gr3yali3n 3 2,074 Dec-01-2020, 08:50 AM
Last Post: Axel_Erfurt
  Fatal python error, need help ryanmagid 0 2,333 Aug-09-2020, 05:51 PM
Last Post: ryanmagid
  appear fatal error popup for Python 2.7, what to do to Not appear again...? lsepolis123 1 2,037 Mar-23-2020, 10:44 PM
Last Post: lsepolis123
  Windows fatal exception: access violation czhhua28 0 5,875 Mar-11-2020, 01:53 AM
Last Post: czhhua28
  Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesyste jiapei100 0 10,066 Feb-11-2020, 01:27 PM
Last Post: jiapei100
  How to play against the computer Help_me_Please 4 3,991 Aug-29-2019, 03:37 PM
Last Post: ThomasL

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020