Понедельник, 23 Декабря 2024, 01:17

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Рандомное название
VerekentsДата: Воскресенье, 02 Июня 2013, 10:01 | Сообщение # 1
был не раз
Сейчас нет на сайте
Как на Construst Classic 2 сделать вывод случайного названия для чего-либо из списка.
Суть: игрок находит город, а городу нужно случайное название, чтобы у всех названия были разные и было труднее проходить игру. Нужно чтобы из 10 названий городу дали одно, притом только один раз и больше не меняли, и это название какой-либо другой город использовать ещё раз не должен.
Nick_RimerДата: Воскресенье, 02 Июня 2013, 11:45 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
в принципе, подобное решение можно применять не только для констракт 2.
я вижу такой вариант, что ты держишь названия городов в файле. когда нужно раздать название городу, ты читаешь файл, пишешь все имена в одномерный массив (или ещё в начале/при загрузке новой/старой игры ты загружаешь эти массивы, чтобы потом лишний раз не читать), затем рандомно выбирается индекс элемента массива, название с этим индексом и присваивается городу. параллельно есть ещё массив, куда ты тут же записываешь это название (это отдельный массив для городов, чьи названия уже "забиты"). поэтому каждый раз, как ты выбрал в первом массиве какой-то город, надо проверить, есть ли такой город уже во втором массиве, если есть, то искать ещё. и так до тех пор, пока не будет найдено в первом списке имя, которого нет во втором списке.
суть ясна? после этого всего второй массив тоже нужно сохранить в файл (как-то связанный с сохранением), чтобы в случае загрузки не потерять список "забитых" названий, а при загрузке - загружать его во второй массив.

повторюсь, чтобы всё было ясно:
1. имеем общий игровой файл, где записаны имена городов
2. имеем массив, куда загружаются имена из общего файла с именами
3. имеем второй массив, где хранятся те имена, которые уже использованы, и их в этой игре использовать нельзя
4. когда нужно дать имя городу, случайным образом выбираем его из первого массива
5. проверяем, есть ли такое имя во втором массиве
6.1 если есть, то ищем ещё
6.2 если нет, то даём городу это имя и записываем его во второй массив
7. второй массив также сохраняем в отдельный файл, который связан именно с этой игрой (чтобы в начале новой игры можно было снова иметь в доступности все города)

надеюсь, я объяснил понятно? если есть ещё вопросы, задавай.


- Доброе утро, Агент Пи!

Сообщение отредактировал Nick_Rimer - Воскресенье, 02 Июня 2013, 11:49
allxumukДата: Воскресенье, 02 Июня 2013, 12:26 | Сообщение # 3
старожил
Сейчас нет на сайте
Лень объяснять, поэтому вот пример. Пример для Construct Classic r2, как ты и просил, если нужен был для Construct 2 нужно было это указать.

Любой дурак может написать программу, которую поймёт компилятор.
Хорошие программисты пишут программы, которые смогут понять другие программисты.
RUNGOGET2THECHOPAHДата: Воскресенье, 02 Июня 2013, 12:45 | Сообщение # 4
участник
Сейчас нет на сайте
Nick_Rimer, лучше не создавать отдельный массив уже использованных названий, а удалять "забитые" из первого массива (а еще лучше список вместо массива запилить). Иначе будут просадки производительности в ситуациях, когда имеется большое количество названий, и практически все из них уже использованы.
Nick_RimerДата: Воскресенье, 02 Июня 2013, 13:07 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
RUNGOGET2THECHOPAH, я думал о таком варианте, хотя, надо сказать, я просто предложил один из вариантов действия.
как вариант, можно делать не второй массив, а сделать первый массив двумерным. на второй его строке пусть будет то, что во втором массиве.
а на первой - имена городов.
вообще, хороший вариант тогда иметь названия городов в файле, в начале игры читать, а потом из него удалять, и сохранять эту информацию. в общем, есть варианты, можно додумать smile


- Доброе утро, Агент Пи!
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг