Was following a tutorial by freeCodeCamp on YouTube on pygame and the darned spaceship won’t fire the bullet. I am an absolute beginner to this and would be overjoyed if someone could look at my code and figure out what I’m missing. I tried the comments and other sources but to no avail.
The link for the video:
import random
import pygame
need to add this line to initialize pygame
pygame.init()
this is used to create a screen, have to remember to add double brackets for it to work
screen = pygame.display.set_mode((800, 600))
Background
background = pygame.image.load(‘background.png’)
Title and Icon
pygame.display.set_caption(“Space Invaders”)
icon = pygame.image.load(‘ufo.png’)
pygame.display.set_icon(icon)Player
playerImg = pygame.image.load(‘player.png’)
playerX = 380
playerY = 490
pMove = 0Enemy
enemyImg = pygame.image.load(‘enemy.png’)
enemyX = random.randint(0, 800)
enemyY = random.randint(50, 150)
eMoveX = 2
eMoveY = 20Bullet
Ready - You can’t see the bullet on the screen
Fire - Can see when SPACE is pressed
bulletIMG = pygame.image.load(‘bullet.png’)
bulletX = 0
bulletY = 400
bMoveX = 0
bMoveY = 20
bullet_state = “ready”def player(x, y):
screen.blit(playerImg, (x, y))def enemy(x, y):
screen.blit(enemyImg, (x, y))def fire_bullet(x, y):
global bullet_state
bullet_state = “fire”
screen.blit(bulletIMG, (x + 16, y + 10))Game Loop
running = True
while running:
screen.fill((0, 0, 0))
# background Image
screen.blit(background, (0, 0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False# checks if keystroke is pressed if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: # Left Arrow Key pMove = -5 if event.key == pygame.K_RIGHT: # Right Arrow Key pMove = 5 if event.key == pygame.K_SPACE: # Spacebar fire_bullet(playerX, bulletY) if event.key == pygame.K_SPACE: if bullet_state is "ready": bulletSound = mixer.Sound("laser.wav") bulletSound.play() # Get the current x cordinate of the spaceship bulletX = playerX fire_bullet(bulletX, bulletY) if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: pMove = 0 # player Boundary playerX += pMove if playerX <= 0: playerX = 0 elif playerX >= 735: playerX = 735 # enemy Movement and Boundary enemyX += eMoveX if enemyX >= 735: eMoveX = -3 enemyY += eMoveY elif enemyX <= 0: eMoveX = 3 enemyY += eMoveY # Bullet Movement if bulletY <= 0: bulletY = 480 bullet_state = "ready" if bullet_state is "fire": fire_bullet(playerX, bulletY) bulletY -= bMoveY player(playerX, playerY) enemy(enemyX, enemyY) pygame.display.update() # update line should always be included