Колобок на 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.

307 lines
7.5KB

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