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>
<head>
<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>
<style>
html, body {
@@ -32,6 +32,7 @@
<script src="игра/109.управление.js"></script>
<script src="игра/110.колобок.js"></script>
<script src="игра/111.изба.js"></script>
<script src="игра/112.подпол.js"></script>
<script src="игра/200.отладка.js"></script>
<script src="игра/499.пуск.js"></script>
</body>


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

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

// Создаём узел.
if (описание.тип == "изображение")
@@ -51,5 +52,11 @@ function создатьУзлыСценыПоСтруктуре(структур
{
узел.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(мир.колобок, мир.вещи);
мир.столкновениеВещи.collideCallback = function(a, вещь) {
if (мир.колобок.body.touching.down && вещь.body.touching.up && мир.колобок.прыжок)
var кк = мир.колобок.body.touching;
var кв = вещь.body.touching;

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

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

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


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


// // // //


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

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


/*
ПозволитьПлатформамПропускатьПрыжки = мир =>
{
мир.платформы.children.iterate(function(платформа) {
@@ -448,6 +494,7 @@
платформа.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