для обнаружения столкновений вам нужно превратить вашего персонажа и ваши блоки в спрайтов и таким образом обнаруживать столкновения.
Что касается нового экрана, когда вы поднимаетесь по лестнице, вы можете использовать следующее утверждение:
if heroSprite_x >= 200 and heroSprite_x <= 300:
if heroSprite_y >= 300 and heroSprite_y <= 400:
#go to new screen using either a new level from a list or a new class or whatever method you want.
Ваш вопрос был немного расплывчатым, но я надеюсь, что вы искали:)
Я только что понял, что не ответил на ваш первый вопрос, вот фрагмент из одной из моих игр:
unit_enemy = pygame.sprite.groupcollide(unitgroup, enemygroup, True, pygame.sprite.collide_mask)
for hit in unit_enemy:
#do something
Это проверяет, попали ли какие-либо враги в мой отряд.Так что в вашем случае это будет ваш герой, а враги - блоки.
Вот документация по обнаружению столкновений.
http://pygame.org/docs/ref/sprite.html