0

I am making a game in python for a school project, and I'm trying to make a simple shooter when you just go up and down shooting enemies. However I am having trouble bringing the player above the background.

Code

import pygame, sys

class Player(pygame.sprite.Sprite):

    def __init__(self):
        super().__init__()
        self.image = pygame.Surface((100,100))
        self.image.fill((255,255,255))
        self.rect = self.image.get_rect(center = (screen_width/2,screen_height/2))

    def update(self):
        self.rect.center = pygame.mouse.get_pos()


# general setup
pygame.init()
clock = pygame.time.Clock()

# game screen
screen_width = 1920
screen_height = 1080
screen = pygame .display.set_mode((screen_width, screen_height))
background = pygame.image.load("BackGround.png")

# player
player = Player()
player_group = pygame.sprite.Group()
player_group.add(player)
player = pygame.image.load("spriteshd00.png")

# caption
pygame.display.set_caption("Wild-West Shooter")

# makes game quit
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    #drawing
    pygame.display.flip()
    player_group.draw(screen)
    player_group.update()
    screen.blit(background, (0, 0))
    clock.tick(60)


if __name__ == "__main__" :
    theApp = App()
    theApp.on_execute()
Jacob Lee
  • 4,405
  • 2
  • 16
  • 37
Karma
  • 55
  • 5

1 Answers1

1

Draw the character after the background:

while True:
    # handel events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame:quit()
            sys.exit()

    # update the game states and positions of objects
    player_group.update()

    # draw the background
    screen.blit(background,(0,0))

    # draw objects
    player_group.draw(screen)

    # update display
    pygame.display.flip()

    clock.tick(60)

The typical PyGame application loop has to:


Additionally you have to pass the player image to the Player class:

class Player(pygame.sprite.Sprite):
    def __init__(self, image):
        super().__init__()
        self.image = image
        self.rect = self.image.get_rect(center = (screen_width//2, screen_height//2))
# player
player_image = pygame.image.load("spriteshd00.png")
player = Player(player_image)
player_group = pygame.sprite.Group()
player_group.add(player)
Rabbid76
  • 202,892
  • 27
  • 131
  • 174
  • Thank you. this works, quick question though it does not show the image of the character it just shows a white box. I tried putting player = pygame.imgame.load("the name") underneath the draw objects but that didnt work – Karma Mar 19 '21 at 07:27
  • @Karma I've extended the answer. – Rabbid76 Mar 19 '21 at 08:48
  • 1
    thank you very much, i can finish this project now – Karma Mar 19 '21 at 09:01