Oct-23-2020, 01:59 PM
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
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: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()