Pygame help pls

For some reason in pygame, when i call my collision function the enemy sprite doesnt appear. How can i make it so that it does?(first time using ask replit btw)


https://replit.com/@Eshean/GruesomeTiredForm-2?v=1




import pygame, sys
from pygame.locals import QUIT
from random import randint

pygame.init()

def obstacle_movement(obstacle_list):
  if obstacle_list:
    for obstacle_rect in obstacle_list:
      obstacle_rect.x -= 4
      screen.blit(enemy, obstacle_rect)

    obstacle_list = [obstacle for obstacle in obstacle_list if obstacle.x > -100]
    return obstacle_list
  else:
    return []

def collisions(player, obstacles):
  if obstacles:
    for obstacle_rect in obstacles:
      if player.colliderect(obstacle_rect):
        return False
        
  else: 
    return True
    


screen = pygame.display.set_mode((400, 300))
pixil_surface = pygame.image.load('pixil-frame-0 (5).png').convert_alpha()
pixil = pygame.transform.scale(pixil_surface,(50,50))
pixil_rect = pixil.get_rect(midbottom = (30,200))

enemy_surface = pygame.image.load('pixil-frame-0 (6).png').convert_alpha()
enemy = pygame.transform.scale(enemy_surface,(50,50))
# enemy_rect = enemy.get_rect(midbottom = (375,300))

obstacle_rect_list = []


test_font = pygame.font.Font(None, 50)
text_surface = test_font.render('Game Over', False, 'red')

x = 170
y = 200


test_font2 = pygame.font.Font(None, 30)
text_surface2 = test_font2.render('Try again?', False, 'green')
text2 = pixil.get_rect(midbottom = (x,y))
pygame.display.set_caption('Hello World!')
clock = pygame.time.Clock()
player_gravity = 0

scoreNum = 0

# score_font = pygame.font.Font(None, 30)
# score_surf = test_font2.render('Score:', False, 'green')
score = pixil.get_rect(midbottom = (170,200))
def Dscore():
  score_surf = test_font.render('your score is: ' f'{scoreNum}', False, (64,64,64))
  score_rect = score_surf.get_rect(center = (200,50))
  screen.blit(score_surf, score_rect)
z = 0
w = 0
game_active = True


obstacle_timer = pygame.USEREVENT + 1
pygame.time.set_timer(obstacle_timer, 3000)
while True:
    
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type == pygame.KEYDOWN:
          if event.key == pygame.K_SPACE and pixil_rect.bottom == 300 and game_active:
            # for i in range(30):
            #   pixil_rect.top -= 5
            player_gravity = -20
        if event.type == pygame.MOUSEBUTTONDOWN:
          if text2.collidepoint(event.pos) and w == 1:
            # enemy_rect.left = 400
            z = 0
            w = 0
            scoreNum = 0
            # x = 1000
            # y = 1000
            # text2 = pixil.get_rect(midbottom = (x,y))
            game_active = True 
        if event.type == obstacle_timer and game_active:
          obstacle_rect_list.append(enemy.get_rect(bottomright= (randint(900, 1100),300)))
    if game_active == True:
      screen.fill('white')
      
      # pygame.draw.rect(screen,'yellow', enemy_rect)
      # screen.blit(enemy,enemy_rect)
      # enemy_rect.x -=5
      # if enemy_rect.right <= 0:
         # enemy_rect.left = 400
         # scoreNum += 1
      
      # obstacle_rect_list = obstacle_movement(obstacle_rect_list)
      # game_active = collisions(pixil_rect, obstacle_rect_list)
      
      # screen.blit(enemy,enemy_rect)
      
      player_gravity += 1
      pixil_rect.y += player_gravity
      screen.blit(pixil,pixil_rect)
      if pixil_rect.bottom >= 300:
        player_gravity = 0
        # pixil_rect.bottom += 0
        pixil_rect.bottom = 300

      obstacle_rect_list = obstacle_movement(obstacle_rect_list)
      game_active = collisions(pixil_rect, obstacle_rect_list)
      # if enemy_rect.colliderect(pixil_rect):
      #   game_active = False
        
        # screen.fill('grey')
        # screen.blit(text_surface,(110,100))
        # screen.blit(text_surface2,text2)
    else:
      screen.fill('grey')
      screen.blit(text_surface,(110,100))
      obstacle_rect_list.clear()
      # x = 170
      # y = 200
      # text2 = pixil.get_rect(midbottom = (x,y))
      screen.blit(text_surface2,text2)
      w = 1
      if z == 0:
        print("your score is:", scoreNum)
        z +=1
        
      # else:
        
      #   pixil_rect.bottom += player_gravity
      
    Dscore()
    pygame.display.update()
    clock.tick(60)
    
    ```

I can’t really see the problem here. Do you have an error message you can show us?

1 Like

You don’t need to input True/False in a if statement.

2 Likes