0
            import pygame
            import random

            # get the window
            pygame.init

            # window var declarataion and parameters
            window = pygame.display.set_mode((800, 600))
            background = pygame.image.load("space bg.png")

            # characters
            # spaceship
            playerImg = pygame.image.load("spaceship-2.png")
            playerX = 360
            playerY = 535
            playerX_change = 0

            #enemy
            enemyImg = pygame.image.load("space-invaders.png")
            enemyX = random.randint(0, 536)
            enemyY = random.randint(0, 120)
            enemyX_change = 1
            enemyY_change = 30

            #bullet
            bulletImg = pygame.image.load("space-invaders.png")
            bulletX = playerX
            bulletY = 535
            bulletX_change = 0
            bulletY_change = -100
            bullet_state = "ready"

            # character functions
            #spaceship
            def player(x, y):
                window.blit(playerImg, (playerX, playerY))

            def enemy(x, y):
                window.blit(enemyImg, (enemyX, enemyY))

            def fire_bullet(x, y):
                global bullet_state
                if bullet_state == "fire":
                    window.blit(bulletImg, (playerX + 16, playerY + 10))

            # full loop
            running = True

            while running:
                # to change the color of window
                window.fill((255, 255, 255))
                window.blit(background, (0, 0))

                for event in pygame.event.get():
                    if event.type == pygame.QUIT:
                        running = False

                    # check if key pressed is right or left and executes events accordingly
                    if event.type == pygame.KEYDOWN:
                        if event.key == pygame.K_LEFT:
                            playerX_change = -1
                        if event.key == pygame.K_RIGHT:
                            playerX_change = 1
                        if event.key == pygame.K_SPACE:
                            fire_bullet(playerX, bulletY)
                            bulletY -= bulletY_change
                    if event.type == pygame.KEYUP:
                        if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                            playerX_change = 0


                # enemy movement
                # loops the enemy movement
                enemyX += enemyX_change

                # to change the enemy direction when border of window hit
                if enemyX <= 0:
                    enemyY += enemyY_change
                    enemyX_change = 1
                elif enemyX >= 736:
                    enemyY += enemyY_change 
                    enemyX_change = -1


                # calling function
                playerX += playerX_change

                if playerX <= 0:
                    playerX = 0 
                elif playerX >= 736:
                    playerX = 736

                player(playerX, playerY)
                enemy(enemyX, enemyY)
                pygame.display.update()

                

i tried to make the bullet move along the y axis of the spaceship by adding the code shown below into the keystroke code section:

                    if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                playerX_change = -1
            if event.key == pygame.K_RIGHT:
                playerX_change = 1
            if event.key == pygame.K_SPACE:
                fire_bullet(playerX, bulletY)
                bulletY -= bulletY_change

but no error message is shown, the bullet is not being shown, but everything else works perfectly.. like the invader moving along the x axis infinitely, and the spaceship can still be controlled by my arrow key.. only thing that doesn't work is the bullet not firing from the spaceship.. and I can't seem to make it work with this code.. if someone could tell me where I went wrong, it would be of tons of help, and I've been on this problem for days now.. so it would save me a lot of time in the future. thanks

RON
  • 1

0 Answers0