Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Подключение физики.
- local physics = require "physics"
- physics.start()
- physics.setGravity( 0, 0 )
- physics.setDrawMode"hybrid"
- -- Загрузка фона.
- local background = display.newRect (display.contentCenterX, display.contentCenterY, 400, 600);
- background:setFillColor (0.50, 0.55, 0.80);
- -- Загрузка круга.
- local circle = display.newCircle (display.contentCenterX , 400, 25);
- circle:setFillColor (0.35, 0.45, 0.80);
- -- Загрузка стен.
- -- 1-й ряд.
- local wall_1 = display.newRect (30, 270, 300, 18);
- wall_1:setFillColor (0.35, 0.45, 0.70);
- local wall_2 = display.newRect (420, 270, 300, 18);
- wall_2:setFillColor (0.35, 0.45, 0.70);
- -- 2-й ряд.
- local wall_3 = display.newRect (290, 170, 300, 18);
- wall_3:setFillColor (0.35, 0.45, 0.70);
- local wall_4 = display.newRect (-100, 170, 300, 18);
- wall_4:setFillColor (0.35, 0.45, 0.70);
- -- 3-й ряд.
- local wall_5 = display.newRect (50, 70, 300, 18);
- wall_5:setFillColor (0.35, 0.45, 0.70);
- local wall_6 = display.newRect (440, 70, 300, 18);
- wall_6:setFillColor (0.35, 0.45, 0.70);
- -- 4-й ряд.
- local wall_7 = display.newRect (350, -30, 300, 18);
- wall_7:setFillColor (0.35, 0.45, 0.70);
- local wall_8 = display.newRect (-40, -30, 300, 18);
- wall_8:setFillColor (0.35, 0.45, 0.70);
- -- Подключение физики к кругу.
- physics.addBody (circle, "dynamic", {radius = 20});
- --circle.gravityScale = 0;
- circle.isSensor = true;
- circle.isSleepingAllowed = false
- -- Подключение физики к стенам.
- physics.addBody (wall_1, "static");
- physics.addBody (wall_2, "static");
- physics.addBody (wall_3, "static");
- physics.addBody (wall_4, "static");
- physics.addBody (wall_5, "static");
- physics.addBody (wall_6, "static");
- physics.addBody (wall_7, "static");
- physics.addBody (wall_8, "static");
- -- Добавление ID к кругу.
- circle.ID = "Circle";
- -- Добавление ID к стенам.
- wall_1.ID = "Wall";
- wall_2.ID = "Wall";
- wall_3.ID = "Wall";
- wall_4.ID = "Wall";
- wall_5.ID = "Wall";
- wall_6.ID = "Wall";
- wall_7.ID = "Wall";
- wall_8.ID = "Wall";
- -- Функция "Движение и генерирование стен".
- local function Movement_and_generation_of_walls (event)
- local speed = 0.8;
- -- Движение стен.
- wall_1.y = wall_1.y + speed;
- wall_2.y = wall_1.y + speed;
- wall_3.y = wall_3.y + speed;
- wall_4.y = wall_3.y + speed;
- wall_5.y = wall_5.y + speed;
- wall_6.y = wall_5.y + speed;
- wall_7.y = wall_7.y + speed;
- wall_8.y = wall_7.y + speed;
- -- Генерирование стен.
- if (wall_1.y > 520) then
- wall_1.y = 120;
- elseif (wall_2.y > 520) then
- wall_2.y = 120;
- elseif (wall_3.y > 520) then
- wall_3.y = 120;
- elseif (wall_4.y > 520) then
- wall_4.y = 120;
- elseif (wall_5.y > 520) then
- wall_5.y = 120;
- elseif (wall_6.y > 520) then
- wall_6.y = 120;
- elseif (wall_7.y > 520) then
- wall_7.y = 120;
- elseif (wall_8.y > 520) then
- wall_8.y = 120;
- end
- end
- Runtime:addEventListener ("enterFrame", Movement_and_generation_of_walls);
- -- Функция "Управление кругом".
- local function Circle_control (event)
- local circle = event.target;
- local phase = event.phase;
- if ("began" == phase) then
- display.currentStage:setFocus (circle);
- circle.touchOffsetX = event.x - circle.x;
- elseif ("moved" == phase) then
- circle.x = event.x - circle.touchOffsetX;
- elseif ("ended" == phase or "cancelled" == phase) then
- display.currentStage:setFocus (nil);
- end
- return true;
- end
- circle:addEventListener ("touch", Circle_control);
- -- Функция "Столкновение между кругом и стеной".
- circle.collision = function (self, event)
- if (event.phase == "began") then
- if (self.ID == "Circle" and event.other.ID == "Wall") then
- End_of_the_game ();
- end
- end
- end
- circle:addEventListener ("collision", circle);
- -- Функция "Конец игры".
- function End_of_the_game ()
- Runtime:removeEventListener ("enterFrame", Movement_and_generation_of_walls);
- Runtime:removeEventListener ("collision", The_collision_between_the_circle_and_the_wall);
- circle:removeEventListener ("touch", Circle_control);
- circle:removeEventListener ("collision", circle);
- local Text_end_of_the_game = display.newText ("Вы проиграли!", display.contentCenterX, 100, native.systemFont, 40);
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement