I seem to be having trouble with the platformer I am building in Pygame. I can glitch into the walls when approaching them from the left side. I set the x velocity to zero when approaching a wall, but I can still get in. Can someone please help me on this?
I am trying to make a game where the player has to parkour to the end of the track. This platformer is going to be a 2d, non-scrolling game when it is finished.
import pygame as pg
pg.init()
screen = pg.display.set_mode((640, 480))
BG_COLOR = pg.Color(173, 216, 230)
def main():
    clock = pg.time.Clock()
    image = pg.Surface((50, 50))
    image.fill(pg.Color('red'))
    player_rect = image.get_rect(topleft=(200, 200))
    image_ground = pg.Surface((1000, 50))
    image_ground.fill(pg.Color('black'))
    ground_rect = image_ground.get_rect(topleft=(0, 430))
    image_ground2 = pg.Surface((300, 50))
    image_ground2.fill(pg.Color('black'))
    ground_rect2 = image_ground2.get_rect(topleft=(0, 330))
    image_ground3 = pg.Surface((50, 50))
    image_ground3.fill(pg.Color('black'))
    ground_rect3 = image_ground3.get_rect(topleft=(400, 230))
    screen_rect = screen.get_rect()
    image_ground3.fill(pg.Color('black'))
    ground_rect3 = image_ground3.get_rect(topleft=(400, 230))
    screen_rect = screen.get_rect()
    xv = 0
    yv = 0
    level = 1
    while True:
        for event in pg.event.get():
            if event.type == pg.QUIT:
                return
        pressed = pg.key.get_pressed()
        if pressed[pg.K_RIGHT]:
            xv = xv + 0.85
        if pressed[pg.K_LEFT]:
            xv = xv - 0.85
        xv = xv * 0.9
        player_rect.x += xv
        if player_rect.colliderect(ground_rect) or player_rect.colliderect(ground_rect2) or player_rect.colliderect(ground_rect3):
          player_rect.y -= 1
          if player_rect.colliderect(ground_rect) or player_rect.colliderect(ground_rect2) or player_rect.colliderect(ground_rect3):
            player_rect.y -= 1
            if player_rect.colliderect(ground_rect) or player_rect.colliderect(ground_rect2) or player_rect.colliderect(ground_rect3):
              player_rect.y -= 1
              if player_rect.colliderect(ground_rect) or player_rect.colliderect(ground_rect2) or player_rect.colliderect(ground_rect3):
                player_rect.y -= 1
                if player_rect.colliderect(ground_rect) or player_rect.colliderect(ground_rect2) or player_rect.colliderect(ground_rect3):
                  player_rect.y -= 1
                  if player_rect.colliderect(ground_rect) or player_rect.colliderect(ground_rect2) or player_rect.colliderect(ground_rect3):
                    player_rect.y += 5
                    player_rect.x -= xv
                    if pressed[pg.K_UP]:
                      if xv > 0:
                        xv = -8
                      else:
                        xv = 8
                      yv = 13
                    else:
                      xv = 0
        yv = yv - 1
        player_rect.y -= yv
        if player_rect.colliderect(ground_rect) or player_rect.colliderect(ground_rect2) or player_rect.colliderect(ground_rect3):
          player_rect.y += yv
          yv = 0
        player_rect.y += 1
        if player_rect.colliderect(ground_rect) or player_rect.colliderect(ground_rect2) or player_rect.colliderect(ground_rect3):
          if pressed[pg.K_UP]:
            yv = 13
        player_rect.y -= 1
        player_rect.clamp_ip(screen_rect)
        screen.fill(BG_COLOR)
        screen.blit(image, player_rect)
        screen.blit(image_ground, ground_rect)
        screen.blit(image_ground2, ground_rect2)
        screen.blit(image_ground3, ground_rect3)
        pg.display.flip()
        clock.tick(60)
if __name__ == '__main__':
    main()
    pg.quit()