Browse Source

Изменения от Главреда ГитЖС | Changes of GitJS Glavred

master
Главред | Glavred 3 years ago
parent
commit
e2f97932c7
5 changed files with 135 additions and 33 deletions
  1. +4
    -2
      0000
  2. +65
    -0
      ⨐.js
  3. +10
    -30
      🎬.js
  4. +3
    -1
      🎬.череда
  5. +53
    -0
      📖.js

+ 4
- 2
0000 View File

@@ -1,6 +1,8 @@
Механика Маджонга
0.1.0
0.2.0
https://git.opengamestudio.org/MAOH/MEXMA

x /⨐.js
x /🎬.js
/🎬.череда
/🎬.череда
x /📖.js

+ 65
- 0
⨐.js View File

@@ -0,0 +1,65 @@
фишкуМаджонгаМожноВыбрать = (индексы, индекс) =>
{
var позиция = позицияИндексаФишкиМаджонга(индекс);
// Проверяем заблокированность фишки одновременно с обеих сторон.
var слева = уФишкиМаджонгаЕстьСоседи(индексы, позиция, 0, -2);
var справа = уФишкиМаджонгаЕстьСоседи(индексы, позиция, 0, 2);
if (слева && справа)
{
return false;
}

// Проверяем заблокированность сверху.
for (var смещениеСтолбца = -1; смещениеСтолбца < 2; ++смещениеСтолбца)
{
if (уФишкиМаджонгаЕстьСоседи(индексы, позиция, 1, смещениеСтолбца))
{
return false;
}
}
return true;
};


// // // //


уФишкиМаджонгаЕстьСоседи = (индексы, позиция, смещениеСлоя, смещениеСтолбца) =>
{
for (var смещениеРяда = -1; смещениеРяда < 2; ++смещениеРяда)
{
var позицияСоседа = [
позиция[0] + смещениеСлоя,
позиция[1] + смещениеРяда,
позиция[2] + смещениеСтолбца,
];
var индексСоседа = индексПозицииФишкиМаджонга(позицияСоседа);
if (индексСоседа in индексы)
{
return true;
}
}
return false;
};


// // // //


позицияИндексаФишкиМаджонга = (индекс) =>
{
const x = Math.round(индекс / 1000000);
const y = Math.round((индекс - x * 1000000) / 1000);
const z = индекс - x * 1000000 - y * 1000;
return [x, y, z];
};


// // // //


индексПозицииФишкиМаджонга = (позиция) =>
{
return позиция[0] * 1000000 + позиция[1] * 1000 + позиция[2];
};

+ 10
- 30
🎬.js View File

@@ -1,4 +1,13 @@
const ЗАДЕРЖКА = 100;
ОчиститьИндексыФишекМаджонгаОтУбранных = мир =>
{
for (var номер in мир.убранныеФишкиМаджонга)
{
var н = мир.убранныеФишкиМаджонга[номер];
var позиция = мир.фишкиМаджонга[н]["📍"];
var индекс = индексПозицииФишкиМаджонга(позиция);
delete мир.индексыФишекМаджонга[индекс];
}
};


// // // //
@@ -50,33 +59,4 @@ const ЗАДЕРЖКА = 100;
{
мир.уведомить("выбрали пару фишек маджонга разных групп");
}
};


// // // //


ВыбратьФишкуМаджонга = мир =>
{
var номер = мир.фишкаМаджонгаДляВыбора;
// Отсекаем выбор одной и той же фишки.
if (
мир.выбраннаяФишкаМаджонга &&
мир.выбраннаяФишкаМаджонга == номер
) {
return;
}
мир.выбраннаяФишкаМаджонга = номер;
мир.выбранныеФишкиМаджонга.push(номер);
мир.уведомить("изменили выбранные фишки маджонга");
};


// // // //


ПодготовитьМеханикуМаджонга = мир =>
{
мир.выбранныеФишкиМаджонга = [];
мир.задержкаУбиранияФишекМаджонга = ЗАДЕРЖКА;
};

+ 3
- 1
🎬.череда View File

@@ -3,4 +3,6 @@
выбрали пару фишек маджонга разных групп
исключить из выбранных фишек маджонга первую
выбрали пару фишек маджонга одной группы
убрать выбранную пару фишек маджонга с задержкой
убрать выбранную пару фишек маджонга с задержкой
убрали фишки маджонга
очистить индексы фишек маджонга от убранных

+ 53
- 0
📖.js View File

@@ -0,0 +1,53 @@
const ЗАДЕРЖКА = 100;


// // // //


СоздатьИндексыФишекМаджонга = мир =>
{
мир.индексыФишекМаджонга = {};
for (var н in мир.фишкиМаджонга)
{
var позиция = мир.фишкиМаджонга[н]["📍"];
var индекс = индексПозицииФишкиМаджонга(позиция);
мир.индексыФишекМаджонга[индекс] = н;
};
};


// // // //


ВыбратьФишкуМаджонга = мир =>
{
var номер = мир.фишкаМаджонгаДляВыбора;
// Отсекаем выбор одной и той же фишки.
if (
мир.выбраннаяФишкаМаджонга &&
мир.выбраннаяФишкаМаджонга == номер
) {
return;
}
// Проверяем доступность с точки зрения правил Маджонга.
var позиция = мир.фишкиМаджонга[номер]["📍"];
var индекс = индексПозицииФишкиМаджонга(позиция);
if (!фишкуМаджонгаМожноВыбрать(мир.индексыФишекМаджонга, индекс))
{
return;
}

мир.выбраннаяФишкаМаджонга = номер;
мир.выбранныеФишкиМаджонга.push(номер);
мир.уведомить("изменили выбранные фишки маджонга");
};


// // // //


ПодготовитьМеханикуМаджонга = мир =>
{
мир.выбранныеФишкиМаджонга = [];
мир.задержкаУбиранияФишекМаджонга = ЗАДЕРЖКА;
};

Loading…
Cancel
Save