152 lines
4.6 KiB
JavaScript
152 lines
4.6 KiB
JavaScript
const ЗАДЕРЖКА = 100;
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
УведомитьОРезультатеЕслиКонец = мир =>
|
||
{
|
||
if (мир.количествоХодовВМаджонге != 0)
|
||
{
|
||
return;
|
||
}
|
||
|
||
var фишкиОстались = Object.keys(мир.индексыФишекМаджонга).length > 0;
|
||
if (фишкиОстались)
|
||
{
|
||
мир.уведомить("поражение в маджонге");
|
||
}
|
||
else
|
||
{
|
||
мир.уведомить("победа в маджонге");
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ПодсчитатьКоличествоХодовВМаджонге = мир =>
|
||
{
|
||
var номера = мир.доступныеДляВыбораНомераФишекМаджонга;
|
||
var фишки = мир.фишкиМаджонга;
|
||
var ходов = 0;
|
||
|
||
for (var н0 in номера)
|
||
{
|
||
н0 = Number(н0);
|
||
// Исключаем уже просмотренные номера.
|
||
for (var н1 = н0 + 1; н1 < номера.length; ++н1)
|
||
{
|
||
var номер0 = номера[н0];
|
||
var номер1 = номера[н1];
|
||
var группа0 = фишки[номер0]["🚩"];
|
||
var группа1 = фишки[номер1]["🚩"];
|
||
if (группа0 == группа1)
|
||
{
|
||
++ходов;
|
||
}
|
||
}
|
||
}
|
||
|
||
мир.количествоХодовВМаджонге = ходов;
|
||
мир.уведомить("изменили количество ходов в маджонге");
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
СобратьДоступныеДляВыбораНомераФишекМаджонга = мир =>
|
||
{
|
||
var индексы = мир.индексыФишекМаджонга;
|
||
var номера = [];
|
||
|
||
for (индекс in индексы)
|
||
{
|
||
if (фишкуМаджонгаМожноВыбрать(индексы, индекс))
|
||
{
|
||
var номер = индексы[индекс];
|
||
номера.push(номер);
|
||
}
|
||
}
|
||
|
||
мир.доступныеДляВыбораНомераФишекМаджонга = номера;
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ОчиститьИндексыФишекМаджонгаОтУбранных = мир =>
|
||
{
|
||
for (var номер in мир.убранныеФишкиМаджонга)
|
||
{
|
||
var н = мир.убранныеФишкиМаджонга[номер];
|
||
var позиция = мир.фишкиМаджонга[н]["📍"];
|
||
var индекс = индексПозицииФишкиМаджонга(позиция);
|
||
delete мир.индексыФишекМаджонга[индекс];
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
УбратьВыбраннуюПаруФишекМаджонгаСЗадержкой = мир =>
|
||
{
|
||
setTimeout(
|
||
function() {
|
||
мир.убранныеФишкиМаджонга = мир.выбранныеФишкиМаджонга.slice();
|
||
мир.выбранныеФишкиМаджонга = [];
|
||
мир.уведомить("изменили выбранные фишки маджонга");
|
||
мир.уведомить("убрали фишки маджонга");
|
||
},
|
||
мир.задержкаУбиранияФишекМаджонга
|
||
);
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ИсключитьИзВыбранныхФишекМаджонгаПервую = мир =>
|
||
{
|
||
мир.выбранныеФишкиМаджонга.shift();
|
||
мир.уведомить("изменили выбранные фишки маджонга");
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
СравнитьПаруВыбранныхФишекМаджонга = мир =>
|
||
{
|
||
// Удостоверяемся в наличии двух фишек.
|
||
if (мир.выбранныеФишкиМаджонга.length != 2)
|
||
{
|
||
return;
|
||
}
|
||
var н1 = мир.выбранныеФишкиМаджонга[0];
|
||
var н2 = мир.выбранныеФишкиМаджонга[1];
|
||
var г1 = мир.фишкиМаджонга[н1]["🚩"];
|
||
var г2 = мир.фишкиМаджонга[н2]["🚩"];
|
||
if (г1 == г2)
|
||
{
|
||
мир.уведомить("выбрали пару фишек маджонга одной группы");
|
||
}
|
||
else
|
||
{
|
||
мир.уведомить("выбрали пару фишек маджонга разных групп");
|
||
}
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
ПодготовитьМеханикуМаджонга = мир =>
|
||
{
|
||
мир.выбранныеФишкиМаджонга = [];
|
||
мир.задержкаУбиранияФишекМаджонга = ЗАДЕРЖКА;
|
||
}; |