Oct-22-2020, 10:27 AM
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
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()
