МЕХаника МАджонга
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.

136 lines
4.3KB

  1. УведомитьОРезультатеЕслиКонец = мир =>
  2. {
  3. if (мир.количествоХодовВМаджонге != 0)
  4. {
  5. return;
  6. }
  7. var фишкиОстались = Object.keys(мир.индексыФишекМаджонга).length > 0;
  8. if (фишкиОстались)
  9. {
  10. мир.уведомить("поражение в маджонге");
  11. }
  12. else
  13. {
  14. мир.уведомить("победа в маджонге");
  15. }
  16. };
  17. // // // //
  18. ПодсчитатьКоличествоХодовВМаджонге = мир =>
  19. {
  20. var номера = мир.доступныеДляВыбораНомераФишекМаджонга;
  21. var фишки = мир.фишкиМаджонга;
  22. var ходов = 0;
  23. for (var н0 in номера)
  24. {
  25. н0 = Number(н0);
  26. // Исключаем уже просмотренные номера.
  27. for (var н1 = н0 + 1; н1 < номера.length; ++н1)
  28. {
  29. var номер0 = номера[н0];
  30. var номер1 = номера[н1];
  31. var группа0 = фишки[номер0]["🚩"];
  32. var группа1 = фишки[номер1]["🚩"];
  33. if (группа0 == группа1)
  34. {
  35. ++ходов;
  36. }
  37. }
  38. }
  39. мир.количествоХодовВМаджонге = ходов;
  40. мир.уведомить("изменили количество ходов в маджонге");
  41. };
  42. // // // //
  43. СобратьДоступныеДляВыбораНомераФишекМаджонга = мир =>
  44. {
  45. var индексы = мир.индексыФишекМаджонга;
  46. var номера = [];
  47. for (индекс in индексы)
  48. {
  49. if (фишкуМаджонгаМожноВыбрать(индексы, индекс))
  50. {
  51. var номер = индексы[индекс];
  52. номера.push(номер);
  53. }
  54. }
  55. мир.доступныеДляВыбораНомераФишекМаджонга = номера;
  56. };
  57. // // // //
  58. ОчиститьИндексыФишекМаджонгаОтУбранных = мир =>
  59. {
  60. for (var номер in мир.убранныеФишкиМаджонга)
  61. {
  62. var н = мир.убранныеФишкиМаджонга[номер];
  63. var позиция = мир.фишкиМаджонга[н]["📍"];
  64. var индекс = индексПозицииФишкиМаджонга(позиция);
  65. delete мир.индексыФишекМаджонга[индекс];
  66. }
  67. };
  68. // // // //
  69. УбратьВыбраннуюПаруФишекМаджонгаСЗадержкой = мир =>
  70. {
  71. setTimeout(
  72. function() {
  73. мир.убранныеФишкиМаджонга = мир.выбранныеФишкиМаджонга.slice();
  74. мир.выбранныеФишкиМаджонга = [];
  75. мир.уведомить("изменили выбранные фишки маджонга");
  76. мир.уведомить("убрали фишки маджонга");
  77. },
  78. мир.задержкаУбиранияФишекМаджонга
  79. );
  80. };
  81. // // // //
  82. ИсключитьИзВыбранныхФишекМаджонгаПервую = мир =>
  83. {
  84. мир.выбранныеФишкиМаджонга.shift();
  85. мир.уведомить("изменили выбранные фишки маджонга");
  86. };
  87. // // // //
  88. СравнитьПаруВыбранныхФишекМаджонга = мир =>
  89. {
  90. // Удостоверяемся в наличии двух фишек.
  91. if (мир.выбранныеФишкиМаджонга.length != 2)
  92. {
  93. return;
  94. }
  95. var н1 = мир.выбранныеФишкиМаджонга[0];
  96. var н2 = мир.выбранныеФишкиМаджонга[1];
  97. var г1 = мир.фишкиМаджонга[н1]["🚩"];
  98. var г2 = мир.фишкиМаджонга[н2]["🚩"];
  99. if (г1 == г2)
  100. {
  101. мир.уведомить("выбрали пару фишек маджонга одной группы");
  102. }
  103. else
  104. {
  105. мир.уведомить("выбрали пару фишек маджонга разных групп");
  106. }
  107. };