Изменения от Главреда ГитЖС | Changes of GitJS Glavred
This commit is contained in:
65
⨐.js
Normal file
65
⨐.js
Normal 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];
|
||||
};
|
||||
Reference in New Issue
Block a user