Основа Маджонга | Mahjong's base
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.

156 line
5.0KB

  1. // // // //
  2. ВывестиПозицииРаскладкиKMahjongg = мир =>
  3. {
  4. console.debug("Позиции раскладки KMahjongg НАЧАЛО");
  5. const позиции = мир.раскладкаKMahjongg.позиции;
  6. for (var номер in позиции) {
  7. const позиция = позиции[номер];
  8. console.debug(позиция);
  9. }
  10. console.debug("Позиции раскладки KMahjongg КОНЕЦ");
  11. };
  12. // // // //
  13. РазобратьПозицииЭлементовРаскладкиKMahjongg = мир =>
  14. {
  15. const параметры = мир.раскладкаKMahjongg.параметры;
  16. const строки = мир.раскладкаKMahjongg.строки;
  17. var позиции = [];
  18. for (var номерСлоя = 0; номерСлоя < параметры.глубина; ++номерСлоя)
  19. {
  20. console.debug("cлой", номерСлоя);
  21. for (var ряд = 0; ряд < параметры.высота - 1; ++ряд)
  22. {
  23. for (var столбец = 0; столбец < параметры.ширина - 1; ++столбец)
  24. {
  25. const рядСлоя = ряд + (номерСлоя * параметры.высота);
  26. if (
  27. (строки[рядСлоя][столбец] == '1') &&
  28. (строки[рядСлоя][столбец + 1] == '2') &&
  29. (строки[рядСлоя + 1][столбец] == '4') &&
  30. (строки[рядСлоя + 1][столбец + 1] == '3')
  31. ) {
  32. позиции.push([номерСлоя, ряд, столбец]);
  33. }
  34. }
  35. }
  36. }
  37. мир.раскладкаKMahjongg.позиции = позиции;
  38. };
  39. // // // //
  40. ВывестиПараметрыРаскладкиKMahjongg = мир =>
  41. {
  42. console.debug("Параметры раскладки KMahjongg", JSON.stringify(мир.раскладкаKMahjongg.параметры));
  43. };
  44. // // // //
  45. РазобратьПараметрыРаскладкиKMahjongg = мир =>
  46. {
  47. var параметры = {
  48. "ширина": 32,
  49. "высота": 16,
  50. "глубина": 0,
  51. "версия": "1.0",
  52. };
  53. var префиксы = {
  54. "версия": "kmahjongg-layout-v",
  55. "глубина": "d",
  56. "ширина": "w",
  57. "высота": "h",
  58. };
  59. var удалитьЭлементов = 0;
  60. var строки = мир.раскладкаKMahjongg.строки;
  61. for (var номер in строки)
  62. {
  63. var строка = строки[номер];
  64. // Версия.
  65. if (строка.startsWith(префиксы.версия))
  66. {
  67. параметры.версия = строка.substring(префиксы.версия.length);
  68. }
  69. // Глубина.
  70. else if (строка.startsWith(префиксы.глубина))
  71. {
  72. параметры.глубина = строка.substring(префиксы.глубина.length);
  73. }
  74. // Ширина.
  75. else if (строка.startsWith(префиксы.ширина))
  76. {
  77. параметры.ширина = строка.substring(префиксы.ширина.length);
  78. }
  79. // Высота.
  80. else if (строка.startsWith(префиксы.высота))
  81. {
  82. параметры.высота = строка.substring(префиксы.высота.length);
  83. }
  84. else
  85. {
  86. удалитьЭлементов = номер;
  87. break;
  88. }
  89. }
  90. мир.раскладкаKMahjongg.строки.splice(0, удалитьЭлементов);
  91. if (параметры.глубина == 0)
  92. {
  93. параметры.глубина = мир.раскладкаKMahjongg.строки.length / параметры.высота;
  94. }
  95. мир.раскладкаKMahjongg.параметры = параметры;
  96. };
  97. // // // //
  98. ПодготовитьРаскладкуKMahjonggКРазбору = мир =>
  99. {
  100. var строки = мир.раскладкаKMahjongg.содержимое.split(/\n/);
  101. мир.раскладкаKMahjongg.строки = [];
  102. for (var номер in строки)
  103. {
  104. var строка = строки[номер].trim();
  105. // Пропускаем комментарии и пустые строки.
  106. if (строка.startsWith("#") || !строка.length)
  107. {
  108. continue;
  109. }
  110. мир.раскладкаKMahjongg.строки.push(строка);
  111. }
  112. };
  113. // // // //
  114. УведомитьОбОкончанииРазбораРаскладкиKMahjongg = мир =>
  115. {
  116. мир.уведомить("разобрали раскладку KMahjongg");
  117. };
  118. // // // //
  119. РазобратьРаскладкуKMahjongg = мир =>
  120. {
  121. мир.уведомить("надо разобрать раскладку KMahjongg");
  122. };