Files
MEXMA/⨐.js

65 lines
2.2 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

фишкуМаджонгаМожноВыбрать = (индексы, индекс) =>
{
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];
};