Pygame is perfectly installed, everything else is working fine spaceship movement and enemy movement but i am not able to see the bullet which i have drawn from inside the fire_bullet function, I have tried drawing it from outside the function and that does seem to work .
import pygame
import os
import random
pygame.init()
#Screen
screen = pygame.display.set_mode((800, 600))
#Title and Icon
pygame.display.set_caption('Space Invaders ')
UFO = pygame.image.load(os.path.join('Assets2', 'ufo.png'))
pygame.display.set_icon(UFO)
#player
playerImg = pygame.image.load(os.path.join('Assets2', 'spaceship.png'))
playerX = 370
playerY = 480
VEL = 0
def player(x, y):
screen.blit(playerImg, (x, y))
#enemy
enemyImg = pygame.image.load(os.path.join('Assets2', 'enemy.png'))
enemyimg1 = pygame.transform.scale(enemyImg, (45, 50))
enemyX = random.randint(0,800)
enemyY = random.randint(50,150)
enemyX_change = 0.7
enemyY_change = 40
def enemy(x,y):
screen.blit(enemyimg1, (x, y))
#background
bg = pygame.image.load(os.path.join('Assets2', 'space.png'))
#bullet
bulletimg = pygame.image.load(os.path.join('Assets2', 'bullet.png'))
bulletX = 0
bulletY = 480
bulletX_change = 0
bulletY_change = 10
bullet_state = "ready" #Ready - Rest, Fire - Motion
def fire_bullet(x,y):
global bullet_state
bullet_state = "fire"
screen.blit(bulletimg, (x+16, y+10))
run = True
#Game loop
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
# Movement
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
VEL = -1.4
if event.key == pygame.K_RIGHT:
VEL= 1.4
# Bullet positioning
if event.key == pygame.K_SPACE:
fire_bullet(playerX, bulletY)
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
VEL = 0
playerX += VEL
# Restricting boundaries of spaceship
if playerX <= 0:
playerX = 0
elif playerX >= 736:
playerX = 736
enemyX += enemyX_change
# Restricting boundaries of Enemy
if enemyX <= 0:
enemyX_change = 1
enemyY += enemyY_change
elif enemyX >= 736:
enemyX_change = -1
enemyY += enemyY_change
#Bullet Movement
if bullet_state is "fire":
fire_bullet(playerX, bulletY)
bulletY -= bulletY_change
screen.fill((255,255,0))
screen.blit(bg, (0,0))
player(playerX, playerY)
enemy(enemyX, enemyY)
pygame.display.update()
Also all the assets are fine and dowloaded correctly so idk why is it still not showing the bullet drawn from inside the function