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)
```