Advertisement
Guest User

Untitled

a guest
Aug 17th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.48 KB | None | 0 0
  1. -- Подключение физики.
  2. local physics = require "physics"
  3. physics.start()
  4. physics.setGravity( 0, 0 )
  5. physics.setDrawMode"hybrid"
  6.  
  7. -- Загрузка фона.
  8. local background = display.newRect (display.contentCenterX, display.contentCenterY, 400, 600);
  9. background:setFillColor (0.50, 0.55, 0.80);
  10.  
  11. -- Загрузка круга.
  12. local circle = display.newCircle (display.contentCenterX , 400, 25);
  13. circle:setFillColor (0.35, 0.45, 0.80);
  14.  
  15. -- Загрузка стен.
  16. -- 1-й ряд.
  17. local wall_1 = display.newRect (30, 270, 300, 18);
  18. wall_1:setFillColor (0.35, 0.45, 0.70);
  19.  
  20. local wall_2 = display.newRect (420, 270, 300, 18);
  21. wall_2:setFillColor (0.35, 0.45, 0.70);
  22.  
  23. -- 2-й ряд.
  24. local wall_3 = display.newRect (290, 170, 300, 18);
  25. wall_3:setFillColor (0.35, 0.45, 0.70);
  26.  
  27. local wall_4 = display.newRect (-100, 170, 300, 18);
  28. wall_4:setFillColor (0.35, 0.45, 0.70);
  29.  
  30. -- 3-й ряд.
  31. local wall_5 = display.newRect (50, 70, 300, 18);
  32. wall_5:setFillColor (0.35, 0.45, 0.70);
  33.  
  34. local wall_6 = display.newRect (440, 70, 300, 18);
  35. wall_6:setFillColor (0.35, 0.45, 0.70);
  36.  
  37. -- 4-й ряд.
  38. local wall_7 = display.newRect (350, -30, 300, 18);
  39. wall_7:setFillColor (0.35, 0.45, 0.70);
  40.  
  41. local wall_8 = display.newRect (-40, -30, 300, 18);
  42. wall_8:setFillColor (0.35, 0.45, 0.70);
  43.  
  44. -- Подключение физики к кругу.
  45. physics.addBody (circle, "dynamic", {radius = 20});
  46. --circle.gravityScale = 0;
  47. circle.isSensor = true;
  48. circle.isSleepingAllowed = false
  49.  
  50. -- Подключение физики к стенам.
  51. physics.addBody (wall_1, "static");
  52. physics.addBody (wall_2, "static");
  53. physics.addBody (wall_3, "static");
  54. physics.addBody (wall_4, "static");
  55. physics.addBody (wall_5, "static");
  56. physics.addBody (wall_6, "static");
  57. physics.addBody (wall_7, "static");
  58. physics.addBody (wall_8, "static");
  59.  
  60. -- Добавление ID к кругу.
  61. circle.ID = "Circle";
  62.  
  63. -- Добавление ID к стенам.
  64. wall_1.ID = "Wall";
  65. wall_2.ID = "Wall";
  66. wall_3.ID = "Wall";
  67. wall_4.ID = "Wall";
  68. wall_5.ID = "Wall";
  69. wall_6.ID = "Wall";
  70. wall_7.ID = "Wall";
  71. wall_8.ID = "Wall";
  72.  
  73. -- Функция "Движение и генерирование стен".
  74. local function Movement_and_generation_of_walls (event)
  75. local speed = 0.8;
  76.  
  77. -- Движение стен.
  78.   wall_1.y = wall_1.y + speed;
  79.  
  80.   wall_2.y = wall_1.y + speed;
  81.  
  82.   wall_3.y = wall_3.y + speed;
  83.  
  84.   wall_4.y = wall_3.y + speed;
  85.  
  86.   wall_5.y = wall_5.y + speed;
  87.  
  88.   wall_6.y = wall_5.y + speed;
  89.  
  90.   wall_7.y = wall_7.y + speed;
  91.  
  92.   wall_8.y = wall_7.y + speed;
  93.  
  94. -- Генерирование стен.
  95.   if (wall_1.y > 520) then
  96.     wall_1.y = 120;
  97.   elseif (wall_2.y > 520) then
  98.     wall_2.y = 120;
  99.   elseif (wall_3.y > 520) then
  100.     wall_3.y = 120;
  101.   elseif (wall_4.y > 520) then
  102.     wall_4.y = 120;
  103.   elseif (wall_5.y > 520) then
  104.     wall_5.y = 120;
  105.   elseif (wall_6.y > 520) then
  106.     wall_6.y = 120;
  107.   elseif (wall_7.y > 520) then
  108.     wall_7.y = 120;
  109.   elseif (wall_8.y > 520) then
  110.     wall_8.y = 120;
  111.   end
  112. end
  113.  
  114. Runtime:addEventListener ("enterFrame", Movement_and_generation_of_walls);
  115.  
  116. -- Функция "Управление кругом".
  117. local function Circle_control (event)
  118.  
  119.   local circle = event.target;
  120.   local phase = event.phase;
  121.  
  122.   if ("began" == phase) then
  123. display.currentStage:setFocus (circle);
  124. circle.touchOffsetX = event.x - circle.x;
  125.  
  126.   elseif ("moved" == phase) then
  127. circle.x = event.x - circle.touchOffsetX;
  128.  
  129.   elseif ("ended" == phase or "cancelled" == phase) then
  130. display.currentStage:setFocus (nil);
  131. end
  132.  
  133.   return true;
  134.  
  135. end
  136.  
  137. circle:addEventListener ("touch", Circle_control);
  138.  
  139. -- Функция "Столкновение между кругом и стеной".
  140. circle.collision = function (self, event)
  141.  
  142.   if (event.phase == "began") then
  143.     if (self.ID == "Circle" and event.other.ID == "Wall") then
  144.       End_of_the_game ();
  145.     end
  146.   end
  147. end
  148. circle:addEventListener ("collision", circle);
  149.  
  150. -- Функция "Конец игры".
  151. function End_of_the_game ()
  152.  
  153.   Runtime:removeEventListener ("enterFrame", Movement_and_generation_of_walls);
  154.   Runtime:removeEventListener ("collision", The_collision_between_the_circle_and_the_wall);
  155.   circle:removeEventListener ("touch", Circle_control);
  156.   circle:removeEventListener ("collision", circle);
  157.  
  158.   local Text_end_of_the_game = display.newText ("Вы проиграли!", display.contentCenterX, 100, native.systemFont, 40);
  159.  
  160. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement