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