From bed828e0b842b935e276be71fd306f376dcc03fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BB=D0=B0=D0=B2=D1=80=D0=B5=D0=B4=20=7C=20Glavred?= Date: Tue, 22 Sep 2020 15:22:34 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BE=D1=82=20=D0=93=D0=BB=D0=B0=D0=B2=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=B0=20=D0=93=D0=B8=D1=82=D0=96=D0=A1=20|=20Chang?= =?UTF-8?q?es=20of=20GitJS=20Glavred?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- загрузка|loading.js | 4 +- фишки|tiles.js | 139 +++++++++++++++++++++++++--------- фишки|tiles.череда | 17 ++++- функции|functions.js | 24 ++++++ 4 files changed, 143 insertions(+), 41 deletions(-) diff --git a/загрузка|loading.js b/загрузка|loading.js index af6c42d..e2c31c3 100644 --- a/загрузка|loading.js +++ b/загрузка|loading.js @@ -25,8 +25,8 @@ const ИМЯ_ОТЛ_РАСКЛАДКИ = "Отладочные раскладк ЗагрузитьОтладочнуюРаскладку = мир => { var модуль = мир.модули.модульПоИмени(ИМЯ_ОТЛ_РАСКЛАДКИ); - //var ресурс = "/успех|success.layout"; - var ресурс = "/провал|failure.layout"; + var ресурс = "/успех|success.layout"; + //var ресурс = "/провал|failure.layout"; var содержимое = модуль.содержимое[ресурс]; мир.раскладкаKMahjongg = { "содержимое": содержимое, diff --git a/фишки|tiles.js b/фишки|tiles.js index 90a03ed..9959afe 100644 --- a/фишки|tiles.js +++ b/фишки|tiles.js @@ -3,6 +3,106 @@ // // // // +ВывестиПобеду = мир => +{ + console.debug("ПОБЕДА"); +}; + + +// // // // + + +ВывестиПоражение = мир => +{ + console.debug("ПОРАЖЕНИЕ"); +}; + + +// // // // + + +ПроверитьНаличиеФишекНаИгровомПоле = мир => +{ + if (Object.keys(мир.индексыФишек).length > 0) + { + мир.уведомить("фишки на игровом поле присутствуют"); + } + else { + мир.уведомить("фишки на игровом поле отсутствуют"); + } +}; + + +// // // // + + +ВывестиПрисутствиеХодов = мир => +{ + console.debug("ходы есть"); +}; + + +// // // // + + +ВывестиОтсутствиеХодов = мир => +{ + console.debug("ходов нет"); +}; + + +// // // // + + +ПроверитьНаличиеХодов = мир => +{ + var номера = мир.доступныеДляВыбораНомераФишек; + for (var н0 in номера) + { + for (var н1 in номера) + { + // Пропускаем одну и ту же фишку. + if (н0 == н1) + { + continue; + } + var номер0 = номера[н0]; + var номер1 = номера[н1]; + var группа0 = мир.группыФишек[номер0]; + var группа1 = мир.группыФишек[номер1]; + if (группа0 == группа1) + { + мир.уведомить("ходы присутствуют"); + return; + } + } + } + + мир.уведомить("ходы отсутствуют"); +}; + + +// // // // + + +СобратьДоступныеДляВыбораНомераФишек = мир => +{ + мир.доступныеДляВыбораНомераФишек = []; + for (индекс in мир.индексыФишек) + { + if (фишкуМожноВыбрать(мир.индексыФишек, индекс)) + { + var фишка = мир.индексыФишек[индекс]; + var номер = номерФишки(мир.фишки, фишка.id); + мир.доступныеДляВыбораНомераФишек.push(номер); + } + } +}; + + +// // // // + + ЗапуститьПлавноеСкрытиеФишек = мир => { var шаг = 10; @@ -11,7 +111,6 @@ var дельтаПрозрачности = шаг / длительность; const анимация = setInterval( function() { - const позиции = мир.раскладкаKMahjongg.позиции; прозрачность -= дельтаПрозрачности; // Возвращаем прозрачность материалам перед последующим скрытием фишек. // И планируем выход из этой анимации. @@ -214,25 +313,6 @@ ОкраситьНайденнуюФишку = мир => { - /* - // Очищаем цвета всех фишек. - for (var номер in мир.фишки) - { - var фишка = мир.фишки[номер]; - var группа = мир.группыФишек[номер]; - var материал = мир.материалыФишек[группа]; - фишка.material = материал; - } - // Окрашиваем выбранные фишки. - for (var id in мир.номераВыбранныхФишек) - { - var номер = мир.номераВыбранныхФишек[id]; - var фишка = мир.фишки[номер]; - var группа = мир.группыФишек[номер]; - var материал = мир.материалыВыбранныхФишек[группа]; - фишка.material = материал; - } - */ var номер = мир.номерНайденнойФишки; var фишка = мир.фишки[номер]; var группа = мир.группыФишек[номер]; @@ -266,25 +346,12 @@ ПроверитьДоступностьФишкиДляВыбора = мир => { - // Проверяем заблокированность фишки одновременно с обеих сторон. var позиция = мир.раскладкаKMahjongg.позиции[мир.номерНайденнойФишки]; - var слева = уФишкиЕстьСоседи(мир.индексыФишек, позиция, 0, -2); - var справа = уФишкиЕстьСоседи(мир.индексыФишек, позиция, 0, 2); - if (слева && справа) - { - return; - } - - // Проверяем заблокированность сверху. - for (var смещениеСтолбца = -1; смещениеСтолбца < 2; ++смещениеСтолбца) + var индекс = индексПозицииФишки(позиция); + if (фишкуМожноВыбрать(мир.индексыФишек, индекс)) { - if (уФишкиЕстьСоседи(мир.индексыФишек, позиция, 1, смещениеСтолбца)) - { - return; - } + мир.уведомить("фишка доступна для выбора"); } - - мир.уведомить("фишка доступна для выбора"); }; diff --git a/фишки|tiles.череда b/фишки|tiles.череда index 751018b..1996d78 100644 --- a/фишки|tiles.череда +++ b/фишки|tiles.череда @@ -26,10 +26,10 @@ отключить возможность поиска фишки сравнить выбранные фишки фишки совпадают - вывести совпадение фишек +# вывести совпадение фишек плавно скрыть фишки фишки не совпадают - вывести различие фишек +# вывести различие фишек очистить окрашивание первой найденной фишки очистить выбор первой найденной фишки включить возможность поиска фишки @@ -40,4 +40,15 @@ скрыть совпадающие фишки очистить индексы выбранных фишек очистить выбор фишек - включить возможность поиска фишки \ No newline at end of file + собрать доступные для выбора номера фишек + проверить наличие ходов +ходы присутствуют + вывести присутствие ходов + включить возможность поиска фишки +ходы отсутствуют + вывести отсутствие ходов + проверить наличие фишек на игровом поле +фишки на игровом поле присутствуют + вывести поражение +фишки на игровом поле отсутствуют + вывести победу \ No newline at end of file diff --git a/функции|functions.js b/функции|functions.js index ccd31a2..61baa82 100644 --- a/функции|functions.js +++ b/функции|functions.js @@ -1,5 +1,29 @@ +фишкуМожноВыбрать = (индексы, индекс) => +{ + var позиция = позицияИндексаФишки(индекс); + // Проверяем заблокированность фишки одновременно с обеих сторон. + var слева = уФишкиЕстьСоседи(индексы, позиция, 0, -2); + var справа = уФишкиЕстьСоседи(индексы, позиция, 0, 2); + if (слева && справа) + { + return false; + } + + // Проверяем заблокированность сверху. + for (var смещениеСтолбца = -1; смещениеСтолбца < 2; ++смещениеСтолбца) + { + if (уФишкиЕстьСоседи(индексы, позиция, 1, смещениеСтолбца)) + { + return false; + } + } + + return true; +}; + + // // // //