RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2437645 views

Поздравляю эту тему со 100-страничным юбилеем :)

Это я, значит, флудер?

Бьюсь головой в эволюцию. Сами алгоритмы придумать не так то сложно, но вот реализовать их никак не получается. Буду признателен если кто-то возьмется мне помочь, хотя должен предупредить — работа относительно объемная. Я попытался сформулировать затык в простейшем виде, чтобы не грузить переменными с которыми я могу справиться если разберусь с основной проблемой. В результате получилась некая абстрактная задача.
Задача формулируется следующим образом:

На старте создается три последовательности цветов. В каждой есть три случайно выбранных цвета. Единственный принцип выбора — каждый следующий цвет в последовательности должен отличаться от предыдущего. Всего на выбор есть четыре цвета: красный, зеленый, синий и пурпурный.
Для каждой последовательности генерируется уникальное имя (алгоритм создания имени у меня работает, это проще всего).

Шаг 1: каждая последовательность оценивается по количеству набранных ей очков. Принцип: (количество единиц минимально представленного цвета умножается на количество цветов в последовательности) минус количество единиц максимально представленного цвета. Выбирается последовательность с наибольшим количеством очков. Если есть равенство — из победителей выбирается последовательность с минимальным общим количеством цветов. Если и там есть равенство, то выбирается та из них что создана раньше остальных.
Создается одна дополнительная последовательность, копирующая выбранную, но с одним новым случайным цветом, выбранным по тому же принципу. Для вновь созданной последовательности так же генерируется свое имя. Если всего последовательностей стало более 10-ти, то уничтожается та у которой меньше всего очков, при равенстве та из них которая длиннее, при равенстве та из них которая создана позже.

Если нет последовательности длинее 14ти цветов, возвращаемся к первому шагу. Если есть — отражаем полный список последовательностей с названиями и количеством единиц каждого цвета в каждой последовательности.
В памяти должны сохраниться данные всех существовавших последовательностей.

Если кто-то может написать мне этот код или хотя бы указать на основные приемы для его написания, буду весьма признателен.

Непонятно, как последовательность может стать длиннее 14ти цветов, если

MasterSet:

В каждой есть три случайно выбранных цвета.

В целом, если вероятность успешной генерации изначально очень мала, и не увеличивается с каждой итерацией, то в игру вставлять такой код не стоит. Иначе игра может “зависать” на неопределенный промежуток времени, и игрока это будет раздражать.

Мы на старте имеем 3 цвета. В каждой итерации самой козырной цепочке добавляем один цвет. Пока не дойдет до 14ти.

А вероятность успеха добавления цвета равна 3/4. По-моему достаточно большая )

MasterSet,
теперь понятно.

MasterSet два вопроса.
1. количество очков последовательности может быть отрицательным?
2. что значит “создана раньше остальных”? (если на каждом шаге создаётся одна последовательность, то их лучше не именовать, а нумеровать)

Пэ Се. от таких задач мозги можно вывихнуть.

Может
Можно и именовать и номеровать, но именовать обязательно.

Да, я уже вывихнул )

Я так понимаю, нет возможности на классическом QSP сделать проверку на наличие сохранённых файлов?
О чём речь: к примеру, в ходе игры делается автоматическое сохранение. Достиг некой зоны - auto.sav
Так вот при запуске игры нет возможности проверить:
IF (есть в нужной папке файл auto.sav):
Дать возможность загрузить auto.sav
ELSE
‘Нет сохранённых файлов!’
END

Zeantar,
теоретически это возможно сделать с помощью $ONGLOAD.

Можно пример?

Давно собирался написать, как сделать чекпойнты. Хорошо, что ты напомнил.
Реализация чекпойнтов

Вроде все ясно, но скажи, можно сделать просто:
IF (првоерка, есть ли файл):
да, есть, можно загружать
ELSE
Нет файла, алерт!
END

Zeantar,
конечно.

IF (есть_сейв = 1):
    да, есть, можно загружать
ELSE
    Нет файла, алерт!
END

Добрый день, уважаемые коллеги. Не въезжаю, как задать цвет тексту, обозначающему действие в меню выбора действий, при наведении на него курсора? Я пытаюсь работать в Аэре, у меня текст действия при наведении курсора становится синим, а хочется чтобы был желтенький.

Log in or Register to post comments.