|
|
|
Игровой бот Небеса: уникальная игра! |
|
|
dimоn |
17.3.2016, 6:48
|
Novice
Сообщений: 97
Регистрация: 24.10.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.079
Возраст: 27
|
Сорри, оффтоп, к этому вернемся позже..
А закончили ли скрипт, по обработке игрового поля, для боев гладиаторов? Помнится, там было все на ифах? Чет я, вдруг, неожиданно, то ли вспомнил, то ли допер, как это все обработать, на уровне матрицы.. Мы формируем двумерный массив, к примеру %pole[6;6], далее, забиваем это все, значениями того, что на игровом поле. Далее, загоняем в циклы for и после этого, проверяем возможность смещения камня, на соседнюю линию. Если в результате смещения образуется что-то путное, считаем, что получилось. в итоге получаем массив с результатами возможных действий
for i=1 to 6 //вертикаль for j=1 to 6//горизонталь set %polenew[i;j] %pole[i+1;j] set %polenew[i+1;j] %pole[i;j] if %polenew[i;j] = %polenew[i + 1;j] аnd %polenew[i +1;j] = %polenew[i+2;j]... и т.д. Казнить:-D set %polenew[i;j] 0 set %polenew[i +1;j] 0 set %polenew[i+2;j] 0 end_if if %polenew[i;j] = %polenew[i;j+1] аnd %polenew[i ;j+1] = %polenew[i;j+2]... и т.д. set %polenew[i;j] 0 set %polenew[i ;j+1] 0 set %polenew[i;j+2] 0 end_if end_for end_for
таким образом получаем новый массив. его вновь заполняем
for i=1 to 6 for j=1 to 6 if %pole(i;j) = 0 //если пусто set %pole(i;j) %pole (i;j-1)// значение равно значению, ячейки с тем же номером, но на соседней линии else //иначе set %pole(i;j) %pole(i;j)// значение равно своему значению, то есть, не изменяется
Проверка всех элементов массива, а по сути, формирование нового, где, если оказывается пустое место, берется с той же ячейки, только с соседнего j-ряда Мы получаем новый массив. Его опять проверяем на предмет рядом стоящих камней и т.д. В итоге получаем образовавшееся поле, после возможного хода, количество выбывших камней и результат сложения значения номиналов этих камней, которые образуют массив результатов действий, %rez[x;y]// к примеру, х - значение маны, y - значение урона. и т.д.
Выполняем алгоритм упорядочивания, по убыванию и берем первый элемент образовавшегося массива.
в итоге получаем наилучший ход.
|
|
|
|
dimоn |
8.4.2016, 20:05
|
Novice
Сообщений: 97
Регистрация: 24.10.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.079
Возраст: 27
|
Со временем сейчас беда..((( Но все-таки кое какие наброски есть . Вот только задумался, здесь выкидывать или создать отдельную тему, по алгоритмам решения mаtch 3? Вкратце, боюсь, не получится))) На сколько бы странным это не было, но даже порывшись в сети, нет ничего, по подобному. Обсуждаются вопросы создания самой игры, но вот решением подобного никто не озадачивался, либо никто не делился))))
|
|
|
|
dimоn |
9.4.2016, 11:16
|
Novice
Сообщений: 97
Регистрация: 24.10.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.079
Возраст: 27
|
Как правило, все подобные попытки обработать массивы на ифах, заканчиваются, правильно подмечено, огромных размеров, писаниной, мудреными замороченными условиями, что сам быстрее голову сломаешь, а если еще и разбираться потом, ну и соответственно, медленной и нестабильной работой... И скорее всего, фишки будет убирать только в одном направлении - либо вертикаль, либо горизонталь)))) Чем скрипт проще, тем эффективнее))
Тогда еще один вопросик.. какой командой можно вывести массив на экран?
|
|
|
|
DarkMaster |
9.4.2016, 11:49
|
Модератор UOPilot
Сообщений: 9.573
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 28548
Пользователь №: 11.279
|
Цитата Чем скрипт проще, тем эффективнее)) Неа... Цитата попытки обработать массивы на ифах, заканчиваются, правильно подмечено, огромных размеров, писаниной, Неа. Массивы при правильном использовании очень сильно уменьшают количество кода. Цитата медленной и нестабильной работой... Самый быстрый и стабильный вариант. Я ни разу не получал проблем с массивами, если не выходил за пределы массива либо не пытался несколькими потоками писать в одну ячейку. Цитата Тогда еще один вопросик.. какой командой можно вывести массив на экран? Код set #sizeArr size (%arr) for #i 1 #sizeArr log %arr [#i] // Для двумерного массива добавить второй индекс по необходимости. end_for Писанины там было очень много из-за количества наставлений на путь истинный (IMG: style_emoticons/default/smile.gif)
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
dimоn |
9.4.2016, 16:05
|
Novice
Сообщений: 97
Регистрация: 24.10.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.079
Возраст: 27
|
Не спорю, я лишь предположил.
Да и не про конкретный скрипт, это, в общем, так сказать наблюдения)))
В любом случае, это большой труд, но не могу ничего про него сказать, потому, что... как вижу эти 50+ страниц, меня ужас охватывает))))) А следовательно и критиковать, просто не имею права)))
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|