Колобок на Phaser
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

252 lines
6.1KB

  1. /*
  2. *
  3. * Реакции
  4. *
  5. */
  6. ЗагрузитьРесурсыИзбы = мир =>
  7. {
  8. мир.сцена.load.image("основа", "ресурсы/отладка/основа.jpg");
  9. мир.сцена.load.image("линия", "ресурсы/отладка/линия_вертикальная.png");
  10. мир.сцена.load.image("изба", "ресурсы/сцены/изба.jpg");
  11. мир.сцена.load.image("молоко", "ресурсы/вещи/банка_молока.png");
  12. мир.сцена.load.image("паук", "ресурсы/насекомые/паук.png");
  13. };
  14. // // // //
  15. СоздатьИзбу = мир =>
  16. {
  17. мир.сцена.add.image(0, 0, "изба").setOrigin(0, 0);
  18. };
  19. // // // //
  20. СоздатьПолыИСтеныКаркаса = мир =>
  21. {
  22. var полы = [
  23. {
  24. x: 0,
  25. y: 585,
  26. ширина: 43,
  27. },
  28. {
  29. x: 300,
  30. y: 585,
  31. ширина: 30,
  32. },
  33. {
  34. x: 510,
  35. y: 585,
  36. ширина: 200,
  37. },
  38. ];
  39. for (var номер in полы)
  40. {
  41. var пол = полы[номер];
  42. var элемент = мир.каркас.create(пол.x, пол.y, "основа").setOrigin(0, 0);
  43. элемент.setScale(пол.ширина, 1).refreshBody();
  44. элемент.setVisible(false);
  45. }
  46. var стены = [
  47. {
  48. x: 0,
  49. y: 385,
  50. высота: 50,
  51. },
  52. {
  53. x: 2000,
  54. y: 385,
  55. высота: 50,
  56. },
  57. ];
  58. for (var номер in стены)
  59. {
  60. var стена = стены[номер];
  61. var элемент = мир.каркас.create(стена.x, стена.y, "основа");
  62. элемент.setScale(1, стена.высота).refreshBody();
  63. элемент.setVisible(false);
  64. }
  65. };
  66. // // // //
  67. СоздатьПлатформы = мир =>
  68. {
  69. var п = [
  70. {
  71. x: 583,
  72. y: 473,
  73. ширина: 65,
  74. },
  75. {
  76. x: 666,
  77. y: 340,
  78. ширина: 3,
  79. },
  80. {
  81. x: 771,
  82. y: 340,
  83. ширина: 3,
  84. },
  85. {
  86. x: 862,
  87. y: 340,
  88. ширина: 3,
  89. },
  90. {
  91. x: 995,
  92. y: 345, // НАДО 345, чтобы не допрыгиать без помощи кота.
  93. ширина: 4,
  94. },
  95. {
  96. x: 620,
  97. y: 245,
  98. ширина: 35,
  99. },
  100. {
  101. x: 950,
  102. y: 180,
  103. ширина: 12,
  104. },
  105. {
  106. x: 1270,
  107. y: 427,
  108. ширина: 70,
  109. },
  110. {
  111. x: 1690,
  112. y: 375,
  113. ширина: 20,
  114. },
  115. ];
  116. for (var номер in п)
  117. {
  118. var часть = п[номер];
  119. var элемент = мир.платформы.create(часть.x, часть.y, "основа").setOrigin(0, 0);
  120. элемент.setScale(часть.ширина, 1).refreshBody();
  121. элемент.setVisible(false);
  122. }
  123. };
  124. // // // //
  125. ПозволитьПлатформамПропускатьПрыжки = мир =>
  126. {
  127. мир.платформы.children.iterate(function(платформа) {
  128. платформа.body.checkCollision.down = false;
  129. платформа.body.checkCollision.left = false;
  130. платформа.body.checkCollision.right = false;
  131. });
  132. };
  133. // // // //
  134. СоздатьВещи = мир =>
  135. {
  136. var молоко = мир.сцена.physics.add.sprite(830, 430, "молоко");
  137. молоко.setScale(0.5, 0.5).refreshBody();
  138. молоко.depth = 5;
  139. мир.вещи.add(молоко);
  140. };
  141. // // // //
  142. СоздатьПауков = мир =>
  143. {
  144. мир.настройкиПауков = [
  145. {
  146. x: 620,
  147. y: 345,
  148. скорость: 50,
  149. },
  150. {
  151. x: 740,
  152. y: 445,
  153. скорость: 65,
  154. },
  155. {
  156. x: 830,
  157. y: 375,
  158. скорость: 80,
  159. },
  160. {
  161. x: 930,
  162. y: 500,
  163. скорость: 70,
  164. },
  165. ];
  166. мир.пауки = [];
  167. мир.нитиПауков = [];
  168. for (var номер in мир.настройкиПауков)
  169. {
  170. var настройки = мир.настройкиПауков[номер];
  171. var паук = мир.враги.create(настройки.x, настройки.y, "паук");
  172. паук.body.setVelocityY(настройки.скорость);
  173. паук.depth = 10;
  174. мир.пауки.push(паук);
  175. var нить = мир.сцена.add.image(настройки.x - 1, 245, "линия").setOrigin(0, 0);
  176. нить.depth = паук.depth;
  177. мир.нитиПауков.push(нить);
  178. }
  179. };
  180. // // // //
  181. АнимироватьПауков = мир =>
  182. {
  183. for (var номер in мир.пауки)
  184. {
  185. var паук = мир.пауки[номер];
  186. var нить = мир.нитиПауков[номер];
  187. var скорость = мир.настройкиПауков[номер].скорость;
  188. нить.displayHeight = паук.y - нить.y - 5;
  189. if (паук.y > 550)
  190. {
  191. паук.setVelocityY(-скорость);
  192. } else if (паук.y < 270)
  193. {
  194. паук.setVelocityY(скорость);
  195. }
  196. }
  197. };
  198. /*
  199. *
  200. * Последовательность
  201. *
  202. */
  203. мир.разобрать(`
  204. загрузить ресурсы сцены
  205. загрузить ресурсы избы
  206. создать сцену
  207. создать избу
  208. создать полы и стены каркаса
  209. создать платформы
  210. позволить платформам пропускать прыжки
  211. создать пауков
  212. создать вещи
  213. обновить сцену
  214. анимировать пауков
  215. `);