|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506 |
- /*
- *
- * Реакции
- *
- */
-
-
- ЗагрузитьРесурсыИзбы = мир =>
- {
- мир.сцена.load.audio("звук-избы", "ресурсы/звуки/387922__setuniman__scheming-1o95.mp3");
- мир.сцена.load.audio("звук-зарядки", "ресурсы/звуки/543927__eminyildirim__pistol-gun-cocking.wav");
- мир.сцена.load.audio("пуск-стрелы", "ресурсы/звуки/521552__omerbhatti34__arrow-impact.mp3");
- мир.сцена.load.audio("удар-стрелы", "ресурсы/звуки/330800__czarcazas__shattering-glass-small.mp3");
-
- мир.сцена.load.image("основа", "ресурсы/отладка/основа.jpg");
- мир.сцена.load.image("линия", "ресурсы/отладка/линия_вертикальная.png");
- мир.сцена.load.image("изба", "ресурсы/сцены/изба.jpg");
- мир.сцена.load.image("молоко", "ресурсы/вещи/банка_молока.png");
- мир.сцена.load.image("паук", "ресурсы/животные/паук.png");
- мир.сцена.load.image("мышь", "ресурсы/животные/мышь.png");
- мир.сцена.load.image("мышь", "ресурсы/животные/мышь.png");
- мир.сцена.load.image("самовар", "ресурсы/вещи/самовар.png");
- мир.сцена.load.image("стрела", "ресурсы/вещи/стрела.png");
- мир.сцена.load.image("окно-разбито", "ресурсы/вещи/окно_разбитая-часть.png");
- мир.сцена.load.image("окно-выломано", "ресурсы/вещи/окно_дыра.png");
- };
-
-
- // // // //
-
-
- СоздатьИзбу = мир =>
- {
- мир.сцена.sound.play("звук-избы", { loop: true });
-
- мир.сцена.add.image(0, 0, "изба").setOrigin(0, 0);
- };
-
-
- // // // //
-
-
- СоздатьПолыИСтеныКаркаса = мир =>
- {
- var полы = [
- {
- x: 0,
- y: 585,
- ширина: 43,
- },
- {
- x: 300,
- y: 585,
- ширина: 30,
- },
- {
- x: 510,
- y: 585,
- ширина: 200,
- },
- ];
- for (var номер in полы)
- {
- var пол = полы[номер];
- var элемент = мир.каркас.create(пол.x, пол.y, "основа").setOrigin(0, 0);
- элемент.setScale(пол.ширина, 1).refreshBody();
- элемент.setVisible(false);
- }
-
- var стены = [
- {
- x: 0,
- y: 385,
- высота: 50,
- },
- {
- x: 2000,
- y: 385,
- высота: 50,
- },
- ];
- for (var номер in стены)
- {
- var стена = стены[номер];
- var элемент = мир.каркас.create(стена.x, стена.y, "основа");
- элемент.setScale(1, стена.высота).refreshBody();
- элемент.setVisible(false);
- }
- };
-
-
- // // // //
-
-
- СоздатьПлатформы = мир =>
- {
- var п = [
- {
- x: 583,
- y: 473,
- ширина: 65,
- },
- // Полка 1.
- {
- x: 666,
- y: 335,
- ширина: 3,
- },
- // Полка молока.
- {
- x: 771,
- y: 335,
- ширина: 3,
- },
- // Полка 3.
- {
- x: 862,
- y: 335,
- ширина: 3,
- },
- // Полка самовара.
- {
- x: 995,
- y: 355,
- ширина: 4,
- },
- {
- x: 620,
- y: 245,
- ширина: 35,
- },
- {
- x: 950,
- y: 180,
- ширина: 12,
- },
- // Стол.
- {
- x: 1270,
- y: 427,
- ширина: 70,
- },
- // Окно.
- {
- x: 1690,
- y: 375,
- ширина: 20,
- },
- ];
- for (var номер in п)
- {
- var часть = п[номер];
- var элемент = мир.платформы.create(часть.x, часть.y, "основа").setOrigin(0, 0);
- элемент.setScale(часть.ширина, 1).refreshBody();
- элемент.setVisible(false);
- }
- };
-
-
- // // // //
-
-
- ПозволитьПлатформамПропускатьПрыжки = мир =>
- {
- мир.платформы.children.iterate(function(платформа) {
- платформа.body.checkCollision.down = false;
- платформа.body.checkCollision.left = false;
- платформа.body.checkCollision.right = false;
- });
- };
-
-
- // // // //
-
-
- СоздатьВещи = мир =>
- {
- var молоко = мир.сцена.physics.add.sprite(785, 240, "молоко");
- молоко.setScale(0.4, 0.4).refreshBody();
- молоко.depth = 5;
- мир.вещи.add(молоко);
-
- var самовар = мир.сцена.physics.add.sprite(1003, 200, "самовар");
- самовар.setScale(0.25, 0.25).refreshBody();
- самовар.depth = 5;
- мир.вещи.add(самовар);
- };
-
-
- // // // //
-
-
- СоздатьПауков = мир =>
- {
- мир.настройкиПауков = [
- {
- x: 620,
- y: 345,
- скорость: 50,
- низ: 550,
- верх: 270,
- },
- {
- x: 785,
- y: 375,
- скорость: 80,
- низ: 400,
- верх: 270,
- },
- {
- x: 930,
- y: 500,
- скорость: 70,
- низ: 550,
- верх: 270,
- },
- {
- x: 1003,
- y: 250,
- скорость: 40,
- низ: 400,
- верх: 200,
- },
- ];
- мир.пауки = [];
- мир.нитиПауков = [];
- for (var номер in мир.настройкиПауков)
- {
- var настройки = мир.настройкиПауков[номер];
- var паук = мир.враги.create(настройки.x, настройки.y, "паук");
- паук.body.setVelocityY(настройки.скорость);
- паук.depth = 10;
- мир.пауки.push(паук);
- var нить = мир.сцена.add.image(настройки.x - 1, настройки.верх - 25, "линия").setOrigin(0, 0);
- нить.depth = паук.depth;
- мир.нитиПауков.push(нить);
- }
- };
-
-
- // // // //
-
-
- АнимироватьПауков = мир =>
- {
- for (var номер in мир.пауки)
- {
- var паук = мир.пауки[номер];
- var нить = мир.нитиПауков[номер];
- var настройки = мир.настройкиПауков[номер];
- нить.displayHeight = паук.y - нить.y - 5;
- if (паук.y > настройки.низ)
- {
- паук.setVelocityY(-настройки.скорость);
- } else if (паук.y < настройки.верх)
- {
- паук.setVelocityY(настройки.скорость);
- }
- }
- };
-
-
- // // // //
-
-
- СоздатьМышей = мир =>
- {
- мир.настройкиМышей= [
- {
- x: 350,
- y: 575,
- скорость: 290,
- },
- {
- x: 740,
- y: 575,
- скорость: 375,
- },
- ];
- мир.мыши = [];
- for (var номер in мир.настройкиМышей)
- {
- var настройки = мир.настройкиМышей[номер];
- var мышь = мир.враги.create(настройки.x, настройки.y, "мышь");
- мышь.body.setVelocityX(настройки.скорость);
- мышь.depth = 10;
- мышь.flipX = true;
- мир.мыши.push(мышь);
- }
- };
-
-
- // // // //
-
-
- АнимироватьМышей = мир =>
- {
- for (var номер in мир.мыши)
- {
- var мышь= мир.мыши[номер];
- var скорость = мир.настройкиМышей[номер].скорость;
- if (мышь.x > 1950)
- {
- мышь.setVelocityX(-скорость);
- мышь.flipX = false;
- } else if (мышь.x < 50)
- {
- мышь.setVelocityX(скорость);
- мышь.flipX = true;
- }
- }
- };
-
-
- // // // //
-
-
- СоздатьСтрелы = мир =>
- {
- мир.пфСтрел = мир.сцена.physics.add.staticGroup();
- // Куча стрел.
- var куча = мир.пфСтрел.create(1270, 405, "основа").setOrigin(0, 0);
- куча.setScale(25, 2).refreshBody();
- куча.body.checkCollision.down = false;
- куча.setVisible(false);
- мир.сцена.physics.add.collider(мир.колобок, куча, function(a, b) {
- if (мир.колобок.body.touching.down) {
- мир.состояниеКолобка.прыжокПоСтрелам = true;
- }
- });
-
- мир.стрелаЗаряжена = false;
- мир.пускСтрелы = false;
-
- // Стрела лука.
- мир.стрелаЛука = мир.сцена.physics.add.sprite(1250, 380, "стрела").setOrigin(0, 0);
- мир.стрелаЛука.setScale(0.5, 0.5).refreshBody();
- мир.стрелаЛука.depth = 5;
- // Учитываем платформы.
- мир.сцена.physics.add.collider(мир.стрелаЛука, мир.каркас);
- мир.сцена.physics.add.collider(мир.стрелаЛука, мир.платформы);
-
- // Платформа для стрелы лука, чтобы оставаться в луке.
- var пфЛука = мир.пфСтрел.create(1280, 200, "основа").setOrigin(0, 0);
- пфЛука.body.checkCollision.down = false;
- пфЛука.setVisible(false);
- var стЛука = мир.сцена.physics.add.collider(мир.стрелаЛука, пфЛука);
-
- // Определение заряда стрелы.
- стЛука.collideCallback = function заряд(a, b) {
- if (мир.стрелаЛука.body.touching.down && !мир.стрелаЗаряжена)
- {
- мир.стрелаЗаряжена = true;
- мир.уведомить("стрела заряжена");
- }
- };
-
- // Определение пуска стрелы.
- var пфПуска = мир.пфСтрел.create(1270, 160, "основа").setOrigin(0, 0);
- пфПуска.setVisible(false);
- var стПуска = мир.сцена.physics.add.collider(пфПуска, мир.колобок);
- стПуска.collideCallback = function(a, b) {
- if (мир.стрелаЗаряжена && !мир.пускСтрелы)
- {
- мир.пускСтрелы = true;
- мир.уведомить("пуск стрелы");
- }
- };
- стПуска.overlapOnly = true;
-
- // Платформа для стрелы у окна, чтобы стрела не летела дальше.
- var пфОкна = мир.пфСтрел.create(1830, 200, "основа").setOrigin(0, 0);
- пфОкна.setScale(1, 20).refreshBody();
- var стОкна = мир.сцена.physics.add.collider(мир.стрелаЛука, пфОкна);
- пфОкна.setVisible(false);
- стОкна.collideCallback = function(a, b) {
- if (мир.стрелаЗаряжена && мир.пускСтрелы)
- {
- мир.стрелаЗаряжена = false;
- мир.пускСтрелы = false;
- мир.уведомить("удар стрелы об окно");
- }
- };
- };
-
-
- // // // //
-
-
- ОтследитьПрыжокПоСтрелам = мир =>
- {
- мир.состояниеКолобка.прыжокПоСтрелам = null;
- };
-
-
- // // // //
-
-
- ПроверитьНаличиеПрыжкаПоСтрелам = мир =>
- {
- if (!мир.состояниеКолобка.прыжокПоСтрелам)
- {
- return;
- }
- мир.уведомить("прыжок по платформе стрел");
- };
-
-
- // // // //
-
-
- ПодкидыватьСтрелуКЛуку = мир =>
- {
- if (!мир.стрелаЛука.body.touching.down || мир.стрелаЗаряжена)
- {
- return;
- }
- var скорость = мир.состояниеКолобка.скоростьПадения * 0.9;
- мир.стрелаЛука.setVelocityY(-скорость);
- };
-
-
- // // // //
-
-
- ВоспроизвестиЗвукЗарядкиСтрелы = мир =>
- {
- мир.сцена.sound.play("звук-зарядки");
- };
-
-
- // // // //
-
-
- ВоспроизвестиЗвукПускаСтрелы = мир =>
- {
- мир.сцена.sound.play("пуск-стрелы");
- };
-
-
- // // // //
-
-
- ПуститьСтрелу = мир =>
- {
- мир.стрелаЛука.setVelocityX(1200);
- };
-
-
- // // // //
-
-
- ВоспроизвестиЗвукУдараСтрелыОбОкно = мир =>
- {
- мир.сцена.sound.play("удар-стрелы");
- };
-
-
- // // // //
-
-
- ОтобразитьРазбитоеОкно = мир =>
- {
- var окно = мир.сцена.add.image(1660, 183, "окно-разбито");
- окно.setOrigin(0, 0).setScale(0.75, 0.75);
- };
-
-
- /*
- *
- * Последовательность
- *
- */
-
-
- мир.разобрать(`
- загрузить ресурсы сцены
- загрузить ресурсы избы
- создать сцену
- создать избу
- создать полы и стены каркаса
- создать платформы
- позволить платформам пропускать прыжки
- создать вещи
- создать пауков
- создать мышей
- создать стрелы
- обновить сцену
- анимировать пауков
- анимировать мышей
- колобок начал прыжок
- отследить прыжок по стрелам
- колобок закончил прыжок
- проверить наличие прыжка по стрелам
- прыжок по платформе стрел
- подкидывать стрелу к луку
- стрела заряжена
- воспроизвести звук зарядки стрелы
- пуск стрелы
- воспроизвести звук пуска стрелы
- пустить стрелу
- удар стрелы об окно
- воспроизвести звук удара стрелы об окно
- отобразить разбитое окно
- `);
-
|