Делаю марио, но не могу реализовать столкновение марио с полом

import pygame
import random

#Настройки окна
WIDTH = 608
HEIGHT = 416
FPS = 60

#Инициализация
pygame.init()
screen = pygame.display.set_mode((WIDTH,HEIGHT))
clock = pygame.time.Clock()

#Время
moving = ''
running = True

#block1
block = pygame.Rect(0, 0, 32, 32)
blockImg = pygame.image.load('block.png')

block = pygame.Rect(500, 250, 32, 32)
blockImg = pygame.image.load('block.png')

#block2
block2 = pygame.Rect(0, 0, 32, 32)
block2Img = pygame.image.load('block2.png')

#block3
block3 = pygame.Rect(0, 0, 32, 32)
block3Img = pygame.image.load('block3.png')

#пол
SKY = pygame.Rect(0, 0, 608, 343)
SKYImg = pygame.image.load('sky.png')

#пол
bottom = pygame.Rect(0, 343, 608, 73)
bottomImg = pygame.image.load('Screenshot69.png')

#MARIO
mario = pygame.Rect(40, 250, 26, 34)
marioImg = pygame.image.load("mario.png")

#Падение
GRAVITY = 0.3
y_change = 0

#Прыжок
isJump = False
hopCount = 0

moving = ''
running = True
while running:
    for i in pygame.event.get():
        if i.type == pygame.QUIT:
            running = False
        if i.type == pygame.KEYDOWN:
            if i.key == pygame.K_LEFT:
                moving = 'LEFT'
            if i.key == pygame.K_RIGHT:
                moving = 'RIGHT'
            if i.key == pygame.K_UP:
                moving = 'UP'
            if i.key == pygame.K_DOWN:
                moving = 'DOWN'
            if i.key == pygame.K_SPACE:
                isJump = True
                hopCount = 0
        if i.type == pygame.KEYUP:
            if i.key == pygame.K_LEFT or i.key == pygame.K_RIGHT or i.key == pygame.K_UP or i.key == pygame.K_DOWN:
                moving = 'STOP'
                                                                                                                                                                                                                                                                                                                                                
    # Передвижение персонажа
    if moving == 'LEFT' and mario.left > 0:
        mario.left -= 5
    if moving == 'RIGHT' and mario.right < WIDTH:
        mario.left += 5
    if moving == 'UP' and mario.top > 0:
        mario.top -= 5
    if moving == 'DOWN' and mario.bottom < HEIGHT:
        mario.top += 5
    if isJump:
        hopCount += 1
        mario.top -=20
        if hopCount == 5:
            isJump = False
            y_change = 0
    else:
        y_change += GRAVITY
        mario.top += y_change
#пол и mario
    
            
    screen.blit(SKYImg,(SKY.left, SKY.top))
            
    screen.blit(marioImg, (mario.left,mario.top))
    
    screen.blit(blockImg,(block.left, block.top))
    
    screen.blit(blockImg,(block.left, block.top))
    
    screen.blit(block2Img,(block2.left, block2.top))
    
    screen.blit(block3Img,(block3.left, block3.top))
    
    screen.blit(bottomImg,(bottom.left, bottom.top))
    
    clock.tick(FPS)
    pygame.display.update()
pygame.quit()

Так а проблема в чем именно?
Похожие темы:
Как сделать твердый объект - #2 от пользователя AlexP
Не работает отталкивание мяча от верхней и нижней границы - #2 от пользователя AlexP

нужно сделать так, чтобы марио ходил по полу, а сейчас он проваливается под пол

Ну так надо проверять координаты, не двигать дальше пола.
По ссылкам выше похожее делается.

Относительно марио, изжеваная тема.
Есть статья на хабре: Пишем платформер на Python
Там же ссылка на релиз
И дополнительно можно посмотреть здесь: Super Mario Python Beta