From 38e048de734de05a84fb4714192957f382f17724 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=9A=D0=B0=D0=BF?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BA=D0=BE?= Date: Thu, 15 Apr 2021 15:28:04 +0300 Subject: [PATCH] =?UTF-8?q?=D1=83=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 5 +- игра/109.управление.js | 105 ++++++++++++++++++ ...олобок.js => 110.колобок.js} | 31 ++++++ игра/{101.изба.js => 111.изба.js} | 0 4 files changed, 139 insertions(+), 2 deletions(-) create mode 100644 игра/109.управление.js rename игра/{100.колобок.js => 110.колобок.js} (61%) rename игра/{101.изба.js => 111.изба.js} (100%) diff --git a/index.html b/index.html index 1771c18..90fe613 100644 --- a/index.html +++ b/index.html @@ -8,8 +8,9 @@ - - + + + diff --git a/игра/109.управление.js b/игра/109.управление.js new file mode 100644 index 0000000..afe532f --- /dev/null +++ b/игра/109.управление.js @@ -0,0 +1,105 @@ +/* + * + * Реакции + * + */ + + +НастроитьМышь = мир => +{ + мир.сцена.input.mouse.disableContextMenu(); +}; + + +// // // // + + +УведомитьОМыши = мир => +{ + var мышь = мир.сцена.input.activePointer; + const новое = { + "x": мышь.worldX, + "y": мышь.worldY, + "нажата": мышь.isDown, + }; + if ( + мир.мышь && + мир.мышь.x == новое.x && + мир.мышь.y == новое.y && + мир.мышь.нажата == новое.нажата + ) { + // Ничего не делаем. + } + else + { + мир.мышь = новое; + мир.уведомить("изменили мышь"); + } +}; + + +// // // // + + +УведомитьОбУправлении = мир => +{ + const камера = мир.сцена.cameras.main; + const ширина = камера.width; + const высота = камера.height; + + var новое = { + "направление": 0, // Центр. + "прыжок": false, + }; + новое.прыжок = (мир.мышь.y < высота * 0.45); + if (мир.мышь.x < ширина * 0.45) + { + новое.направление = -1; // Лево. + } + else if (мир.мышь.x > ширина * 0.55) + { + новое.направление = 1; // Право. + } + + // Начало движения. + if (!мир.управление && мир.мышь.нажата) + { + мир.управление = новое; + мир.уведомить("изменили управление"); + } + // Окончание движения. + else if (мир.управление && !мир.мышь.нажата) + { + мир.управление = null; + мир.уведомить("изменили управление"); + } + // Продолжение движения. + else if ( + (мир.управление && мир.мышь.нажата) && + ( + (мир.управление.направление != новое.направление) || + (мир.управление.прыжок != новое.прыжок) + ) + ) { + мир.управление = новое; + мир.уведомить("изменили управление"); + } +}; + + +/* + * + * Последовательность + * + */ + + +мир.разобрать(` +создать сцену + настроить мышь +обновить сцену + уведомить о мыши +изменили мышь + уведомить об управлении +`); + diff --git a/игра/100.колобок.js b/игра/110.колобок.js similarity index 61% rename from игра/100.колобок.js rename to игра/110.колобок.js index bf3fe54..317d091 100644 --- a/игра/100.колобок.js +++ b/игра/110.колобок.js @@ -39,6 +39,35 @@ }; +// // // // + + +ПереместитьКолобка = мир => +{ + if (!мир.управление) + { + мир.колобок.setVelocityX(0); + return; + } + + var x = 0; + if (мир.управление.направление == -1) + { + x = -200; + } + else if (мир.управление.направление == 1) + { + x = 200; + } + мир.колобок.setVelocityX(x); + + if (мир.управление.прыжок && мир.колобок.body.touching.down) + { + мир.колобок.setVelocityY(-500); + } +}; + + /* * * Последовательность @@ -53,5 +82,7 @@ создать полы создать колобка создать столкновение колобка с полами +изменили управление + переместить колобка `); diff --git a/игра/101.изба.js b/игра/111.изба.js similarity index 100% rename from игра/101.изба.js rename to игра/111.изба.js