рдкреЗрд╢ рд╣реИ рдорд╛рд░реНрдорд▓реЗрдб рдХреНрд╡рд┐рдХ, рдлрд╛рд╕реНрдЯ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЦрд┐рд▓рд╛рдбрд╝реА



рд╢реБрдн рджреЛрдкрд╣рд░

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

рдЖрдк рдХреЛрд╢рд┐рд╢ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ ...

рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрд░рдмреНрдмрд╛ рддреНрд╡рд░рд┐рдд рд╣реИ?


рдореБрд░рдмреНрдмрд╛ рдХреНрд╡рд┐рдХ рдЖрдкрдХреЛ рд▓реБрдЖ рднрд╛рд╖рд╛ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдЕрдм рдЧреЗрдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреАрдЪ рдХрд╛рдлреА рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИред рд▓реБрдЖ рд▓реБрднрд╛ рд░рд╣реА рд╣реИ, рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдФрд░ рдХрд╛рдлреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рднрд╛рд╖рд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛: 2 рдбреА рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП Cocos2D-x, рднреМрддрд┐рдХреА рдХреЗ рд▓рд┐рдП Box2D рдФрд░ рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП SQLite, рдбреЗрдЯрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рд▓рд┐рдП JSONред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг 1.0 , рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдПрдкреАрдЖрдИ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛:

Marmalade Quick рдХрд╛ рдореВрд▓ " OpenQuick " рд╣реИ, рдЬреЛ Marmalade рдХреЛрдб рдХрд╛ рдПрдХ рдЦреБрд▓рд╛ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред
Marmalade Quick рдФрд░ OpenQuick рдХреЛ MIT рдХреЗ рддрд╣рдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИ ред
рдЖрдк рдЙрди рд╕рд╡рд╛рд▓реЛрдВ рдХреЛ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрддреНрддрд░ рдпрд╣рд╛рдВ рдмрд╣реБрдд рдЬрд▓реНрджреА рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред
рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдПрдкреАрдЖрдИ рдпрд╣рд╛рдБ рд╣реИ ред

рддреИрдпрд╛рд░реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛


  1. рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдореБрд░рдмреНрдмрд╛ рдПрд╕рдбреАрдХреЗ 6.2 рдФрд░ рдЙрдЪреНрдЪрддрд░ (30 рджрд┐рдиреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╕рдВрд╕реНрдХрд░рдг) рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ;
  2. рдбрд╛рдЙрдирд▓реЛрдб рдореБрд░рдмреНрдмрд╛ рддреНрд╡рд░рд┐рдд ред рдореБрд░рдмреНрдмрд╛ рдПрд╕рдбреАрдХреЗ (/ рддреНрд╡рд░рд┐рдд) рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдирдкреИрдХ рдХрд░реЗрдВ;
  3. / Quick / tools рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ quickLaunchPad.exe рдЪрд▓рд╛рдПрдБ;
  4. рдЖрдпрд╛рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ - рддреИрдпрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдЖрдпрд╛рдд, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЖрдк рдлрд╝реЛрд▓реНрдбрд░ / рддреНрд╡рд░рд┐рдд / рдбреЗрдЯрд╛ / рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рдХреЗ рдХрд╛рдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ;
  5. рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ - рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВ;

рд╣рдо рд╡рд┐рдХрд╛рд╕ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ


рдЖрдЦрд┐рд░ рдореЗрдВ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП? - рдмреЛрддрд▓! рд╣рдо рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдмреЛрддрд▓ рдХреЛ рдШреБрдорд╛рддреЗ рд╣реИрдВ рдФрд░ рдЬрд┐рд╕реЗ рднреА рдЧрд░реНрджрди рдорд┐рд▓рддреА рд╣реИ, рд╡рд╣ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред



рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рд╕реНрдерд╛рди рд╕реЛрд░реНрд╕ рд▓реЛрдХреЗрд╢рди рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдУрдкрди рдлреЛрд▓реНрдбрд░ рдХреЛ рдЦреЛрд▓реЗрдВ ред рд╡рд╣ рдлрд╝реЛрд▓реНрдбрд░ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реА рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ / рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ , рдФрд░ рдореБрдЦреНрдп рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ main.lua рд╣реИ , рд╣рдо рдЗрд╕рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

рд╕реНрдХреНрд░реАрди рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ:
local dx=director.displayWidth local dy=director.displayHeight 

рд╣рдо рдЙрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдорд╛рдкреЗрдВрдЧреЗ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди 1280x768 рд╕реЗ рдЕрдзрд┐рдХ рдХреА рд╕реНрдХреНрд░реАрди рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
 local skalex = dx/1280 local skaley = dy/768 

рдкрд╣рд▓рд╛ рджреГрд╢реНрдп рдмрдирд╛рдПрдВ рдЬрд╣рд╛рдВ рдмреЛрддрд▓реЛрдВ рдХреЛ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ (4 рд╕реЗ 10 рддрдХ):
 local scene1 = director:createScene() --   local fon = director:createSprite( { x=0, y=0, --       source="fon.jpg", --   xScale=skalex, yScale=skaley -- ,     1280x768 } ) --     local player4 = director:createSprite( { x=dx/2-360*skalex, y=dy/2, xAnchor=0.5, yAnchor=0.5, --   ,      ; 1 -   ; 0 -    source="but/player4.png", xScale=skalex, yScale=skaley } ) local player5 = director:createSprite( { x=dx/2-240*skalex, y=dy/2, xAnchor=0.5, yAnchor=0.5, source="but/player5.png", xScale=skalex, yScale=skaley } ) local player6 = director:createSprite( { x=dx/2-120*skalex, y=dy/2, xAnchor=0.5, yAnchor=0.5, source="but/player6.png", xScale=skalex, yScale=skaley } ) local player7 = director:createSprite( { x=dx/2, y=dy/2, xAnchor=0.5, yAnchor=0.5, source="but/player7.png", xScale=skalex, yScale=skaley } ) local player8 = director:createSprite( { x=dx/2+120*skalex, y=dy/2, xAnchor=0.5, yAnchor=0.5, source="but/player8.png", xScale=skalex, yScale=skaley } ) local player9 = director:createSprite( { x=dx/2+240*skalex, y=dy/2, xAnchor=0.5, yAnchor=0.5, source="but/player9.png", xScale=skalex, yScale=skaley } ) local player10 = director:createSprite( { x=dx/2+360*skalex, y=dy/2, xAnchor=0.5, yAnchor=0.5, source="but/player10.png", xScale=skalex, yScale=skaley } ) 

рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдХреБрдЫ рд╣реИ:



рдЕрдм рдПрдХ рджреВрд╕рд░рд╛ рджреГрд╢реНрдп рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдкреВрд░рд╛ рдЦреЗрд▓ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдмрд▓реНрдХрд┐ рдореИрдВ рд╡рд┐рд╕реНрддреГрдд рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред
 local scene2 = director:createScene() local fon = director:createSprite( { x=0, y=0, source="fon.jpg", xScale=skalex, yScale=skaley } ) --   local menu = director:createSprite( { x=dx, y=dy, xAnchor=1, yAnchor=1, source="menu.png", xScale=skalex, yScale=skaley } ) --  ""  local buty = director:createSprite( { x=dx/2, y=20, xAnchor=0.5, yAnchor=0, source="raskrutit.png", xScale=skalex, yScale=skaley } ) local neLez = nil --    local but = function() neLez = 2 tween:to(buty, { alpha=1, time=0.5, onComplete = kruti} ) --      0.5     "" (kruti). end local win_p = "WIN" -- ,     local fonz = function(event) audio:stopStream() --    r = math.random(1,42) --     1  42 s = "zadanie/"..r..".png" --   42   ,       --     local zadanie = director:createSprite( { x=dx/2, y=dy/2, --   xAnchor=0.5, yAnchor=0.5, source=s, xScale=skalex, yScale=skaley } ) --     "" local sdelano = director:createSprite( { x=dx/2, y=dy/2-180*skaley, xAnchor=0.5, yAnchor=0.5, source="sdelano.png", xScale=skalex, yScale=skaley } ) --  ,        local label = director:createLabel( { x=dx/2-90, y=dy/2+120, xAnchor=0.5, yAnchor=0.5, font="fonts/ComicSans24.fnt", --  ,   .fnt color={99, 61, 2}, --  xScale=3, yScale=3, --     3 text="Player "..win_p } ) local touchz = function(event) if event.phase == "began" then --    - began; ended -  ; moved -   ; tween:to(label, { alpha=0, time=0.5} ) --   tween:to(zadanie, { alpha=0, time=0.5} ) --   tween:to(sdelano, { alpha=0, time=0.5, onComplete = but} ) --   ""      but,      "" end end sdelano:addEventListener("touch", touchz) --   ("touch")   ""      touchz end local kruti = function(event) if event.phase == "ended" then --  if neLez == nil or neLez == 2 then local payer = math.random(1,360) -- ,    ,    1  360 win_p = math.ceil(payer/(360/players)) -- ,    ,      -- ,   local butyl = director:createSprite( { x=dx/2, y=dy/2, xAnchor=0.5, yAnchor=0.5, source=play_but, xScale=skalex, yScale=skaley } ) audio:playStreamWithLoop("mus.mp3", false) --  .mp3 ,    , false -   tween:to(buty, { alpha=0, time=0.5} ) --   "" tween:to(butyl, { rotation=payer+5400, easing=ease.expOut, easingValue=2, time=12} ) -- rotation -     ,        ,        15  (5400 ), easing=ease.expOut -    12  tween:to(butyl, { alpha=0.1, delay=14, time=1, onComplete = fonz } ) -- delay -  14 ,       0.1    fonz,        neLez = 1 end end end 




рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд╣рд▓реЗ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд┐рдпрдВрддреНрд░рдг, рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдХреЗрд╡рд▓ рдмреЛрддрд▓реЗрдВ рдЦреАрдВрдЪреА рдереАрдВ, рдФрд░ рдЕрдм рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд┐рдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
 local touch4 = function(event) --    4-  players = 4 --  ,     play_but = "but/4player.png" --  ,    if event.phase == "began" then --   director:moveToScene(scene2, {transitionType="crossFade", transitionTime=0.5}) --    2 end end local touch5 = function(event) players = 5 play_but = "but/5player.png" if event.phase == "began" then director:moveToScene(scene2, {transitionType="crossFade", transitionTime=0.5}) end end local touch6 = function(event) players = 6 play_but = "but/6player.png" if event.phase == "began" then director:moveToScene(scene2, {transitionType="crossFade", transitionTime=0.5}) end end local touch7 = function(event) players = 7 play_but = "but/7player.png" if event.phase == "began" then director:moveToScene(scene2, {transitionType="crossFade", transitionTime=0.5}) end end local touch8 = function(event) players = 8 play_but = "but/8player.png" if event.phase == "began" then director:moveToScene(scene2, {transitionType="crossFade", transitionTime=0.5}) end end local touch9 = function(event) players = 9 play_but = "but/9player.png" if event.phase == "began" then director:moveToScene(scene2, {transitionType="crossFade", transitionTime=0.5}) end end local touch10 = function(event) players = 10 play_but = "but/10player.png" if event.phase == "began" then director:moveToScene(scene2, {transitionType="crossFade", transitionTime=0.5}) end end local menu_back = function(event) --      if event.phase == "began" then audio:stopStream() director:moveToScene(scene1, {transitionType="crossFade", transitionTime=0.5}) --     end end player4:addEventListener("touch", touch4) --     4 player5:addEventListener("touch", touch5) --     5 player6:addEventListener("touch", touch6) --     6 player7:addEventListener("touch", touch7) --     7 player8:addEventListener("touch", touch8) --     8 player9:addEventListener("touch", touch9) --     9 player10:addEventListener("touch", touch10) --     10 buty:addEventListener("touch", kruti) --     "" menu:addEventListener("touch", menu_back) --     "" director:moveToScene(scene1) -- ,        ,              ,   ,     . 


рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдмреЛрддрд▓ рдШреВрдо рд░рд╣реА рд╣реИ, рд╕рдВрдЧреАрдд рдмрдЬ рд░рд╣рд╛ рд╣реИ ... рд▓реЛрдЧ рдкреВрд░рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ ...

рдПрдХ рдФрд░ рдмрд╛рдд рдЬреЛ рдореИрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдмреНрд▓реИрдХ рд╕реНрдХреНрд░реАрди рдкрд░, рдЙрд╕рдХреЗ рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдХреА рдЧрддрд┐ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░реЗрдВ:

рдпрд╣рд╛рдБ, рдЕрдм рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╕рдлрд▓рддрд╛!

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


All Articles