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 https://git.opengamestudio.org/MAOH/MEXMA


x /⨐.js
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