Правила раздела:
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.

Скрипт проверки в Крестики Нолики на событиях

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
6 года 7 мес. назад #113744 от Alexandr_7
Здравствуйте. Делаю мини игру Крестики Нолики на событиях.
Так вот:
За сами крастики и нолики отвечают 9 ивентов.
Правила:
Локальный переключатель А у ивента - Ивент не нажат.
Локальный переключатель B - X
Локальный переключатель C - 0

Так вот. Я сделал проверку на победу, поражения или ничью в 1 параллельном ивенте:
Code:
◆Комментарий:Победа игрока ◆Комментарий:По горизонтали ◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(1, 'B') === true && AScripts.gameOnMapGetSelfSwitches(2, 'B') === true && AScripts.gameOnMapGetSelfSwitches(3, 'B') === true ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ ◆Локальный переключатель:A = ВКЛ ◆ :Конец ◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(4, 'B') === true && AScripts.gameOnMapGetSelfSwitches(5, 'B') === true && AScripts.gameOnMapGetSelfSwitches(6, 'B') === true ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ ◆Локальный переключатель:A = ВКЛ ◆ :Конец ◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(7, 'B') === true && AScripts.gameOnMapGetSelfSwitches(8, 'B') === true && AScripts.gameOnMapGetSelfSwitches(9, 'B') === true ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ ◆Локальный переключатель:A = ВКЛ ◆ :Конец ◆Комментарий:По вертикали ◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(1, 'B') === true && AScripts.gameOnMapGetSelfSwitches(4, 'B') === true && AScripts.gameOnMapGetSelfSwitches(7, 'B') === true ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ ◆Локальный переключатель:A = ВКЛ ◆ :Конец ◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(2, 'B') === true && AScripts.gameOnMapGetSelfSwitches(5, 'B') === true && AScripts.gameOnMapGetSelfSwitches(8, 'B') === true ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ ◆Локальный переключатель:A = ВКЛ ◆ :Конец ◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(3, 'B') === true && AScripts.gameOnMapGetSelfSwitches(6, 'B') === true && AScripts.gameOnMapGetSelfSwitches(9, 'B') === true ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ ◆Локальный переключатель:A = ВКЛ ◆ :Конец ◆Комментарий:По диагонали ◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(1, 'B') === true && AScripts.gameOnMapGetSelfSwitches(5, 'B') === true && AScripts.gameOnMapGetSelfSwitches(9, 'B') === true ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ ◆Локальный переключатель:A = ВКЛ ◆ :Конец ◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(3, 'B') === true && AScripts.gameOnMapGetSelfSwitches(5, 'B') === true && AScripts.gameOnMapGetSelfSwitches(7, 'B') === true ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ ◆Локальный переключатель:A = ВКЛ ◆ :Конец ◆Комментарий:Победа врага ◆Комментарий:По горизонтали ◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(1, 'C') === true && AScripts.gameOnMapGetSelfSwitches(2, 'C') === true && AScripts.gameOnMapGetSelfSwitches(3, 'C') === true ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ ◆Локальный переключатель:B = ВКЛ ◆ :Конец ◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(4, 'C') === true && AScripts.gameOnMapGetSelfSwitches(5, 'C') === true && AScripts.gameOnMapGetSelfSwitches(6, 'C') === true ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ ◆Локальный переключатель:B = ВКЛ ◆ :Конец ◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(7, 'C') === true && AScripts.gameOnMapGetSelfSwitches(8, 'C') === true && AScripts.gameOnMapGetSelfSwitches(9, 'C') === true ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ ◆Локальный переключатель:B = ВКЛ ◆ :Конец ◆Комментарий:По вертикали ◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(1, 'C') === true && AScripts.gameOnMapGetSelfSwitches(4, 'C') === true && AScripts.gameOnMapGetSelfSwitches(7, 'C') === true ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ ◆Локальный переключатель:B = ВКЛ ◆ :Конец ◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(2, 'C') === true && AScripts.gameOnMapGetSelfSwitches(5, 'C') === true && AScripts.gameOnMapGetSelfSwitches(8, 'C') === true ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ ◆Локальный переключатель:B = ВКЛ ◆ :Конец ◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(3, 'C') === true && AScripts.gameOnMapGetSelfSwitches(6, 'C') === true && AScripts.gameOnMapGetSelfSwitches(9, 'C') === true ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ ◆Локальный переключатель:B = ВКЛ ◆ :Конец ◆Комментарий:По диагонали ◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(1, 'C') === true && AScripts.gameOnMapGetSelfSwitches(5, 'C') === true && AScripts.gameOnMapGetSelfSwitches(9, 'C') === true ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ ◆Локальный переключатель:B = ВКЛ ◆ :Конец ◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(3, 'C') === true && AScripts.gameOnMapGetSelfSwitches(5, 'C') === true && AScripts.gameOnMapGetSelfSwitches(7, 'C') === true ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ ◆Локальный переключатель:B = ВКЛ ◆ :Конец ◆Комментарий:Ничья ◆Если:Скрипт:AScripts.gameOnMapGetArraySelfSwitches(1, 9, 'A', false) === true ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ ◆Локальный переключатель:C = ВКЛ ◆ :Конец
Но в итоге сильная просадка. Очень сильная. Очевидно из за очень множеств проверок включая циключность:
Вот что выполняют gameOnMapGetSelfSwitches и gameOnMapGetArraySelfSwitches
Code:
static gameOnMapGetSelfSwitches(aIDEvent, aSelfSwitch) { var key = [$gameMap.mapId(), aIDEvent, aSelfSwitch]; return $gameSelfSwitches.value(key); } static gameOnMapGetArraySelfSwitches(aIDEventStart, aIDEventStop, aSelfSwitch, aIsSelfSwitchs) { var key; var a = 0, b = 0; for (var i = aIDEventStart; i <= aIDEventStop; i++){ key = [$gameMap.mapId(), i, aSelfSwitch]; a++; if ($gameSelfSwitches.value(key) === aIsSelfSwitchs){ b++; } } return a === b; }
Нужно переделать проверку. Может кто знает как. Или если у кого есть другой вариант создания мини игры Крестики Нолики то тоже пишите.

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Проект месяца 3 место Оратор Тестер
Больше
6 года 7 мес. назад #113745 от VeselyRodger
Звучит как вызов)

Мои проекты:
rpgmakerunion.ru/user/veselyrodger
Мой канал на Ютубе:
youtube.com/channel/UCyttExMfXo8ke_PhQjNPyuw

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
6 года 7 мес. назад #113748 от Alexandr_7
Это не вызов. Мне пригодится любая помощь. Не хочу делать мини игры полностью на скриптах хотя можно и полностью на скрипте но плагина я не нашел. Да и если полностью на плагине то тут вопрос встает об креативе.

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Оратор 1 место в Готв 3 место Готв 2 место Учитель Композитор Победитель конкурса Организатор конкурсов
Больше
6 года 7 мес. назад #113749 от yuryol
демку прикладывай, иначе ниче непонятно. отвечаю практически наугад так как разбираться в твоей писанине без бухла трудно

1) В ивенте у тебя куча "если". Причем даже если первый "если" выдает "тру" то все-равно идет проверка второго и последующего "если". Выход: добавь "если..иначе". Тогда проверка дальше не пойдет

2) Для меньшей писанины можно заменить выражения типа AScripts.gameOnMapGetSelfSwitches(1, 'B') === true на просто AScripts.gameOnMapGetSelfSwitches(1, 'B').

3) А еще лучше - написать отдельную функцию которая принимает номера трех переключателей и выводит "тру" если все они "тру"
Code:
isVictory = (switch1, switch2, switch3) => { return AScripts.gameOnMapGetSelfSwitches(switch1, 'B') && AScripts.gameOnMapGetSelfSwitches(switch2, 'B') && AScripts.gameOnMapGetSelfSwitches(switch3, 'B') }

4) Зачем аще параллельное событие? Оно у тебя постоянно работает? Крестики-нолики пошаговая же игра. Активируй проверку после каждого хода.
Например можно запускать эту проверку из событий крестиков и ноликов на каждой их странице Б и С. Причем проверка идет не всех вариантов а только тех, в которых есть это событие. Таким образом у тебя будет проверка трех вариантов а не девяти

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
6 года 7 мес. назад - 6 года 7 мес. назад #113750 от Alexandr_7

yuryol пишет: демку прикладывай, иначе ниче непонятно. отвечаю практически наугад так как разбираться в твоей писанине без бухла трудно

1) В ивенте у тебя куча "если". Причем даже если первый "если" выдает "тру" то все-равно идет проверка второго и последующего "если". Выход: добавь "если..иначе". Тогда проверка дальше не пойдет

2) Для меньшей писанины можно заменить выражения типа AScripts.gameOnMapGetSelfSwitches(1, 'B') === true на просто AScripts.gameOnMapGetSelfSwitches(1, 'B').

3) А еще лучше - написать отдельную функцию которая принимает номера трех переключателей и выводит "тру" если все они "тру"

Code:
isVictory = (switch1, switch2, switch3) => { return AScripts.gameOnMapGetSelfSwitches(switch1, 'B') && AScripts.gameOnMapGetSelfSwitches(switch2, 'B') && AScripts.gameOnMapGetSelfSwitches(switch3, 'B') }

4) Зачем аще параллельное событие? Оно у тебя постоянно работает? Крестики-нолики пошаговая же игра. Активируй проверку после каждого хода.
Например можно запускать эту проверку из событий крестиков и ноликов на каждой их странице Б и С. Причем проверка идет не всех вариантов а только тех, в которых есть это событие. Таким образом у тебя будет проверка трех вариантов а не девяти

1. Ну и что. Если условие выполняется то код дальше идти не должен так как врубается локальный переключатель.
2. Так есть уже -
Code:
static gameOnMapGetArraySelfSwitches(aIDEventStart, aIDEventStop, aSelfSwitch, aIsSelfSwitchs) { var key; var a = 0, b = 0; for (var i = aIDEventStart; i <= aIDEventStop; i++){ key = [$gameMap.mapId(), i, aSelfSwitch]; a++; if ($gameSelfSwitches.value(key) === aIsSelfSwitchs){ b++; } } return a === b; }
Правдо ее нужно изменить а то работает она громоздко. Думаю както можно ее облегчить но пока не нашел как.
3 -Ну так отдельная функция и есть - выше. Она проверет являются ли все локальные переключатели в указаной пачке ивентов включенными или выключенными.

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 6 года 7 мес. назад пользователем Alexandr_7.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Оратор 1 место в Готв 3 место Готв 2 место Учитель Композитор Победитель конкурса Организатор конкурсов
Больше
6 года 7 мес. назад #113751 от yuryol
после твоего ответа я аще ни черта не понял. учись задавать вопросы. уже который раз вижу твои вопросы с кучей текста. При этом сама суть не рассказана, комментов в коде самих функций нету, названиея функций аще ппц.

1. Название функции gameOnMapGetArraySelfSwitches - игра на карте возвращает массив локальный переключателей. ШО?

1) get - в названиях функций ставь первым словом глагол. Есл возвращает значение то get. Елси булевой значение то is. у тебя возвращает а===б. Результатом будет тру или фолс. значит надо писать is, а не get
2) GetArray - дословно возвращает массив. но мы ведь возвращаем не массив а булевое значние
3) gameOnMap зачем аще тут? в gameOnMapGetSelfSwitches тоже можно выкинуть и название функции читаемее станет - getSelfSwitches
4) по сути вся функция нужна чтоб определить ничья ли. так и назови ее isDraw или IsNoVictory или как там ничь по-английски. То что ничья проверяется переключателями - это аще не важно,зачем в название это пихать. А если ты изменишь проверку не по переключателям а например по переменным то будешь переименовывать функцию? Поэтому называй функцию по результату а не по логике внутри функции

2. Хз только зачем эта функция нужна? если у тебя нет победы врага и нет победы героя то и так ясно что ничья.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
6 года 7 мес. назад #113754 от Alexandr_7

yuryol пишет: после твоего ответа я аще ни черта не понял. учись задавать вопросы. уже который раз вижу твои вопросы с кучей текста. При этом сама суть не рассказана, комментов в коде самих функций нету, названиея функций аще ппц.

1. Название функции gameOnMapGetArraySelfSwitches - игра на карте возвращает массив локальный переключателей. ШО?

1) get - в названиях функций ставь первым словом глагол. Есл возвращает значение то get. Елси булевой значение то is. у тебя возвращает а===б. Результатом будет тру или фолс. значит надо писать is, а не get
2) GetArray - дословно возвращает массив. но мы ведь возвращаем не массив а булевое значние
3) gameOnMap зачем аще тут? в gameOnMapGetSelfSwitches тоже можно выкинуть и название функции читаемее станет - getSelfSwitches
4) по сути вся функция нужна чтоб определить ничья ли. так и назови ее isDraw или IsNoVictory или как там ничь по-английски. То что ничья проверяется переключателями - это аще не важно,зачем в название это пихать. А если ты изменишь проверку не по переключателям а например по переменным то будешь переименовывать функцию? Поэтому называй функцию по результату а не по логике внутри функции

2. Хз только зачем эта функция нужна? если у тебя нет победы врага и нет победы героя то и так ясно что ничья.

gameOnMap означает что функция будет действовать только на карте на которой находится игрок. Проще говоря на локации с игроком. Вообще то функция что выше это проверка включены ли или выключены ли все локальные переключатели у иветов
Это не только для крестики ноликит. AScripts - Это плагин с облегчающими скриптами чтобы в самой игре не писать грамоздкие скрипты.

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
6 года 7 мес. назад #113755 от Alexandr_7

yuryol пишет: после твоего ответа я аще ни черта не понял. учись задавать вопросы. уже который раз вижу твои вопросы с кучей текста. При этом сама суть не рассказана, комментов в коде самих функций нету, названиея функций аще ппц.

1. Название функции gameOnMapGetArraySelfSwitches - игра на карте возвращает массив локальный переключателей. ШО?

1) get - в названиях функций ставь первым словом глагол. Есл возвращает значение то get. Елси булевой значение то is. у тебя возвращает а===б. Результатом будет тру или фолс. значит надо писать is, а не get
2) GetArray - дословно возвращает массив. но мы ведь возвращаем не массив а булевое значние
3) gameOnMap зачем аще тут? в gameOnMapGetSelfSwitches тоже можно выкинуть и название функции читаемее станет - getSelfSwitches
4) по сути вся функция нужна чтоб определить ничья ли. так и назови ее isDraw или IsNoVictory или как там ничь по-английски. То что ничья проверяется переключателями - это аще не важно,зачем в название это пихать. А если ты изменишь проверку не по переключателям а например по переменным то будешь переименовывать функцию? Поэтому называй функцию по результату а не по логике внутри функции

2. Хз только зачем эта функция нужна? если у тебя нет победы врага и нет победы героя то и так ясно что ничья.

Ну я так понял вот так:
Code:
static SetGameOnMapSelfSwitches(aIDEvent, aSelfSwitch, aBool) { var key = [$gameMap.mapId(), aIDEvent, aSelfSwitch]; $gameSelfSwitches.setValue(key, aBool); } static SetGameOnMapArraySelfSwitches(aIDEventStart, aIDEventStop, aSelfSwitch, aBool) { var key; for (var i = aIDEventStart; i <= aIDEventStop; i++){ key = [$gameMap.mapId(), i, aSelfSwitch]; $gameSelfSwitches.setValue(key, aBool); } } static IsGameOnMapSelfSwitches(aIDEvent, aSelfSwitch) { var key = [$gameMap.mapId(), aIDEvent, aSelfSwitch]; return $gameSelfSwitches.value(key); } static IsGameOnMapArraySelfSwitches(aIDEventStart, aIDEventStop, aSelfSwitch, aIsSelfSwitchs) { var key; var a = 0, b = 0; for (var i = aIDEventStart; i <= aIDEventStop; i++){ key = [$gameMap.mapId(), i, aSelfSwitch]; a++; if ($gameSelfSwitches.value(key) === aIsSelfSwitchs){ b++; } } return a ===b; }
Ну и вроде бы написал функцию которая будет проверять победу поражения ничью или продолжение игры:
Code:
static IfTicTacToe(aIDEventStart, aSelfSwitchCross, aSelfSwitchToe, aSelfSwitchDraw) { var cells = '-'; var cell1 = aIDEventStart; var cell2 = aIDEventStart + 3; var cell3 = aIDEventStart + 6; if ( IsGameOnMapArraySelfSwitches(cell1, cell1 + 2, aSelfSwitchCross, true) || IsGameOnMapArraySelfSwitches(cell2, cell2 + 2, aSelfSwitchCross, true)|| IsGameOnMapArraySelfSwitches(cell3, cell3 + 2, aSelfSwitchCross, true)|| IsGameOnMapArraySelfSwitches(IsGameOnMapSelfSwitches(cell1, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell2, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell3, aSelfSwitchCross))|| IsGameOnMapArraySelfSwitches(IsGameOnMapSelfSwitches(cell1 + 1, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell2 + 1, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell3 + 1, aSelfSwitchCross))|| IsGameOnMapArraySelfSwitches(IsGameOnMapSelfSwitches(cell1 + 2, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell2 + 2, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell3 + 2, aSelfSwitchCross))|| IsGameOnMapArraySelfSwitches(IsGameOnMapSelfSwitches(cell1, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell2 + 1, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell3 + 2, aSelfSwitchCross))|| IsGameOnMapArraySelfSwitches(IsGameOnMapSelfSwitches(cell1 + 2, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell2 + 1, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell3, aSelfSwitchCross)) ) cells = 'x'; else if ( IsGameOnMapArraySelfSwitches(cell1, cell1 + 2, aSelfSwitchToe, true) || IsGameOnMapArraySelfSwitches(cell2, cell2 + 2, aSelfSwitchToe, true)|| IsGameOnMapArraySelfSwitches(cell3, cell3 + 2, aSelfSwitchToe, true)|| (IsGameOnMapSelfSwitches(cell1, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell2, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell3, aSelfSwitchToe))|| (IsGameOnMapSelfSwitches(cell1 + 1, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell2 + 1, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell3 + 1, aSelfSwitchToe))|| (IsGameOnMapSelfSwitches(cell1 + 2, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell2 + 2, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell3 + 2, aSelfSwitchToe))|| (IsGameOnMapSelfSwitches(cell1, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell2 + 1, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell3 + 2, aSelfSwitchToe))|| (IsGameOnMapSelfSwitches(cell1 + 2, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell2 + 1, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell3, aSelfSwitchToe)) ) cells = '0'; else if (IsGameOnMapArraySelfSwitches(aIDEventStart, aIDEventStart + 8, aSelfSwitchDraw, false)) cells = '+'; else cells = '-'; return cells; }

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
6 года 7 мес. назад #113800 от Alexandr_7
И так вот функция:
Code:
static IfTicTacToe(aIDEventStart, aSelfSwitchCross, aSelfSwitchToe, aSelfSwitchDraw) { var cells = '-'; var cell1 = aIDEventStart; var cell2 = aIDEventStart + 3; var cell3 = aIDEventStart + 6; if (IsArraySelfSwitches(undefined, cell1, cell1 + 2, aSelfSwitchCross, true)|| IsArraySelfSwitches(undefined, cell2, cell2 + 2, aSelfSwitchCross, true)|| IsArraySelfSwitches(undefined, cell3, cell3 + 2, aSelfSwitchCross, true)|| (IsSelfSwitches(undefined, cell1, aSelfSwitchCross) && IsSelfSwitches(undefined, cell2, aSelfSwitchCross) && IsSelfSwitches(undefined, cell3, aSelfSwitchCross))|| (IsSelfSwitches(undefined, cell1 + 1, aSelfSwitchCross) && IsSelfSwitches(undefined, cell2 + 1, aSelfSwitchCross) && IsSelfSwitches(undefined, cell3 + 1, aSelfSwitchCross))|| (IsSelfSwitches(undefined, cell1 + 2, aSelfSwitchCross) && IsSelfSwitches(undefined, cell2 + 2, aSelfSwitchCross) && IsSelfSwitches(undefined, cell3 + 2, aSelfSwitchCross))|| (IsSelfSwitches(undefined, cell1, aSelfSwitchCross) && IsSelfSwitches(undefined, cell2 + 1, aSelfSwitchCross) && IsSelfSwitches(undefined, cell3 + 2, aSelfSwitchCross))|| (IsSelfSwitches(undefined, cell1 + 2, aSelfSwitchCross) && IsSelfSwitches(undefined, cell2 + 1, aSelfSwitchCross) && IsSelfSwitches(undefined, cell3, aSelfSwitchCross))) cells = 'x'; else if (IsArraySelfSwitches(undefined, cell1, cell1 + 2, aSelfSwitchToe, true)|| IsArraySelfSwitches(undefined, cell2, cell2 + 2, aSelfSwitchToe, true)|| IsArraySelfSwitches(undefined, cell3, cell3 + 2, aSelfSwitchToe, true)|| (IsSelfSwitches(undefined, cell1, aSelfSwitchToe) && IsSelfSwitches(undefined, cell2, aSelfSwitchToe) && IsSelfSwitches(undefined, cell3, aSelfSwitchToe))|| (IsSelfSwitches(undefined, cell1 + 1, aSelfSwitchToe) && IsSelfSwitches(undefined, cell2 + 1, aSelfSwitchToe) && IsSelfSwitches(undefined, cell3 + 1, aSelfSwitchToe))|| (IsSelfSwitches(undefined, cell1 + 2, aSelfSwitchToe) && IsSelfSwitches(undefined, cell2 + 2, aSelfSwitchToe) && IsSelfSwitches(undefined, cell3 + 2, aSelfSwitchToe))|| (IsSelfSwitches(undefined, cell1, aSelfSwitchToe) && IsSelfSwitches(undefined, cell2 + 1, aSelfSwitchToe) && IsSelfSwitches(undefined, cell3 + 2, aSelfSwitchToe))|| (IsSelfSwitches(undefined, cell1 + 2, aSelfSwitchToe) && IsSelfSwitches(undefined, cell2 + 1, aSelfSwitchToe) && IsSelfSwitches(undefined, cell3, aSelfSwitchToe))) cells = '0'; else if (IsArraySelfSwitches(aIDEventStart, aIDEventStart + 8, aSelfSwitchDraw, false)) cells = '+'; else cells = '-'; return cells; }
Не работает. Код ошибки:
Code:
CONDITIONAL BRANCH SCRIPT ERROR YEP_CoreEngine.js:2810 AScripts.IfTicTacToe(1, 'B', 'C', 'A') === 'x' YEP_CoreEngine.js:2811 ReferenceError: IsArraySelfSwitches is not defined at Function.IfTicTacToe (AScripts.js:82) at eval (eval at Game_Interpreter.command111 (YEP_CoreEngine.js:1814), <anonymous>:1:10) at Game_Interpreter.command111 (YEP_CoreEngine.js:1814) at Game_Interpreter.executeCommand (rpg_objects.js:8930) at Game_Interpreter.update (rpg_objects.js:8838) at Game_Map.updateInterpreter (rpg_objects.js:6115) at Game_Map.update (rpg_objects.js:6022) at Scene_Map.updateMain (rpg_scenes.js:608) at Scene_Map.updateMainMultiply (rpg_scenes.js:600) at Scene_Map.update (rpg_scenes.js:589) Yanfly.Util.displayError @ YEP_CoreEngine.js:2811 Game_Interpreter.command111 @ YEP_CoreEngine.js:1817 Game_Interpreter.executeCommand @ rpg_objects.js:8930 Game_Interpreter.update @ rpg_objects.js:8838 Game_Map.updateInterpreter @ rpg_objects.js:6115 Game_Map.update @ rpg_objects.js:6022 Scene_Map.updateMain @ rpg_scenes.js:608 Scene_Map.updateMainMultiply @ rpg_scenes.js:600 Scene_Map.update @ rpg_scenes.js:589 Scene_Map.update @ YEP_CoreEngine.js:1425 SceneManager.updateScene @ DKTools.js:37928 SceneManager.updateMain @ rpg_managers.js:1983 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 YEP_CoreEngine.js:2809 CONDITIONAL BRANCH SCRIPT ERROR YEP_CoreEngine.js:2810 AScripts.IfTicTacToe(1, 'B', 'C', 'A') === '0' YEP_CoreEngine.js:2811 ReferenceError: IsArraySelfSwitches is not defined at Function.IfTicTacToe (AScripts.js:82) at eval (eval at Game_Interpreter.command111 (YEP_CoreEngine.js:1814), <anonymous>:1:10) at Game_Interpreter.command111 (YEP_CoreEngine.js:1814) at Game_Interpreter.executeCommand (rpg_objects.js:8930) at Game_Interpreter.update (rpg_objects.js:8838) at Game_Map.updateInterpreter (rpg_objects.js:6115) at Game_Map.update (rpg_objects.js:6022) at Scene_Map.updateMain (rpg_scenes.js:608) at Scene_Map.updateMainMultiply (rpg_scenes.js:600) at Scene_Map.update (rpg_scenes.js:589) Yanfly.Util.displayError @ YEP_CoreEngine.js:2811 Game_Interpreter.command111 @ YEP_CoreEngine.js:1817 Game_Interpreter.executeCommand @ rpg_objects.js:8930 Game_Interpreter.update @ rpg_objects.js:8838 Game_Map.updateInterpreter @ rpg_objects.js:6115 Game_Map.update @ rpg_objects.js:6022 Scene_Map.updateMain @ rpg_scenes.js:608 Scene_Map.updateMainMultiply @ rpg_scenes.js:600 Scene_Map.update @ rpg_scenes.js:589 Scene_Map.update @ YEP_CoreEngine.js:1425 SceneManager.updateScene @ DKTools.js:37928 SceneManager.updateMain @ rpg_managers.js:1983 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 requestAnimationFrame (async) SceneManager.requestUpdate @ rpg_managers.js:1896 SceneManager.updateMain @ rpg_managers.js:1988 SceneManager.update @ rpg_managers.js:1907 YEP_CoreEngine.js:2809 CONDITIONAL BRANCH SCRIPT ERROR YEP_CoreEngine.js:2810 AScripts.IfTicTacToe(1, 'B', 'C', 'A') === '+' YEP_CoreEngine.js:2811 ReferenceError: IsArraySelfSwitches is not defined at Function.IfTicTacToe (AScripts.js:82) at eval (eval at Game_Interpreter.command111 (YEP_CoreEngine.js:1814), <anonymous>:1:10) at Game_Interpreter.command111 (YEP_CoreEngine.js:1814) at Game_Interpreter.executeCommand (rpg_objects.js:8930) at Game_Interpreter.update (rpg_objects.js:8838) at Game_Map.updateInterpreter (rpg_objects.js:6115) at Game_Map.update (rpg_objects.js:6022) at Scene_Map.updateMain (rpg_scenes.js:608) at Scene_Map.updateMainMultiply (rpg_scenes.js:600) at Scene_Map.update (rpg_scenes.js:589)
В чем причина?

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Оратор 1 место в Готв 3 место Готв 2 место Учитель Композитор Победитель конкурса Организатор конкурсов
Больше
6 года 7 мес. назад - 6 года 7 мес. назад #113801 от yuryol
1) почему названия функций с большой буквы?
2) ну поставь ты необязательный аргумент последним в "IsSelfSwitches", чтобы не приходилось передавать андефайнд
3) аще не понимаю смысла строки
Code:
var cell1 = aIDEventStart;
ты назвал аргумент aIDEventStart чтобы потом нигде его не использовать и присвоить его переменной cell1? может тогда сразу его так назвать?
4) смысл присваивать var cell2 = aIDEventStart + 3; если потом к этой cell2 ты все-равно будешь прибавлять двойку? оставь ты этот aIDEventStart и прибавляй к нему числа.
5) ты присвоил переменной cells(ячейка) значение '-';". при этом она еще может быть равна нулю, плюсу и т.д. в итоге ни хера непонятно что происходит
6) че аще значат эти cell? они и aIDEventStart равны, и тире?
7) вынеси подобные сравнения в отдельную функцию чтоб не приходилось громадные строки написывать
Code:
(IsSelfSwitches(undefined, cell1, aSelfSwitchToe) && IsSelfSwitches(undefined, cell2, aSelfSwitchToe) && IsSelfSwitches(undefined, cell3, aSelfSwitchToe))
назови ченить типа compareSelfSwitch
8) убери уже эти ненужные "GameOnMap" в каждой функции. хватит громоздить названия функций, тот же aIDEventStart назови id,у тебя же в функции никаких айдишников больше нет
9) подпиши комментами каждое действие и ЧТО делает каждая функция, раз с названиями беда.
1) зачем ко всем переменным "a" подписывать? от "александр" штоле?:D ладно в глобальные че-нить пихать чтоб никто не спутал и не переназначивал переменную,но зачем в локлаьные переменные функций-то вставлять постоянно

ты можешь конечно ничего из этого не делать но хз тогда кто тут поймет че ты тут понаписал
Последнее редактирование: 6 года 7 мес. назад пользователем yuryol.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
6 года 7 мес. назад #113803 от Alexandr_7

yuryol пишет: 1) почему названия функций с большой буквы?
2) ну поставь ты необязательный аргумент последним в "IsSelfSwitches", чтобы не приходилось передавать андефайнд
3) аще не понимаю смысла строки

Code:
var cell1 = aIDEventStart;
ты назвал аргумент aIDEventStart чтобы потом нигде его не использовать и присвоить его переменной cell1? может тогда сразу его так назвать?
4) смысл присваивать var cell2 = aIDEventStart + 3; если потом к этой cell2 ты все-равно будешь прибавлять двойку? оставь ты этот aIDEventStart и прибавляй к нему числа.
5) ты присвоил переменной cells(ячейка) значение '-';". при этом она еще может быть равна нулю, плюсу и т.д. в итоге ни хера непонятно что происходит
6) че аще значат эти cell? они и aIDEventStart равны, и тире?
7) вынеси подобные сравнения в отдельную функцию чтоб не приходилось громадные строки написывать
Code:
(IsSelfSwitches(undefined, cell1, aSelfSwitchToe) && IsSelfSwitches(undefined, cell2, aSelfSwitchToe) && IsSelfSwitches(undefined, cell3, aSelfSwitchToe))
назови ченить типа compareSelfSwitch
8) убери уже эти ненужные "GameOnMap" в каждой функции. хватит громоздить названия функций, тот же aIDEventStart назови id,у тебя же в функции никаких айдишников больше нет
9) подпиши комментами каждое действие и ЧТО делает каждая функция, раз с названиями беда.
1) зачем ко всем переменным "a" подписывать? от "александр" штоле?:D ладно в глобальные че-нить пихать чтоб никто не спутал и не переназначивал переменную,но зачем в локлаьные переменные функций-то вставлять постоянно

ты можешь конечно ничего из этого не делать но хз тогда кто тут поймет че ты тут понаписал

1. Уж лучше я оставлю с большой. Я потратил 2 дня чтобы в своем проекте исправить вызов функций.
2. Проблема в том короче вот:
Code:
static SetSelfSwitches(aMapID = $gameMap.mapId(), aIDEvent, aSelfSwitch, aBool, aOffOtherSelfSwitch = false) { var key = [aMapID, aIDEvent, aSelfSwitch]; $gameSelfSwitches.setValue(key, aBool); if (aOffOtherSelfSwitch === true) { var cells = ['A', 'B', 'C', 'D']; for (var j = 0; j < cells.length; j++) if (cells[j] != aSelfSwitch){ var key2 = [aMapID, aIDEvent, cells[j]]; $gameSelfSwitches.setValue(key2, false); } } }
У меня используется 2 аргумента которые необязательны.
Не знаю. Может если вот так написать
Code:
static SetSelfSwitches(aMapID = $gameMap.mapId() || undefined, aIDEvent, aSelfSwitch, aBool, aOffOtherSelfSwitch = false) { var key = [aMapID, aIDEvent, aSelfSwitch]; $gameSelfSwitches.setValue(key, aBool); if (aOffOtherSelfSwitch === true) { var cells = ['A', 'B', 'C', 'D']; for (var j = 0; j < cells.length; j++) if (cells[j] != aSelfSwitch){ var key2 = [aMapID, aIDEvent, cells[j]]; $gameSelfSwitches.setValue(key2, false); } } }
То тогда не надо будет писать undefinedв функции.
3 - 4. Это я сделал чтобы не путаться самому мне так проще.
5. Я это сделал чтобы JS понял тип переменной. Хотя наверное в JS переменная через var может любой в любой момент.
Например в C# у переменной должен быть четкий тип. Даже если переменная объявленна через var то ей должно быть присвоенно значение чтобы интерпритатор понял какой тип переменной. Пологаю в JS вообще нет понятия типы переменных и в любой момент переменной можно присвоить другие данные.
Надо будет проверить.
6. cell1 - cell3 это переменные сделал для удобства. Им просто присвоены ИД Событий например Cell1 = первому событию. Cell2 - равен 4 и cell3 равен = 7. Это сделано чтобы проще разобратьсмя в условии проверки
А что до cell то это переменная равна символы который отвечает за тот или иной аспект
Вернет x если победили крестики, 0 если победили 0, + если Ничья и - если остались еще ходы.
8. И где ты увидел GameOnMap? Я их вроде и так убрал?
9. Сделаю.
А добавлять a это привычка от паскаля. Блин. У каждого языка своим правила написания кода. Бесит.

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
6 года 7 мес. назад #113804 от Alexandr_7
Хотя ладно. Исправлю на маленькие.

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Оратор 1 место в Готв 3 место Готв 2 место Учитель Композитор Победитель конкурса Организатор конкурсов
Больше
6 года 7 мес. назад #113805 от yuryol
2. хоспаде, да поставь ты оба необязательных в конец, че творишь-то
static SetSelfSwitches(aIDEvent, aSelfSwitch, aBool, aOffOtherSelfSwitch = false, aMapID = $gameMap.mapId())

3 - 4. ну и разбирайся тогда во всем сам раз тебе так проще.

5. используй typescript если любишь типы. можно еще для читаемости кода и чтобы не путаться указывать типы переменных в комментариях. и например для каждого аргумента функции подписывать через равно значение по умолчанию. если значение по умолчанию равно строке то значит и тип строка. если булевое - значит тип булевый.

6. да блин чем название cell1 удобно? обозначает id а называется cell, фейспалм просто. назови idByEvent4 например
а то что у тебя cell1 обозначает ид,а cell - совершенно другое это вообще смешно.
раз cell означает крестик или нолик победил аще смешно. назови че-нить типа winner, типа "победитель"

8. точно.не тот коммнет глянул

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
6 года 7 мес. назад - 6 года 7 мес. назад #113808 от Alexandr_7

yuryol пишет: 2. хоспаде, да поставь ты оба необязательных в конец, че творишь-то
static SetSelfSwitches(aIDEvent, aSelfSwitch, aBool, aOffOtherSelfSwitch = false, aMapID = $gameMap.mapId())

3 - 4. ну и разбирайся тогда во всем сам раз тебе так проще.

5. используй typescript если любишь типы. можно еще для читаемости кода и чтобы не путаться указывать типы переменных в комментариях. и например для каждого аргумента функции подписывать через равно значение по умолчанию. если значение по умолчанию равно строке то значит и тип строка. если булевое - значит тип булевый.

6. да блин чем название cell1 удобно? обозначает id а называется cell, фейспалм просто. назови idByEvent4 например
а то что у тебя cell1 обозначает ид,а cell - совершенно другое это вообще смешно.
раз cell означает крестик или нолик победил аще смешно. назови че-нить типа winner, типа "победитель"

8. точно.не тот коммнет глянул

2. Все равно если нужно будет использовать к примеру другую карту то в аргумент отключения остальных переключателей нужно будет указать undefined. Ну в принципе сделаю по твоему варианту так как чаще нужно отключать остальные переключатели нежели с одной карты влиять на события другой.
3 - 4. Ну да. Вот так наверное проще разбираться:
Code:
//Скрипт проверки для игры крестики ноллики static ifTicTacToe(idEventStart, selfSwitchCross, selfSwitchToe, selfSwitchDraw) { //Проверка //Если победили крестики if (isArraySelfSwitches(undefined, idEventStart, (idEventStart + 2), selfSwitchCross, true)|| isArraySelfSwitches(undefined, (idEventStart + 3), (idEventStart + 5), selfSwitchCross, true)|| isArraySelfSwitches(undefined, (idEventStart + 6), (idEventStart + 8), selfSwitchCross, true)|| (isSelfSwitches(undefined, idEventStart, selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 3), selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 6), selfSwitchCross))|| (isSelfSwitches(undefined, (idEventStart + 1), selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 4), selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 7), selfSwitchCross))|| (isSelfSwitches(undefined, (idEventStart + 2), selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 5), selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 8), selfSwitchCross))|| (isSelfSwitches(undefined, idEventStart, selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 4), selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 8), selfSwitchCross))|| (isSelfSwitches(undefined, (idEventStart + 2), selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 4), selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 6), selfSwitchCross))) return 'x'; //Если победили нолики else if (isArraySelfSwitches(undefined, idEventStart, (idEventStart + 2), selfSwitchToe, true)|| isArraySelfSwitches(undefined, (idEventStart + 3), (idEventStart + 5), selfSwitchToe, true)|| isArraySelfSwitches(undefined, (idEventStart + 6), (idEventStart + 8), selfSwitchToe, true)|| (isSelfSwitches(undefined, idEventStart, selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 3), selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 6), selfSwitchToe))|| (isSelfSwitches(undefined, (idEventStart + 1), selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 4), selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 7), selfSwitchToe))|| (isSelfSwitches(undefined, (idEventStart + 2), selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 5), selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 8), selfSwitchToe))|| (isSelfSwitches(undefined, idEventStart, selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 4), selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 8), selfSwitchToe))|| (isSelfSwitches(undefined, (idEventStart + 2), selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 4), selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 6), selfSwitchToe))) return '0'; //Если ничья else if (isArraySelfSwitches(idEventStart, (idEventStart + 8), selfSwitchDraw, false)) return '+'; //В остальных случаях (если остались ходы) else return '-'; }
Чем:
Code:
//Скрипт проверки для игры крестики ноллики static ifTicTacToe(idEventStart, selfSwitchCross, selfSwitchToe, selfSwitchDraw) { //Начало ИД Событий 1 линии var idEventLine1 = idEventStart; //Начало ИД Событий 2 линии var idEventLine2 = idEventLine1 + 3; //Начало ИД Событий 3 линии var idEventLine3 = idEventLine2 + 3; //Проверка //Если победили крестики if (isArraySelfSwitches(undefined, idEventLine1, (idEventLine1 + 2), selfSwitchCross, true)|| isArraySelfSwitches(undefined, idEventLine2, (idEventLine2 + 2), selfSwitchCross, true)|| isArraySelfSwitches(undefined, idEventLine3, (idEventLine3 + 2), selfSwitchCross, true)|| (isSelfSwitches(undefined, idEventLine1, selfSwitchCross) && isSelfSwitches(undefined, idEventLine2, selfSwitchCross) && isSelfSwitches(undefined, idEventLine3, selfSwitchCross))|| (isSelfSwitches(undefined, (idEventLine1 + 1), selfSwitchCross) && isSelfSwitches(undefined, (idEventLine2 + 1), selfSwitchCross) && isSelfSwitches(undefined, (idEventLine3 + 1), selfSwitchCross))|| (isSelfSwitches(undefined, (idEventLine1 + 2), selfSwitchCross) && isSelfSwitches(undefined, (idEventLine2 + 2), selfSwitchCross) && isSelfSwitches(undefined, (idEventLine3 + 2), selfSwitchCross))|| (isSelfSwitches(undefined, idEventLine1, selfSwitchCross) && isSelfSwitches(undefined, (idEventLine2 + 1), selfSwitchCross) && isSelfSwitches(undefined, (idEventLine3 + 2), selfSwitchCross))|| (isSelfSwitches(undefined, (idEventLine1 + 2), selfSwitchCross) && isSelfSwitches(undefined, (idEventLine2 + 1), selfSwitchCross) && isSelfSwitches(undefined, idEventLine3, selfSwitchCross))) return 'x'; //Если победили нолики else if (isArraySelfSwitches(undefined, idEventLine1, (idEventLine1 + 2), selfSwitchToe, true)|| isArraySelfSwitches(undefined, idEventLine2, (idEventLine2 + 2), selfSwitchToe, true)|| isArraySelfSwitches(undefined, idEventLine3, (idEventLine3 + 2), selfSwitchToe, true)|| (isSelfSwitches(undefined, idEventLine1, selfSwitchToe) && isSelfSwitches(undefined, idEventLine2, selfSwitchToe) && isSelfSwitches(undefined, idEventLine3, selfSwitchToe))|| (isSelfSwitches(undefined, (idEventLine1 + 1), selfSwitchToe) && isSelfSwitches(undefined, (idEventLine2 + 1), selfSwitchToe) && isSelfSwitches(undefined, (idEventLine3 + 1), selfSwitchToe))|| (isSelfSwitches(undefined, (idEventLine1 + 2), selfSwitchToe) && isSelfSwitches(undefined, (idEventLine2 + 2), selfSwitchToe) && isSelfSwitches(undefined, (idEventLine3 + 2), selfSwitchToe))|| (isSelfSwitches(undefined, idEventLine1, selfSwitchToe) && isSelfSwitches(undefined, (idEventLine2 + 1), selfSwitchToe) && isSelfSwitches(undefined, (idEventLine3 + 2), selfSwitchToe))|| (isSelfSwitches(undefined, (idEventLine1 + 2), selfSwitchToe) && isSelfSwitches(undefined, (idEventLine2 + 1), selfSwitchToe) && isSelfSwitches(undefined, idEventLine3, selfSwitchToe))) return '0'; //Если ничья else if (isArraySelfSwitches(idEventStart, (idEventStart + 8), selfSwitchDraw, false)) return '+'; //В остальных случаях (если остались ходы) else return '-'; }
5. А разве typescript Это не отдельный язык. Да честно говоря мне без разницы. Раз JS не имеет понятия типа переменных то так даже проще будет в какойтьо степени.
6. Если ты про это в пункте 3 - 4 то я исправил имена. Я думал ты ты про то чтобы вообще не использовать дополнительные переменные. Они по факту и не нужны. Просто я привел вариантом выше какая путанница будет без них.
А на счет x и 0 то по факту можно было бы свой перечисляемый тип сделать ну аналог bool так сказать но с 4мя значениями. Но не знаю как это в js делается.
В любом случае это не изменяет того факта что происходит ошибка:
CONDITIONAL BRANCH SCRIPT ERROR
При вызове скрипта.

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 6 года 7 мес. назад пользователем Alexandr_7.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
6 года 7 мес. назад #113809 от Alexandr_7
Переделал вид скриптов:
Code:
//Скрипт проверки для игры крестики ноллики static ifTicTacToe(idEventStart, selfSwitchCross, selfSwitchToe, selfSwitchDraw) { //Начало ИД Событий 1 линии var idEventLine1 = idEventStart; //Начало ИД Событий 2 линии var idEventLine2 = idEventLine1 + 3; //Начало ИД Событий 3 линии var idEventLine3 = idEventLine2 + 3; //Проверка //Если победили крестики if (isArraySelfSwitches(idEventLine1, (idEventLine1 + 2), selfSwitchCross, true)|| isArraySelfSwitches(idEventLine2, (idEventLine2 + 2), selfSwitchCross, true)|| isArraySelfSwitches(idEventLine3, (idEventLine3 + 2), selfSwitchCross, true)|| (isSelfSwitches(idEventLine1, selfSwitchCross) && isSelfSwitches(idEventLine2, selfSwitchCross) && isSelfSwitches(idEventLine3, selfSwitchCross))|| (isSelfSwitches((idEventLine1 + 1), selfSwitchCross) && isSelfSwitches((idEventLine2 + 1), selfSwitchCross) && isSelfSwitches((idEventLine3 + 1), selfSwitchCross))|| (isSelfSwitches((idEventLine1 + 2), selfSwitchCross) && isSelfSwitches((idEventLine2 + 2), selfSwitchCross) && isSelfSwitches((idEventLine3 + 2), selfSwitchCross))|| (isSelfSwitches(idEventLine1, selfSwitchCross) && isSelfSwitches((idEventLine2 + 1), selfSwitchCross) && isSelfSwitches((idEventLine3 + 2), selfSwitchCross))|| (isSelfSwitches((idEventLine1 + 2), selfSwitchCross) && isSelfSwitches((idEventLine2 + 1), selfSwitchCross) && isSelfSwitches(idEventLine3, selfSwitchCross))) return 'x'; //Если победили нолики else if (isArraySelfSwitches(idEventLine1, (idEventLine1 + 2), selfSwitchToe, true)|| isArraySelfSwitches(idEventLine2, (idEventLine2 + 2), selfSwitchToe, true)|| isArraySelfSwitches(idEventLine3, (idEventLine3 + 2), selfSwitchToe, true)|| (isSelfSwitches(idEventLine1, selfSwitchToe) && isSelfSwitches(idEventLine2, selfSwitchToe) && isSelfSwitches(idEventLine3, selfSwitchToe))|| (isSelfSwitches((idEventLine1 + 1), selfSwitchToe) && isSelfSwitches((idEventLine2 + 1), selfSwitchToe) && isSelfSwitches((idEventLine3 + 1), selfSwitchToe))|| (isSelfSwitches((idEventLine1 + 2), selfSwitchToe) && isSelfSwitches((idEventLine2 + 2), selfSwitchToe) && isSelfSwitches((idEventLine3 + 2), selfSwitchToe))|| (isSelfSwitches(idEventLine1, selfSwitchToe) && isSelfSwitches((idEventLine2 + 1), selfSwitchToe) && isSelfSwitches((idEventLine3 + 2), selfSwitchToe))|| (isSelfSwitches((idEventLine1 + 2), selfSwitchToe) && isSelfSwitches((idEventLine2 + 1), selfSwitchToe) && isSelfSwitches(idEventLine3, selfSwitchToe))) return '0'; //Если ничья else if (isArraySelfSwitches(idEventStart, (idEventStart + 8), selfSwitchDraw, false)) return '+'; //В остальных случаях (если остались ходы) else return '-'; } static setSelfSwitches(idEvent, selfSwitch, on, offOtherSelfSwitch = false, mapID = $gameMap.mapId()) { var key = [mapID, idEvent, selfSwitch]; $gameSelfSwitches.setValue(key, on); if (offOtherSelfSwitch === true) { var cells = ['A', 'B', 'C', 'D']; for (var j = 0; j < cells.length; j++) if (cells[j] != selfSwitch){ var key2 = [mapID, idEvent, cells[j]]; $gameSelfSwitches.setValue(key2, false); } } } static setArraySelfSwitches(idEventStart, idEventStop, selfSwitch, on, offOtherSelfSwitch = false, mapID = $gameMap.mapId()) { var key; for (var i = idEventStart; i <= idEventStop; i++){ key = [mapID, i, selfSwitch; $gameSelfSwitches.setValue(key, on); if (offOtherSelfSwitch === true) { var cells = ['A', 'B', 'C', 'D']; for (var j = 0; j < cells.length; j++) if (cells[j] != selfSwitch){ var key2 = [mapID, i, cells[j]]; $gameSelfSwitches.setValue(key2, false); } } } } static isSelfSwitches(idEvent, selfSwitch, mapID = $gameMap.mapId()) { var key = [mapID, idEvent, selfSwitch]; return $gameSelfSwitches.value(key); } static isArraySelfSwitches(idEventStart, idEventStop, selfSwitch, isSelfSwitchs, mapID = $gameMap.mapId()) { var key; var a = 0, b = 0; for (var i = idEventStart; i <= idEventStop; i++){ key = [mapID, i, selfSwitch]; a++; if ($gameSelfSwitches.value(key) === isSelfSwitchs){ b++; } } return a === b; }
Но проблему с ошибкой это не решит. Ошибка происходит на самой проверке if
CONDITIONAL BRANCH SCRIPT ERROR

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 3 место Проект месяца 2 место Ветеран Учитель Проект месяца 1 место Проект года 3 место Разработчик
Больше
6 года 7 мес. назад #113810 от Alexandr_7
Ну что. Может быть знает как исправить. Ну или может предложит другой вариант проверки?

Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.135 секунд
Работает на Kunena форум