Browse Source

K 0.9.0

master
parent
commit
5449e11870
7 changed files with 376 additions and 47 deletions
  1. +2
    -1
      К/index.html
  2. +7
    -0
      К/игра/100.структура.js
  3. +53
    -21
      К/игра/110.колобок.js
  4. +146
    -25
      К/игра/111.изба.js
  5. +168
    -0
      К/игра/112.подпол.js
  6. BIN
      К/ресурсы/вещи/крышка-подпола.png
  7. BIN
      К/ресурсы/вещи/лестница.png

+ 2
- 1
К/index.html View File

@@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>К 0.8.0</title>
<title>К 0.9.0</title>
<script src="https://cdn.jsdelivr.net/npm/phaser@3.54.0/dist/phaser.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/phaser@3.54.0/dist/phaser.min.js"></script>
<style> <style>
html, body { html, body {
@@ -32,6 +32,7 @@
<script src="игра/109.управление.js"></script> <script src="игра/109.управление.js"></script>
<script src="игра/110.колобок.js"></script> <script src="игра/110.колобок.js"></script>
<script src="игра/111.изба.js"></script> <script src="игра/111.изба.js"></script>
<script src="игра/112.подпол.js"></script>
<script src="игра/200.отладка.js"></script> <script src="игра/200.отладка.js"></script>
<script src="игра/499.пуск.js"></script> <script src="игра/499.пуск.js"></script>
</body> </body>


+ 7
- 0
К/игра/100.структура.js View File

@@ -12,6 +12,7 @@ function создатьУзлыСценыПоСтруктуре(структур
delete свойства["y"]; delete свойства["y"];
delete свойства["texture"]; delete свойства["texture"];
delete свойства["группы"]; delete свойства["группы"];
delete свойства["после"];


// Создаём узел. // Создаём узел.
if (описание.тип == "изображение") if (описание.тип == "изображение")
@@ -51,5 +52,11 @@ function создатьУзлыСценыПоСтруктуре(структур
{ {
узел.refreshBody(); узел.refreshBody();
} }

// Выполняем дополнительные пользовательские действия.
if (описание.после)
{
описание.после(узел);
}
} }
} }

+ 53
- 21
К/игра/110.колобок.js View File

@@ -79,12 +79,29 @@


НастроитьСтолкновениеКолобка = мир => НастроитьСтолкновениеКолобка = мир =>
{ {
мир.сцена.physics.add.collider(мир.колобок, мир.каркас);
var столкновениеКаркас = мир.сцена.physics.add.collider(мир.колобок, мир.каркас);
столкновениеКаркас.collideCallback = function(a, каркас) {
if (мир.колобок.body.touching.down && каркас.body.touching.up && мир.колобок.прыжок)
{
мир.колобок.каркас = каркас.name;
мир.уведомить("колобок прыгнул на каркас");
}
};

мир.столкновениеПлатформы = мир.сцена.physics.add.collider(мир.колобок, мир.платформы); мир.столкновениеПлатформы = мир.сцена.physics.add.collider(мир.колобок, мир.платформы);


мир.столкновениеВещи = мир.сцена.physics.add.collider(мир.колобок, мир.вещи); мир.столкновениеВещи = мир.сцена.physics.add.collider(мир.колобок, мир.вещи);
мир.столкновениеВещи.collideCallback = function(a, вещь) { мир.столкновениеВещи.collideCallback = function(a, вещь) {
if (мир.колобок.body.touching.down && вещь.body.touching.up && мир.колобок.прыжок)
var кк = мир.колобок.body.touching;
var кв = вещь.body.touching;

if (!мир.передвигаемыеВещи)
{
мир.передвигаемыеВещи = { };
}
мир.передвигаемыеВещи[вещь.name] = new Date();

if (кк.down && кв.up && мир.колобок.прыжок)
{ {
мир.колобок.вещь = вещь.name; мир.колобок.вещь = вещь.name;
мир.уведомить("колобок прыгнул на вещь"); мир.уведомить("колобок прыгнул на вещь");
@@ -154,7 +171,10 @@


var скоростьПадения = мир.колобок.body.velocity.y; var скоростьПадения = мир.колобок.body.velocity.y;
if ( if (
(мир.колобок.скоростьПадения > 40) &&
(
мир.колобок.скоростьПадения > 40 ||
мир.колобок.скоростьПадения == 0
) &&
(скоростьПадения == 0) && (скоростьПадения == 0) &&
мир.колобок.body.touching.down мир.колобок.body.touching.down
) { ) {
@@ -218,23 +238,6 @@
// // // // // // // //




ОстановитьПередвижениеВещей = мир =>
{
var вещи = мир.вещи.getChildren();
for (var н in вещи)
{
var вещь = вещи[н];
if (вещь.body.touching.down)
{
вещь.body.stop();
}
}
};


// // // //


НачатьМиганиеКолобка = мир => НачатьМиганиеКолобка = мир =>
{ {
var конец = new Date(); var конец = new Date();
@@ -323,6 +326,35 @@
}; };




// // // //


ОстановитьСкользящиеВещи = мир =>
{
if (!мир.передвигаемыеВещи)
{
return;
}

var сейчас = new Date();
for (var имя in мир.передвигаемыеВещи)
{
var было = мир.передвигаемыеВещи[имя];
var узел = мир.узелСцены(имя);
if (узел && (сейчас - было > 20))
{
узел.body.stop();
delete мир.передвигаемыеВещи[имя];
}
}

if (!Object.keys(мир.передвигаемыеВещи).length)
{
мир.передвигаемыеВещи = null;
}
};


/* /*
* *
* Последовательность * Последовательность
@@ -344,7 +376,7 @@
анимировать колобка анимировать колобка
определить окончание прыжка колобка определить окончание прыжка колобка
мигать колобка мигать колобка
остановить передвижение вещей
остановить скользящие вещи
колобок начал прыжок колобок начал прыжок
воспроизвести звук прыжка воспроизвести звук прыжка
вывести начало прыжка в консоль вывести начало прыжка в консоль


+ 146
- 25
К/игра/111.изба.js View File

@@ -7,26 +7,39 @@


ЗагрузитьРесурсыИзбы = мир => ЗагрузитьРесурсыИзбы = мир =>
{ {
мир.сцена.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.audio("выломали-окно", "ресурсы/звуки/448004__kneeling__break-window.mp3");
мир.сцена.load.audio("молоко-перевернули", "ресурсы/звуки/235596__tcrocker68__large-glassbottle-fall-woodfloor.wav");
мир.сцена.load.audio("молоко-прыгнули", "ресурсы/звуки/352065__cabled-mess__glassy-bits-06.wav");
const звуки = {
"звук-избы": "ресурсы/звуки/387922__setuniman__scheming-1o95.mp3",
"звук-зарядки": "ресурсы/звуки/543927__eminyildirim__pistol-gun-cocking.wav",
"пуск-стрелы": "ресурсы/звуки/521552__omerbhatti34__arrow-impact.mp3",
"удар-стрелы": "ресурсы/звуки/330800__czarcazas__shattering-glass-small.mp3",
"выломали-окно": "ресурсы/звуки/448004__kneeling__break-window.mp3",
"молоко-перевернули": "ресурсы/звуки/235596__tcrocker68__large-glassbottle-fall-woodfloor.wav",
"молоко-прыгнули": "ресурсы/звуки/352065__cabled-mess__glassy-bits-06.wav",
};
for (var имя in звуки)
{
мир.сцена.load.audio(имя, звуки[имя]);
}


мир.сцена.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");
мир.сцена.load.image("окно-выломано", "ресурсы/вещи/окно_дыра.png");
const изображения = {
"основа": "ресурсы/отладка/основа.jpg",
"линия": "ресурсы/отладка/линия_вертикальная.png",
"изба": "ресурсы/сцены/изба.jpg",
"молоко": "ресурсы/вещи/банка_молока.png",
"лужа": "ресурсы/вещи/лужа.png",
"паук": "ресурсы/животные/паук.png",
"мышь": "ресурсы/животные/мышь.png",
"мышь": "ресурсы/животные/мышь.png",
"самовар": "ресурсы/вещи/самовар.png",
"стрела": "ресурсы/вещи/стрела.png",
"окно-разбито": "ресурсы/вещи/окно_разбитая-часть.png",
"окно-выломано": "ресурсы/вещи/окно_дыра.png",
"крышка-подпола": "ресурсы/вещи/крышка-подпола.png",
};
for (var имя in изображения)
{
мир.сцена.load.image(имя, изображения[имя]);
}
}; };




@@ -35,6 +48,16 @@


ЗадатьСтруктуруИзбы = мир => ЗадатьСтруктуруИзбы = мир =>
{ {
function платформаПрыжков(узел) {
var ограничить = узел.body.checkCollision;
ограничить.down = false;
ограничить.left = false;
ограничить.right = false;
}
function платформаКаркаса(узел) {
узел.body.checkCollision.down = false;
}

мир.изба = { мир.изба = {
фон: { фон: {
родитель: мир.сцена, родитель: мир.сцена,
@@ -49,6 +72,7 @@
полДоКрышки: { полДоКрышки: {
родитель: мир.каркас, родитель: мир.каркас,
тип: "платформа", тип: "платформа",
после: платформаКаркаса,
x: 0, x: 0,
y: 585, y: 585,
texture: "основа", texture: "основа",
@@ -60,14 +84,26 @@
полКрышки: { полКрышки: {
родитель: мир.каркас, родитель: мир.каркас,
тип: "платформа", тип: "платформа",
x: 300,
после: платформаКаркаса,
x: 360,
y: 585, y: 585,
texture: "основа", texture: "основа",
originX: 0, originX: 0,
originY: 0, originY: 0,
scaleX: 30,
scaleX: 16,
visible: false, visible: false,
}, },
крышка: {
родитель: мир.сцена,
тип: "изображение",
x: 357,
y: 605,
texture: "крышка-подпола",
originX: 0,
originY: 1,
scaleX: 0.4,
scaleY: 0.4,
},
полПослеКрышки: { полПослеКрышки: {
родитель: мир.каркас, родитель: мир.каркас,
тип: "платформа", тип: "платформа",
@@ -106,6 +142,7 @@
фундаментПечи: { фундаментПечи: {
родитель: мир.платформы, родитель: мир.платформы,
тип: "платформа", тип: "платформа",
после: платформаПрыжков,
x: 583, x: 583,
y: 473, y: 473,
texture: "основа", texture: "основа",
@@ -117,6 +154,7 @@
полка1: { полка1: {
родитель: мир.платформы, родитель: мир.платформы,
тип: "платформа", тип: "платформа",
после: платформаПрыжков,
x: 666, x: 666,
y: 335, y: 335,
texture: "основа", texture: "основа",
@@ -128,6 +166,7 @@
полкаМолока: { полкаМолока: {
родитель: мир.платформы, родитель: мир.платформы,
тип: "платформа", тип: "платформа",
после: платформаПрыжков,
x: 771, x: 771,
y: 335, y: 335,
texture: "основа", texture: "основа",
@@ -139,6 +178,7 @@
полка3: { полка3: {
родитель: мир.платформы, родитель: мир.платформы,
тип: "платформа", тип: "платформа",
после: платформаПрыжков,
x: 862, x: 862,
y: 335, y: 335,
texture: "основа", texture: "основа",
@@ -150,6 +190,7 @@
полкаСамовара: { полкаСамовара: {
родитель: мир.платформы, родитель: мир.платформы,
тип: "платформа", тип: "платформа",
после: платформаПрыжков,
x: 995, x: 995,
y: 355, y: 355,
texture: "основа", texture: "основа",
@@ -161,6 +202,7 @@
лежанкаПечи: { лежанкаПечи: {
родитель: мир.платформы, родитель: мир.платформы,
тип: "платформа", тип: "платформа",
после: платформаПрыжков,
x: 620, x: 620,
y: 245, y: 245,
texture: "основа", texture: "основа",
@@ -172,6 +214,7 @@
основаТрубыПечи: { основаТрубыПечи: {
родитель: мир.платформы, родитель: мир.платформы,
тип: "платформа", тип: "платформа",
после: платформаПрыжков,
x: 950, x: 950,
y: 180, y: 180,
texture: "основа", texture: "основа",
@@ -184,6 +227,7 @@
стол: { стол: {
родитель: мир.платформы, родитель: мир.платформы,
тип: "платформа", тип: "платформа",
после: платформаПрыжков,
x: 1270, x: 1270,
y: 427, y: 427,
texture: "основа", texture: "основа",
@@ -195,6 +239,7 @@
подоконник: { подоконник: {
родитель: мир.платформы, родитель: мир.платформы,
тип: "платформа", тип: "платформа",
после: платформаПрыжков,
x: 1690, x: 1690,
y: 375, y: 375,
texture: "основа", texture: "основа",
@@ -256,8 +301,8 @@
x: 1003, x: 1003,
y: 200, y: 200,
texture: "самовар", texture: "самовар",
scaleX: 0.25,
scaleY: 0.25,
scaleX: 0.2,
scaleY: 0.2,
depth: 5, depth: 5,
}, },


@@ -289,7 +334,7 @@
y: 375, y: 375,
texture: "паук", texture: "паук",
скорость: 70, скорость: 70,
низ: 600,
низ: 550,
верх: 270, верх: 270,
depth: 10, depth: 10,
}, },
@@ -440,6 +485,7 @@
// // // // // // // //




/*
ПозволитьПлатформамПропускатьПрыжки = мир => ПозволитьПлатформамПропускатьПрыжки = мир =>
{ {
мир.платформы.children.iterate(function(платформа) { мир.платформы.children.iterate(function(платформа) {
@@ -448,6 +494,7 @@
платформа.body.checkCollision.right = false; платформа.body.checkCollision.right = false;
}); });
}; };
*/




// // // // // // // //
@@ -849,6 +896,75 @@
}; };




// // // //


ПроверитьПрыжокПоКрышкеПодпола = мир =>
{
if (мир.колобок.каркас == "полКрышки")
{
мир.уведомить("колобок прыгнул по крышке подпола");
}
};


// // // //


НачатьПоворотКрышкиПодпола = мир =>
{
if (мир.крышка)
{
return;
}

мир.крышка = мир.узелСцены("крышка");
мир.крышка.поворот = 1;
};


// // // //


АнимироватьПоворотКрышкиПодпола = мир =>
{
if (!мир.крышка)
{
return;
}

var скорость = 4;

if (мир.крышка.поворот == 1)
{
мир.крышка.setAngle(мир.крышка.angle - скорость);
if (мир.крышка.angle <= -90)
{
мир.крышка.поворот = 2;
}
}
else if (мир.крышка.поворот == 2)
{
мир.узелСцены("полКрышки").body.checkCollision.none = true;
мир.крышка.поворот = 3;
setTimeout(
function() {
мир.крышка.поворот = 4;
},
5000
);
}
else if (мир.крышка.поворот == 4)
{
мир.крышка.setAngle(мир.крышка.angle + скорость);
if (мир.крышка.angle >= 0)
{
мир.узелСцены("полКрышки").body.checkCollision.none = false;
мир.крышка = null;
}
}
};

/* /*
* *
* Последовательность * Последовательность
@@ -863,7 +979,7 @@
задать структуру избы задать структуру избы
задать функцию поиска узла по имени задать функцию поиска узла по имени
создать избу создать избу
позволить платформам пропускать прыжки
# позволить платформам пропускать прыжки
настроить пауков настроить пауков
настроить мышей настроить мышей
настроить стрелы настроить стрелы
@@ -900,10 +1016,15 @@
перевернули молоко перевернули молоко
показать лужу молока показать лужу молока
воспроизвести звук переворота молока воспроизвести звук переворота молока
колобок прыгнул на каркас
проверить прыжок по крышке подпола
колобок прыгнул по крышке подпола
начать поворот крышки подпола


обновить сцену обновить сцену
анимировать пауков анимировать пауков
анимировать мышей анимировать мышей
анимировать переворот молока анимировать переворот молока
анимировать поворот крышки подпола
`); `);



+ 168
- 0
К/игра/112.подпол.js View File

@@ -0,0 +1,168 @@
/*
*
* Реакции
*
*/


ЗагрузитьРесурсыПодпола = мир =>
{
const изображения = {
"лестница": "ресурсы/вещи/лестница.png",
};
for (var имя in изображения)
{
мир.сцена.load.image(имя, изображения[имя]);
}
};


// // // //


ЗадатьСтруктуруПодпола = мир =>
{
function платформаПрыжков(узел) {
var ограничить = узел.body.checkCollision;
ограничить.down = false;
ограничить.left = false;
ограничить.right = false;
}

мир.подпол = {
полПодпола: {
родитель: мир.каркас,
тип: "платформа",
x: 0,
y: 1070,
texture: "основа",
originX: 0,
originY: 0,
scaleX: 250,
visible: true,
},

леваяСтенаПодпола: {
родитель: мир.каркас,
тип: "платформа",
x: 0,
y: 600,
texture: "основа",
originX: 0,
originY: 0,
scaleY: 60,
visible: false,
},
праваяСтенаПодпола: {
родитель: мир.каркас,
тип: "платформа",
x: 2000,
y: 600,
texture: "основа",
originX: 0,
originY: 0,
scaleY: 60,
visible: false,
},

лестница: {
родитель: мир.сцена,
тип: "изображение",
x: 300,
y: 590,
angle: 20,
texture: "лестница",
originX: 0,
originY: 0,
scaleX: 0.3,
scaleY: 0.4,
},

ступенька1: {
родитель: мир.платформы,
тип: "платформа",
после: платформаПрыжков,
x: 190,
y: 970,
texture: "основа",
originX: 0,
originY: 0,
scaleX: 5,
visible: false,
},
ступенька2: {
родитель: мир.платформы,
тип: "платформа",
после: платформаПрыжков,
x: 225,
y: 865,
texture: "основа",
originX: 0,
originY: 0,
scaleX: 5,
visible: false,
},
ступенька3: {
родитель: мир.платформы,
тип: "платформа",
после: платформаПрыжков,
x: 270,
y: 750,
texture: "основа",
originX: 0,
originY: 0,
scaleX: 5,
visible: false,
},
ступенька4: {
родитель: мир.платформы,
тип: "платформа",
после: платформаПрыжков,
x: 300,
y: 690,
texture: "основа",
originX: 0,
originY: 0,
scaleX: 5,
visible: false,
},
полкаПодпола1: {
родитель: мир.платформы,
тип: "платформа",
после: платформаПрыжков,
x: 600,
y: 865,
texture: "основа",
originX: 0,
originY: 0,
scaleX: 35,
visible: true,
},
};
};


// // // //


СоздатьПодпол = мир =>
{
создатьУзлыСценыПоСтруктуре(мир.подпол);
};


/*
*
* Последовательность
*
*/


мир.разобрать(`
загрузить ресурсы сцены
загрузить ресурсы подпола
создать сцену
задать структуру подпола
создать подпол
`);


BIN
К/ресурсы/вещи/крышка-подпола.png View File

Before After
Width: 341  |  Height: 74  |  Size: 38KB

BIN
К/ресурсы/вещи/лестница.png View File

Before After
Width: 329  |  Height: 1196  |  Size: 376KB

Loading…
Cancel
Save