рдЕрдЬрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЕрдЬрдЧрд░ рдореЗрдВ рдПрдХ platformer рд▓рд┐рдЦрдирд╛ред рднрд╛рдЧ 2 рд╕рдмрдкрд╛рд░реНрдЯ 2. рд╕реНрддрд░ рд╕рдВрдкрд╛рджрдХ


рдирдорд╕реНрдХрд╛рд░ рджреЛрд╕реНрддреЛрдВ! рдЖрдЬ рд╣рдо рдЕрдВрдд рдореЗрдВ рдЕрдкрдиреА рдорд╛рд░рд┐рдпреЛ рдХреА рд▓рдбрд╝рд╛рдИ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВрдЧреЗред рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБ рд╢реБрд░реВ рдХрд░реЛред рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рд╕реНрддрд░ рдХреЗ рд╕рдВрдкрд╛рджрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреА рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рддреИрдпрд╛рд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдкрд░рд┐рдЪрд┐рдд рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдХреЗ рд╕рд╛рде рдореИрдВ рд╕рдЬреНрдЬрдиреЛрдВ (рдХрд╛рдорд░реЗрдбреЛрдВ) рдХреА рдЦрдЯрд╛рд╕ рдФрд░ рдЯрд╛рд░рд╡рд┐рдЯреНрдЬрд╝ рдХрд╛ рдЖрднрд╛рд░реА рд╣реВрдБ

рдРрд╕рд╛ рдХреНрдпреЛрдВ?


рдЗрд╕рдХреЗ рдХрдИ рдХрд╛рд░рдг рд╣реИрдВред


рд╣рдо рдЕрдкрдиреЗ рдирд╛рдпрдХ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рдирд┐рдпрд╛рдБ рдФрд░ рдмрд╛рдзрд╛рдПрдБ рдкреИрджрд╛ рдХрд░рддреЗ рд╣реИрдВ


рдЖрдк рдЯрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рдорд╛рдирдЪрд┐рддреНрд░ рд╕рдВрдкрд╛рджрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ ред
рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрддрд░ рдмрдирд╛рдиреЗ рдХреЗ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред
рд╣рдорд╛рд░реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо 5 рдкрд░рддреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
  1. рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб - рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб
  2. рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо - рдмреНрд▓реЙрдХ, рдЬрд┐рд╕ рдкрд░ рдЖрдк рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ
  3. рдбрд╛рдпрдмреНрд▓реЙрдХ - рдирд╛рдпрдХ рдХреЛ рдЫреВрдиреЗ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХ рддрддреНрдХрд╛рд▓ рдореГрддреНрдпреБ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреЗ рд╣реИрдВ
  4. рд░рд╛рдХреНрд╖рд╕ - рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рдкрд░рдд, рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рд░рд╛рдХреНрд╖рд╕ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд░рд╛рдЬрдХреБрдорд╛рд░реА рдФрд░ рдирд╛рдпрдХ рднреА рд╣реИрдВ
  5. рдЯреЗрд▓реАрдкреЛрд░реНрдЯ - рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рдкрд░рдд, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП - рдпрд╣ рдирд╛рдо рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ



рдкреГрд╖реНрдарднреВрдорд┐

рдпрд╣рд╛рдВ рдЖрдк рдХреБрдЫ рднреА рдФрд░ рдХреБрдЫ рднреА рдЖрдХрд░реНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдкрд░рдд рд╕реЗ рдЯрд╛рдЗрд▓реЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирд╛рдпрдХ рдпрд╛ рдЦреЗрд▓ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ, рд╕рд┐рд╡рд╛рдп рд╢рд╛рдпрдж рдЦреЗрд▓ рдХреА рд╕реМрдВрджрд░реНрдп рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ :)


рдкрд░ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ

рдЗрд╕ рдкрд░рдд рдкрд░ рдЯрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬреЛ рдЦреЗрд▓ рдореЗрдВ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреА рд╣реИрдВ


рдШрд╛рддрдХ рдмреНрд▓реЙрдХ

рд╕рднреА рдЯрд╛рдЗрд▓реЗрдВ, рдЪрд╛рд╣реЗ рдХреЛрдИ рднреА рд╣реЛ, рдЪрд╛рд╣реЗ рд╕реНрдкрд╛рдЗрдХреНрд╕ рдпрд╛ рдИрдВрдЯ рдХреА рджреАрд╡рд╛рд░, рдЦреЗрд▓ рдореЗрдВ рдмреНрд▓реЙрдХрдбрд╛рдИ рдХреНрд▓рд╛рд╕ рдХреА рд╡рд╕реНрддреБрдПрдВ рдмрдирд╛рддреЗ рд╣реИрдВ


рд░рд╛рдХреНрд╖рд╕реЛрдВ

рдпрд╣ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рдкрд░рдд рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдЦреЗрд▓ рдореЗрдВ рдЯрд╛рдЗрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреБрдЫ рдЧреБрдг рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рд░рд╛рдХреНрд╖рд╕ рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдПрдБ, рдЬрд┐рдирдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХрд╛ рдирд┐рдореНрди рд░реВрдк рд╣реИ
class Monster(sprite.Sprite): def __init__(self, x, y, left, up, maxLengthLeft,maxLengthUp): 

рдЧреБрдгреЛрдВ рдХрд╛ рд╣реЛрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдЬреИрд╕реЗ: рдмрд╛рдПрдБ , рдЕрдзрд┐рдХрддрдо , рдКрдкрд░ , рдЕрдзрд┐рдХрддрдо - рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рдФрд░ x , y - рд╡рд╕реНрддреБ рдХреЗ рд╕реНрдерд╛рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд╖рд┐рддред


рдЪрд░рд┐рддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреНрд▓реЗрдпрд░ рдХрд╛ рдирд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП


рд░рд╛рдЬрдХреБрдорд╛рд░реА рд╡рд╕реНрддреБ рдХрд╛ рдирд╛рдо рд░рд╛рдЬрдХреБрдорд╛рд░реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП


рдкрд░рдд рдкреНрд░рдХрд╛рд░:


рдЯреЗрд▓реАрдкреЛрд░реНрдЯ

рдЗрд╕ рдкрд░рдд рдХреА рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдирд╛рдпрдХ рдХреА рдЪрд╛рд▓ рдХреЗ рдЕрдВрддрд┐рдо рдЧрдВрддрд╡реНрдп рдХреЗ рдЧреБрдг рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП: goX рдФрд░ goY

рдкрд░рдд:

рдЕрдВрддрд┐рдо рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреИрд╕реЗ рдкрддрд╛ рдХрд░реЗрдВ?

рдЖрд░рд╛рдо рд╕реЗ! рдорд╛рдЙрд╕ рдХрд░реНрд╕рд░ рдХреЛ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ рдЬрд╣рд╛рдВ рдЖрдк рдирд╛рдпрдХ рдХреЛ рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдиреАрдЪреЗ рдмрд╛рдИрдВ рдУрд░ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рджреЗрдЦреЗрдВ


рдЦреЗрд▓ рдХрд╛рд░реНрдб


рдЪрд▓реЛ рдЧреЗрдо рдХрд╛ рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдХреНрд░рдо рдореЗрдВ рдКрдкрд░ рдмрдирд╛рдП рдЧрдП рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓реЗрдВред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЧреЗрдо рд╕реЛрд░реНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлреЗрдВрдХ рджреЗрдВред
рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЖрдпрд╛рдд рдХрд░реЗрдВ
 import tmxreader #   tmx  import helperspygame #  tmx     pygame 

рдЕрдЧрд▓рд╛, рд╣рдо рд▓реЛрдбрд▓реЗрд╡реЗрд▓ () рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВрдЧреЗред
loadlevel
 def loadLevel(name): global playerX, playerY #   ,    global total_level_height, total_level_width global sprite_layers #    world_map = tmxreader.TileMapParser().parse_decode('%s/%s.tmx' % (FILE_DIR, name)) #   resources = helperspygame.ResourceLoaderPygame() #    resources.load(world_map) #      pygame  sprite_layers = helperspygame.get_layers_from_map(resources) #     #     0 -  , 1-  , 2 -    # 3 -   , 4 -    platforms_layer = sprite_layers[1] dieBlocks_layer = sprite_layers[2] for row in range(0, platforms_layer.num_tiles_x): #     for col in range(0, platforms_layer.num_tiles_y): if platforms_layer.content2D[col][row] is not None: pf = Platform(row * PLATFORM_WIDTH, col * PLATFORM_WIDTH)#       Platform platforms.append(pf) if dieBlocks_layer.content2D[col][row] is not None: bd = BlockDie(row * PLATFORM_WIDTH, col * PLATFORM_WIDTH) platforms.append(bd) teleports_layer = sprite_layers[4] for teleport in teleports_layer.objects: try: #       goX = int(teleport.properties["goX"]) * PLATFORM_WIDTH goY = int (teleport.properties["goY"]) * PLATFORM_HEIGHT x = teleport.x y = teleport.y - PLATFORM_HEIGHT tp = BlockTeleport(x, y, goX, goY) entities.add(tp) platforms.append(tp) animatedEntities.add(tp) except: #    ,       print(u"   ") monsters_layer = sprite_layers[3] for monster in monsters_layer.objects: try: x = monster.x y = monster.y if monster.name == "Player": playerX = x playerY = y - PLATFORM_HEIGHT elif monster.name == "Princess": pr = Princess(x, y - PLATFORM_HEIGHT) platforms.append(pr) entities.add(pr) animatedEntities.add(pr) else: up = int(monster.properties["up"]) maxUp = int(monster.properties["maxUp"]) left = int(monster.properties["left"]) maxLeft = int(monster.properties["maxLeft"]) mn = Monster(x, y - PLATFORM_HEIGHT, left, up, maxLeft, maxUp) entities.add(mn) platforms.append(mn) monsters.add(mn) except: print(u"   ") total_level_width = platforms_layer.num_tiles_x * PLATFORM_WIDTH #     total_level_height = platforms_layer.num_tiles_y * PLATFORM_HEIGHT #  


рд╣рдо рдпрд╣рд╛рдВ рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ?

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдм рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдо рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрддрд░ рдХреЗ рдирдХреНрд╢реЗ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реНрддрд░реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдХреНрд░рдордг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕рдХреЗ рдмрд╛рдж рдореИрдк рдХрд╛ рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рд░реВрдкрд╛рдВрддрд░рдг рдЖрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реА рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рдХрд┐ рд╣рдо рдПрдХ рдореИрдк рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЯрд╛рдЗрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдкрд░рддреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрдм рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдФрд░ рдмреНрд▓реЙрдХрдбрд╛рдИ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдирд┐рд░реНрдорд┐рдд рд╡рд╕реНрддреБрдПрдВ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд╕рдореВрд╣ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдЕрд░реНрдерд╛рддреНред рд╡реЗ рдореМрдЬреВрдж рд░рд╣реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдирдХреНрд╢реЗ рдкрд░рддреЛрдВ рд╕реЗ рдЯрд╛рдЗрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред

рдЬрд╛рд░реА рд░рд╣реЗрдЧрд╛

рдЕрдм рдореБрдЦреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ
рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░рддреЛрдВ рдХрд╛ рдПрдХ рд░реЗрдВрдбрд░рд░ рдЬреЛрдбрд╝реЗрдВ
 renderer = helperspygame.RendererPygame() #  

рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реИ - рдиреАрдЪреЗ рджреЗрдЦреЗрдВ

рдХреЙрд▓ рдХреЛ рд▓реЛрдбрд▓рд╡реЗрд▓ рдореЗрдВ рдмрджрд▓реЗрдВ
 for lvl in range(1,4): loadLevel("map_%s" % lvl) 

рдФрд░ рдЖрдЧреЗ, рд╕рднреА рдХреЛрдб рдЗрд╕ рд▓реВрдк рдореЗрдВ рд╣реЛрдВрдЧреЗ

рд╕реНрдХреНрд░реАрди рдкрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдореЗрдВ, рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХреЗ рдХрд╛рдо рдХреЛ рдЬреЛрдбрд╝реЗрдВ
 for sprite_layer in sprite_layers: #    if not sprite_layer.is_object_group: #       renderer.render_layer(screen, sprite_layer) #   *** center_offset = camera.reverse(CENTER_OF_SCREEN) #      renderer.set_camera_position_and_size(center_offset[0], center_offset[1], \ WIN_WIDTH, WIN_HEIGHT, "center") 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд░реЗрдВрдбрд░рд░ рдХреИрдорд░реЗ рдХреЗ рдмрдврд╝рддреЗ рдлреЛрдХрд╕ рдХреЗ рдЕрдВрджрд░, рд╕реНрдХреНрд░реАрди рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рдЕрдкрдиреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреИрдорд░рд╛ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдХреИрдорд░рд╛
 class Camera(object): def __init__(self, camera_func, width, height): self.camera_func = camera_func self.state = Rect(0, 0, width, height) def apply(self, target): return target.rect.move(self.state.topleft) def update(self, target): self.state = self.camera_func(self.state, target.rect) def reverse(self, pos):#      return pos[0] - self.state.left, pos[1] - self.state.top 



рдЖрдЗрдП рдирд┐рдХрд╛рд▓реЗрдВ рдХрд┐ рд▓реЛрдбрд▓реЗрд╡рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреНрдпрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдереЛрдбрд╝рд╛ рдирдпрд╛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╢реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
рдореБрдЦреНрдп
 def main(): pygame.init() #  PyGame,   screen = pygame.display.set_mode(DISPLAY) #   pygame.display.set_caption("Super Mario Boy") #    bg = Surface((WIN_WIDTH, WIN_HEIGHT)) #    #     renderer = helperspygame.RendererPygame() #  for lvl in range(1,4): loadLevel("levels/map_%s" % lvl) bg.fill(Color(BACKGROUND_COLOR)) #     left = right = False #   -  up = False running = False try: hero = Player(playerX, playerY) #    (x,y)  entities.add(hero) except: print (u"     ,   -") hero = Player(65, 65) entities.add(hero) timer = pygame.time.Clock() camera = Camera(camera_configure, total_level_width, total_level_height) while not hero.winner: #    timer.tick(60) for e in pygame.event.get(): #   if e.type == QUIT: raise SystemExit, "QUIT" if e.type == KEYDOWN and e.key == K_UP: up = True if e.type == KEYDOWN and e.key == K_LEFT: left = True if e.type == KEYDOWN and e.key == K_RIGHT: right = True if e.type == KEYDOWN and e.key == K_LSHIFT: running = True if e.type == KEYUP and e.key == K_UP: up = False if e.type == KEYUP and e.key == K_RIGHT: right = False if e.type == KEYUP and e.key == K_LEFT: left = False if e.type == KEYUP and e.key == K_LSHIFT: running = False for sprite_layer in sprite_layers: #    if not sprite_layer.is_object_group: #       renderer.render_layer(screen, sprite_layer) #   for e in entities: screen.blit(e.image, camera.apply(e)) animatedEntities.update() # a  monsters.update(platforms) #    camera.update(hero) #     center_offset = camera.reverse(CENTER_OF_SCREEN) renderer.set_camera_position_and_size(center_offset[0], center_offset[1], \ WIN_WIDTH, WIN_HEIGHT, "center") hero.update(left, right, up, running, platforms) #  pygame.display.update() #        screen.blit(bg, (0, 0)) #      for sprite_layer in sprite_layers: if not sprite_layer.is_object_group: renderer.render_layer(screen, sprite_layer) #    for e in entities: screen.blit(e.image, camera.apply(e)) #     font=pygame.font.Font(None,38) text=font.render(("Thank you MarioBoy! but our princess is in another level!"), 1,(255,255,255))#   screen.blit(text, (10,100)) pygame.display.update() time.wait(10000) #  10    -     


рдХреНрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ?

рдЗрд╕ рдФрд░ рд▓реЗрдЦ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╣рдордиреЗ рдЬреЛ рдЬрд╛рдВрдЪ рдХреА рдЙрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдШрдЯрдирд╛ рд╣реИ рдЬреЛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рд╣рдорд╛рд░рд╛ рдирд╛рдпрдХ рд░рд╛рдЬрдХреБрдорд╛рд░реА рдХреЛ рдЫреВрддрд╛ рд╣реИред рдЗрд╕ рд╕рдордп, рд╣рдо рдЗрд╕рдХреА рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░, рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдкрд░ рд▓реЛрдб рдХрд░рддреЗ рд╣реБрдП рдЕрдЧрд▓реА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред

рд╡рд╣ рд╕рдм рд╣реИред рддреЛ, рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ, рд╣рдо tmx рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рд╕реНрддрд░реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЗрдо рдХреЛ рд░реАрдореЗрдХ рдХрд░рддреЗ рд╣реИрдВред

рдЧреАрдереВрдм рдкрд░ рд╕реВрддреНрд░

Source: https://habr.com/ru/post/In204112/


All Articles