
рдирдорд╕реНрдХрд╛рд░ рджреЛрд╕реНрддреЛрдВ!
рд╣рдо рдЕрдкрдиреЗ рдорд╛рд░рд┐рдпреЛрдмреЙрдп рдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рд╢реБрд░реБрдЖрдд
рдпрд╣реАрдВ рд╣реИ , рдирд┐рд░рдВрддрд░рддрд╛
рдпрд╣рд╛рдВ рд╣реИ ред рджреВрд╕рд░реЗ рднрд╛рдЧ рдХреЗ рдЗрд╕ рдЙрдк-рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдПрдХ рд╕реНрддрд░ рд╕рдВрдкрд╛рджрдХ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рддреИрдпрд╛рд░реА рдХрд░реЗрдВрдЧреЗ, рдЕрд░реНрдерд╛рддреН: рдирд╛рдпрдХ рдХреЛ рдПрдХ рдЯрд░реНрдмреЛ рд░рди рдореЛрдб, рдШрд╛рддрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо, рдореВрд╡рд┐рдВрдЧ рдореЙрдиреНрд╕реНрдЯрд░, рдЯреЗрд▓реАрдкреЛрд░реНрдЯрд░реНрд╕, рдПрдХ рд░рд╛рдЬрдХреБрдорд╛рд░реА рдФрд░ рдПрдХ рд╕реНрддрд░ рдХрд╛ рдкрд╛рд░реНрд╕рд░, рддрд╛рдХрд┐ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдЗрд╕ рд╕рдм рд╕реЗ рд╡рд┐рдЪрд▓рд┐рдд рди рд╣реЛрдВред
рдЕрдкрдЧреНрд░реЗрдб рд╣реАрд░реЛ
рд╣рдорд╛рд░реЗ рд╣реАрд░реЛ рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдЬреЛрдбрд╝реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рдЕрдкрдбреЗрдЯ рд╡рд┐рдзрд┐ рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред
рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд╕реНрдерд┐рд░рд╛рдВрдХ рдЬреЛрдбрд╝реЗрдВ
MOVE_EXTRA_SPEED = 2.5
рдЕрдЧрд▓рд╛, рдЧрддрд┐ рдореЗрдВ рдмрд╛рдПрдБ - рджрд╛рдПрдБ рдЧрддрд┐ рдПрдирд┐рдореЗрд╢рди рдЬреЛрдбрд╝реЗрдВред рд╣рдо рдПрдХ рд╣реА рдЪрд┐рддреНрд░ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рдлреНрд░реЗрдо рджрд░ рдХреЗ рд╕рд╛рде
рд╕реНрд╡рдпрдВ рдХреЛ рддреЗрдЬ рдХрд░рддреЗ рд╕рдордп рдПрдирд┐рдореЗрд╢рди рдХреЗ 2 рд╕реЗрдЯ рдЬреЛрдбрд╝реЗ рдЧрдПред
AbnimRightSuperSpeed ,
self.boltAnimLeftSuperSpeed , рд╣рдо рдЙрдиреНрд╣реЗрдВ рдереЛрдбрд╝рд╛ рдХрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ
рдЪрд▓рд┐рдП рдЕрдм рд╣рдо
рдЕрдкрдбреЗрдЯ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддреЗ рд╣реИрдВред
рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝реЗрдВ
def update(self, left, right, up, running, platforms):
рддреНрд╡рд░рдг рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЪрд░рд┐рддреНрд░ рдХреА рдЪрд╛рд▓ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрджрд▓реЗрдВред
if up: if self.onGround:
рдФрд░ рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдмрд╛рдИрдВ рдкрд╛рд░реА рдХреЛ рджрдмрд╛рдиреЗ рдХреА рдШрдЯрдирд╛ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝реЗрдВред
running = False *** if e.type == KEYDOWN and e.key == K_LSHIFT: running = True *** if e.type == KEYUP and e.key == K_LSHIFT: running = False
рд╕рднреА рдкреНрд░рдореБрдЦ рдХреЛрдб
рдпрд╣рд╛рдБрдФрд░
Hero.update () рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рддрд░реНрдХ рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВ
hero.update(left, right, up, running, platforms)
рд╣рдо рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ
(рдореИрдВрдиреЗ рдХреНрд░реВрд░ рдорд╛рд░рд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рд░рдВрдЧ рдХрд╛рд▓рд╛ , рдХреНрд░реВрд░ рд░рдВрдЧ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛)рдХреЛрдИ рддреНрд╡рд░рдг рдирд╣реАрдВ

рддреНрд╡рд░рдг рдХреВрджреЛ

рдЬрд╛рдирд▓реЗрд╡рд╛ рд╕реНрдкрд╛рдЗрдХреНрд╕
рдЕрд╕рд▓реА рдирд╛рдпрдХ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЦрддрд░рд╛ рд╣реИред рдЪрд▓реЛ рдПрдХ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдмреНрд▓реЙрдХ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рддрддреНрдХрд╛рд▓ рдореГрддреНрдпреБ рд╣реЛрдЧреАред
рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдПрдХ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВред
class BlockDie(Platform): def __init__(self, x, y): Platform.__init__(self, x, y) self.image = image.load("%s/blocks/dieBlock.png" % ICON_DIR)
рдЗрд╕рдХреЗ рдмрд╛рдж, рдирд╛рдпрдХ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЙрд╕рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдг рд╡рд░реНрдЧ рдореЗрдВ 2 рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВред рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ рдореГрддреНрдпреБ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ, рджреВрд╕рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдмрдврд╝ рд░рд╣рд╛ рд╣реИ (рдЬреЛ рдиреАрдЪреЗ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдХрд╛рдо рдореЗрдВ рдЖрдПрдЧрд╛)
def die(self): time.wait(500) self.teleporting(self.startX, self.startY)
рдпрд╛рдиреА рдЬрдм рд╣рдо рдорд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдЦреЗрд▓ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╕реНрддрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЪрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЖрдЧреЗ рдЦреЗрд▓рддреЗ рд╣реИрдВред
рдЦреИрд░, рд╣рдо рдЪреМрд░рд╛рд╣реЗ рдкрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдЯрдХрд░рд╛рд╡ () рд╡рд┐рдзрд┐ рдореЗрдВ рдореГрддреНрдпреБ рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВ
*** if isinstance(p, blocks.BlockDie):
рдЕрдм, рдореБрдЦреНрдп рд╡рд░реНрдЧ рдореЗрдВ рд╣рдо рд╕реНрддрд░ рдмрджрд▓реЗрдВрдЧреЗ
level = [ "----------------------------------", "- -", "- -- -", "- * -", "- -", "- -- -", "-- -", "- -", "- ---- --- -", "- -", "-- -", "- * -", "- --- -", "- -", "- -", "- * --- * -", "- -", "- ------- ---- -", "- -", "- - -", "- -- -", "- *** -", "- -", "----------------------------------"]
рдФрд░ рдореГрддреНрдпреБ рдмреНрд▓реЙрдХ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЬреЛрдбрд╝реЗрдВ, рдЕрдЧрд░ рд╕реНрддрд░ рдореЗрдВ "*" рдкреНрд░рддреАрдХ рд╣реИ
if col == "*": bd = BlockDie(x,y) entities.add(bd) platforms.append(bd)
рдкрд░рд┐рдгрд╛рдо:

рдкреЛрд░реНрдЯрд▓
рдмрд┐рдирд╛ рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдХреЗ рдЖрдзреБрдирд┐рдХ рдкреНрд▓рдВрдмрд░ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ? рддреЛ рдЖрдЗрдП рд╣рдо рдЕрдкрдиреЗ рдирд╛рдпрдХ рдХреЛ рдПрдХ рдХрд╛рд▓реА рднреЗрдбрд╝ рди рдмрдирд╛рдПрдВред
рдПрдХ рдирдпрд╛ рдмреНрд▓реЙрдХ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдПрдБред рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ
рдмреНрд▓реЙрдХрд╕реЗрдкреА рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
рдкрд╣рд▓реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдЬреЛрдбрд╝реЗрдВ
ANIMATION_BLOCKTELEPORT = [ ('%s/blocks/portal2.png' % ICON_DIR), ('%s/blocks/portal1.png' % ICON_DIR)]
рдлрд┐рд░ рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВред
class BlockTeleport(Platform): def __init__(self, x, y, goX,goY): Platform.__init__(self, x, y) self.goX = goX
рдпрд╣рд╛рдВ рдХреБрдЫ рдирдпрд╛ рдирд╣реАрдВ рд╣реИред рдмрдирд╛рддреЗ рд╕рдордп, рди рдХреЗрд╡рд▓ рдкреЛрд░реНрдЯрд▓ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдирд╛рдпрдХ рдХреЗ рдЖрдВрджреЛрд▓рди рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рднреА рдЬрдм рдЯреЗрд▓реАрдлрд╝реЛрди рдореЗрдВ рд╣рд┐рдЯ рд╣реЛрддреЗ рд╣реИрдВред
рдЕрдЧрд▓рд╛, рдкреЛрд░реНрдЯрд▓ рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рд╣рдорд╛рд░реЗ рдирд╛рдпрдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
*** elif isinstance(p, blocks.BlockTeleport): self.teleporting(p.goX, p.goY) ***
рдФрд░ рдореИрдк рдореЗрдВ рдПрдХ рдкреЛрд░реНрдЯрд▓ рдЬреЛрдбрд╝реЗрдВред рдХреЗрд╡рд▓ рдЕрдм рд╣рдо рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗред рдЬрдм рд╣рдо рд╕реНрддрд░реАрдп рд╕рдВрдкрд╛рджрдХ рдмрдирд╛рддреЗ рд╣реИрдВ - рддреЛ рдпрд╣ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдПрдХ рдФрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╕рдореВрд╣ рдЬреЛрдбрд╝реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдирд┐рдореЗрдЯреЗрдб рдмреНрд▓реЙрдХ рд╣реЛрдВрдЧреЗ
animatedEntities = pygame.sprite.Group()
рдФрд░ рдПрдХ teleporter рдмрдирд╛рдПрдБред
tp = BlockTeleport(128,512,800,64) entities.add(tp) platforms.append(tp) animatedEntities.add(tp)
рдЕрдВрдд рдореЗрдВ, рд╕рднреА рдПрдирд┐рдореЗрдЯреЗрдб рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдкрд░
рдЕрдкрдбреЗрдЯ () рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЙрд▓ рдЬреЛрдбрд╝реЗрдВ
animatedEntities.update()
рдХреБрдЫ рдЗрд╕ рддрд░рд╣

рд░рд╛рдХреНрд╖рд╕реЛрдВ
рдбрд░рд╛рд╡рдирд╛, рдЪрд▓рддреА, рдШрд╛рддрдХ
рд░реЛрд╢рдиреАредрд░рд╛рдХреНрд╖рд╕реЛрдВ рдФрд░ рдШрд╛рддрдХ рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд░рд╛рдХреНрд╖рд╕ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рднреНрд░рдорд┐рдд рди рд╣реЛрдВред рдЪрд▓рд┐рдП рдЗрд╕реЗ рдмрд╣реБрдд рд╣реА рдореВрд▓ рд░реВрдк рд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ -
Monster.pyрдПрдХ рдирдпрд╛
рдореЙрдиреНрд╕реНрдЯрд░ рд╡рд░реНрдЧ рдмрдирд╛рдПрдБред рдЗрд╕рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реЛред
рд╕рдВрдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА
рдПрдХ рд░рд╛рдХреНрд╖рд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ 6 рддрд░реНрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
x ,
y - рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ,
рдмрд╛рдИрдВ - рдХреНрд╖реИрддрд┐рдЬ рдЧрддрд┐,
рдКрдкрд░ - рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдЧрддрд┐, рдЕрдзрд┐рдХрддрдо рдЧрддрд┐ред рдЕрдзрд┐рдХрддрдо рджреВрд░реА рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд░рд╛рдХреНрд╖рд╕ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдзрд┐рдХрддрдо рдЧрддрд┐
1 - рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди, рд▓реЗрдХрд┐рди рд▓рдВрдмрд╡рддред
рдЕрдм рдЖрдЧ рдХреЗ рд╕рдВрдкрд░реНрдХ рд╕реЗ рдирд╛рдпрдХ рдХреЛ рдореМрдд рдЬреЛрдбрд╝реЗрдВред
рддрд╛рд░ рдмрджрд▓реЗрдВ
if isinstance(p, blocks.BlockDie):
рдкрд░
if isinstance(p, blocks.BlockDie) or isinstance(p, monsters.Monster):
рдФрд░
рд░рд╛рдХреНрд╖рд╕реЛрдВ рдХреЗ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЖрдпрд╛рдд рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛
рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдПрдХ рд░рд╛рдХреНрд╖рд╕ рдХреА рд░рдЪрдирд╛ рдХреЛ рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рдЪрд▓реЛ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХрд╛ рдПрдХ рдФрд░ рд╕рдореВрд╣ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рд░рд╛рдХреНрд╖рд╕реЛрдВ рдХреЛ рдЬрдЧрд╣ рджреЗрдВрдЧреЗред
monsters = pygame.sprite.Group()
рдкреНрд░рд╢реНрди:
рд╣рдореЗрдВ рджреВрд╕рд░реЗ рд╕рдореВрд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдкрд┐рдЫрд▓рд╛ рдХреНрдпреЛрдВ рдЧрд╛рдпрдм рдерд╛? рд╕рдм рдХреЗ рдмрд╛рдж, рдПрдирд┐рдореЗрдЯреЗрдбрдЗрдВрдЯрд░рд╛рдЗрдЯ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдЧреНрд░реБрдк рдореЗрдВ, рд╣рдо рдЕрдкрдбреЗрдЯ ()
рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВрдЙрддреНрддрд░: рдкрд┐рдЫрд▓реЗ рд╕рдореВрд╣ рдореЗрдВ, рд╣рдо
рдЕрдкрдбреЗрдЯ () рд╡рд┐рдзрд┐ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рддрд░реНрдХ рдХреЗ рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░
рд░рд╛рдХреНрд╖рд╕реЛрдВ рд╕рдореВрд╣ рдореЗрдВ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
рд░рд╛рдХреНрд╖рд╕ рдХреЛ рд╣реА рдкреИрджрд╛ рдХрд░реЛред
mn = Monster(190,200,2,3,150,15) entities.add(mn) platforms.append(mn) monsters.add(mn)
рдФрд░ рдЙрд╕реЗ рд╣рд┐рд▓рд╛рдУ
monsters.update(platforms)
рд╣рдо рдкрд░рд┐рдгрд╛рдо рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред

рд░рд╛рдЬрдХреБрдорд╛рд░реА
рдХрд┐рд╕реА рднреА рдкреНрд▓рдВрдмрд░ рдХреЗ рд▓рд┐рдП рд╕рдореНрдорд╛рди рдХреА рдмрд╛рдд рд░рд╛рдЬрдХреБрдорд╛рд░реА рдХреЛ рдмрдЪрд╛рдирд╛ рд╣реИред
рд░рд╛рдЬрдХреБрдорд╛рд░реА рд╡рд░реНрдЧ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХрд╛ рдХреЛрдб рдирд╣реАрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред рдХреМрди рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИ -
рдмреНрд▓реЙрдХрд╕реАрдкреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджреЗрдЦреЗрдВ
рд╣рдо
рд╡рд┐рдЬреЗрддрд╛ рдЧреБрдг рдХреЛ рдЕрдкрдиреЗ рдЪрд░рд┐рддреНрд░ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рдиреНрдпрд╛рдп рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рд╕реНрддрд░ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
self.winner = False
рдФрд░
рдЯрдХрд░рд╛рдиреЗ () рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ
elif isinstance(p, blocks.Princess):
рдФрд░ рдлрд┐рд░, рд░рд╛рдЬрдХреБрдорд╛рд░реА рдирд┐рд░реНрдорд╛рдг рдХреЛрдб рд▓рд┐рдЦреЗрдВ
if col == "P": pr = Princess(x,y) entities.add(pr) platforms.append(pr) animatedEntities.add(pr)
"рдкреА" рдкреНрд░рддреАрдХ рдХреЛ рд╕реНрддрд░ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рдж рд░рдЦреЗрдВред
рдирдЬрд╝рд░

рд╕реНрддрд░
рдЕрдВрдд рдореЗрдВ рд╣рдо рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕реНрддрд░ рдкрд░ рдкрд╣реБрдВрдЪ рдЧрдПред рд╣рдо рдЙрдиреНрд╣реЗрдВ
рд╕реНрддрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦреЗрдВрдЧреЗред рдореИрдВ
1.txt рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдПрдХ рд╕реНрддрд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВ
[ ----------------------------------| - * -| - * *P -| ---- *--** --| - -- -| - -| - -| - -| -- ---- | - -| -- -| - ** -| - --- -| - -| - -| - --- -| - -| - -------- * ---- -| - -| - - -| - ** -- -| - * -| - ** -| --------------- *** -- -| - -| - -| ----------------------------------| ] player 55 44 portal 128 512 900 35 portal 170 512 700 64 monster 190 250 2 1 150 10 monster 190 400 2 3 150 150 monster 150 200 1 2 150 100 /
рд╣рдо рдпрд╣рд╛рдВ рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ? рдЗрд╕рдореЗрдВ рд╕реЗ рдХреБрдЫ рднреА рдЬрд┐рд╕реЗ рдЗрд╕ рдкрдж рдкрд░ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ (рдкрд╣рд▓реЗ рднрд╛рдЧ рд╕рд╣рд┐рдд)ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо
"[", "-", "*", "]", "|"рдЬрд╣рд╛рдВ
"[" - рдкрд╛рд░реНрд╕рд░ рдХреЛ рд╕реНрддрд░ рдХреА рд╢реБрд░реБрдЖрдд рджрд┐рдЦрд╛рддрд╛ рд╣реИ
"]" - рдХреНрд░рдорд╢рдГ, рд╕реНрддрд░ рдХрд╛ рдЕрдВрдд
"|" - рд▓рд╛рдЗрди рдХрд╛ рдЕрдВрдд
"-" - рдирд┐рдпрдорд┐рдд рдордВрдЪ
"*" - рд╕реНрдЯрдбреЗрдб рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо
рдлрд┐рд░, рд▓рд╛рдЗрди
"рдЦрд┐рд▓рд╛рдбрд╝реА 55 44" рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рдирд╛рдпрдХ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ
"рдкреЛрд░реНрдЯрд▓ 128 512 900 35" - рдкрд╣рд▓реЗ рджреЛ рдирдВрдмрд░ - рдкреЛрд░реНрдЯрд▓ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рджреВрд╕рд░реЗ - рдЖрдВрджреЛрд▓рди рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ
"рдореЙрдиреНрд╕реНрдЯрд░ 150 200 1 2 150 100" - рдкрд╣рд▓реЗ рджреЛ рдирдВрдмрд░, рдЗрд╕реА рддрд░рд╣, рд░рд╛рдХреНрд╖рд╕ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рдлрд┐рд░, рджреВрд╕рд░реЗ рджреЛ - рдЧрддрд┐ рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░, рдФрд░ рдЕрдВрддрд┐рдо - рдПрдХ рджрд┐рд╢рд╛ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рджреВрд░реА рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рд▓рдВрдмрд╡рддред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВ, рдЬрд┐рддрдиреЗ рдЪрд╛рд╣реЗрдВ рдЙрддрдиреЗ рдкреЛрд░реНрдЯрд▓ рдФрд░ рд░рд╛рдХреНрд╖рд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдЪрд░рд┐рддреНрд░
"/" рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рд╛ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ред
рдЕрдм, рддреЛрддрд╛ рд╣реА рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рд╣рдо рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗ рдореБрдЦреНрдп рднрд╛рдЧ () рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╕рднреА рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рд╕рдореВрд╣реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
*** level = [] entities = pygame.sprite.Group()
рдлрд┐рд░, рд╕реНрддрд░ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдЪрд░ рдЦрд╛рд▓реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░рд╛рдХреНрд╖рд╕реЛрдВ рдФрд░ рдкреЛрд░реНрдЯрд▓реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╣рдЯрд╛ рджреЗрдВред
рдФрд░ рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реЗрдВ
def loadLevel(): global playerX, playerY
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ рдФрд░ рдЪрд░
startX рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рд╣реАрд░реЛ рдХреЗ рд▓рд┐рдП рд╢реБрд░реБрдЖрддреА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ
startY ред
def main(): loadLevel() *** hero = Player(playerX,playerY)
рд░рд┐рдЬрд▓реНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ ред
рдЕрдм рд╕реНрддрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рд╛рде рд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╣рдо рд╕реНрддрд░ рд╕рдВрдкрд╛рджрдХ рдХреЛ рд╣реА рд▓рд┐рдЦреЗрдВрдЧреЗред
PS рдКрдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╕реНрддрд░ рдХрд╛рдлреА рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛рдПрдВред