Форум » » Tokenы. С чем их едят » Ответить

Tokenы. С чем их едят

Chicago1920: Можно ли поподробнее об использовании токенов. (В частности игра Острова от Терракона)

Ответов - 80, стр: 1 2 3 4 All

Борщевский: Чикаго, ты всю осень уговариваешь людей написать тебе платформу подходящую под твои требования, потому что акурка не все умеет, а учить чтото более сложное ты не желаешь. Теперь же выясняется, что у тебя нет даже сценария. Ты хоть бы ник сменил, перед тем как просить о подобной помощи :)

Chicago1920: Борщевский скажем так,сценарий есть. но нужно его художественно доработать и переработать. ps давненько я вас не видал))

Chicago1920: "Может кто подскажет по старой дружбе" (с) 1. Кто нить может красиво нарисовать (в paintе?) красивую карту горда по моему плану? 2. Кто может помочь в написаниии сценария для игры про мафию? 3. Ответить вежливо )) Борщевский пишет: Ты хоть бы ник сменил, перед тем как Мне нечего таиться. Если мне нужна помощь, то я прошу у окружающих.


noname: быстрый поиск пути м/ду двумя точками в лабиринте: 1.делаем один раз при создании лабиринта: прописываем в каждом доступном поле расстояние до центра лабиринта (исходя из центра идём и прописываем) теперь непись может легко находить дорогу к центру и от центра, (я пока понятно объясняю?) 2.когда неписю(знающему свои координаты) приспичило побывать в другой точке с известными координатами: а)помечаем путь от непися к центру б)помечаем путь от целевого поля к центру результирующий путь- поля, помеченные лишь одним из двух флагов в нашем случае каждое поле хранит три переменные: расстояние до центра и два флага 3.Очень ВАЖНЫЙ момент: надо, чтобы исходя из целевой точки мы предпочитали путь поближе к уже помеченному от непися.(я генерил лабиринт без зацикливаний- там это условие соблюдается автоматически) алгоритм будет автоматически работать для лабиринтов, не имеющих зацикливаний (то есть где нельзя обойти стену по кругу и нет полей 2х2, где можно ходить по кругу). в остальных случаях алгоритм тоже работает, но как его поправить- нужно смотреть исходя из вида лабиринта. P.S. вообще, алгоритм может быть гораздо проще, если наложить ограничения на вид лабиринта (типа стены прямые любой длины, не соприкасаются друг с другом и касаются не более чем одной стороной к границе. а ещё лучше, чтоб они все касались одной стороной края прямоугольного полигона- мира игры) P.P.S. если б я знал, для чего вам всё это- дал бы более подходящий совет

noname: в тему: много раз читал, что если tokens_delim=char, то разбивается строка по буквам. какие ещё значения предусмотрены для tokens_delim? наиболее очевидное использование токенов- в моём примере с парсером ex1pars в теме "живой игровой мир" долго не мог разобраться с массивами, так как их описание в URQL(new).doc содержит ошибку в примере. там совсем не то число выведется. а я,исходя из текста, блин не мог понять, как это оно работает.

noname: а если путь не обязан быть оптимальным? с вер-тью 1/2 двигаем в том же напр, что и на прошлом ходу, иначе: выбираем ось (напр Х) с вер-тью 2/3 приближаемся к игроку по Х с вер-тью 1/3 удаляемся от игрока по Х очень хороший алгоритм. обходит препятствия. коэффициенты хорошо бы подобрать поточнее P.S. если супер-умный непись не видел карты и не имеет нити Ариадны и других способов отмечать поля, то ЕДИНСТВЕННЫЙ возможный алгоритм выхода- на каждой развилке выбирать путь случайным образом. (но от развилки к развилке непись должен идти целеустремлённо и без крайней необходимости на развилке не выбирать тот путь, которым пришёл)

Chicago1920: Вопрос про токены и акурку. Можно ли сделать так?.. Рисуем токенами город (как в островах Терракона).выводим графическую картинку 7х7 клеток. Делаем заготовки клеток 1х1 (дом, дорога и т.д.) которые будем накладывать на главную. Допустим город 100х100 клеток.В итоге-выводится окошко 7х7 клеток (в центре стоит персонаж). А окружающие его клетки, в зависимости от их свойств (дом, дорога) накладываются на главную. (всего 49 клеточек).

noname: Chicago1920 пишет: Рисуем токенами город я так понимаю, что можно. НО токены тут ааабсолютно ни при чём.

Гость:

Nex: Chicago1920 зачем в текстовом квесте рисовать город?

Chicago1920: Там будет немного графики-карта

Хломидоманад: noname пишет: быстрый поиск пути м/ду двумя точками в лабиринте: 1.делаем один раз при создании лабиринта: прописываем в каждом доступном поле расстояние до центра лабиринта (исходя из центра идём и прописываем) теперь непись может легко находить дорогу к центру и от центра, (я пока понятно объясняю?) 2.когда неписю(знающему свои координаты) приспичило побывать в другой точке с известными координатами: а)помечаем путь от непися к центру б)помечаем путь от целевого поля к центру результирующий путь- поля, помеченные лишь одним из двух флагов в нашем случае каждое поле хранит три переменные: расстояние до центра и два флага 3.Очень ВАЖНЫЙ момент: надо, чтобы исходя из целевой точки мы предпочитали путь поближе к уже помеченному от непися.(я генерил лабиринт без зацикливаний- там это условие соблюдается автоматически) алгоритм будет автоматически работать для лабиринтов, не имеющих зацикливаний (то есть где нельзя обойти стену по кругу и нет полей 2х2, где можно ходить по кругу). в остальных случаях алгоритм тоже работает, но как его поправить- нужно смотреть исходя из вида лабиринта. P.S. вообще, алгоритм может быть гораздо проще, если наложить ограничения на вид лабиринта (типа стены прямые любой длины, не соприкасаются друг с другом и касаются не более чем одной стороной к границе. а ещё лучше, чтоб они все касались одной стороной края прямоугольного полигона- мира игры) P.P.S. если б я знал, для чего вам всё это- дал бы более подходящий совет Даже не имея сегодня времени вдумываться в смысл написанного: 1. В лабиринте, скажем, 10х10 нет центра :) 2. Если на карте больше одного персонажа, и они перемещаются каждый ход, то и пересчитывать расстояние нужно каждый ход, для того, чтобы один NPC мог обойти другого - так что способ ни разу не быстрый. К тому же, если все равно рассчитываешь расстояние каждый ход, можно считать сразу путь к точке назначения, мимо центра - а тогда способ не сильно отличается от приснопамятного волнового алгоритма.

Хломидоманад: noname пишет: в тему: много раз читал, что если tokens_delim=char, то разбивается строка по буквам. какие ещё значения предусмотрены для tokens_delim? Любые. Значение этой переменной - символ, который ты используешь для разбивки строки. Специальных значений, кроме char, я не помню. Возможно, их и не было.

qwerty: Хломидоманад пишет: В лабиринте, скажем, 10х10 нет центра :) не имеет значения. можно брать любую точку О суть алгоритма в том, что помечается путь из точки А в точку О и из точки Б в точку О затем отсекается та часть пути, которая помечена дважды- получаем путь из точки А в точку Б про центр сказал потому, что так в среднем путь А-О, Б-О получается меньше, что незначительно влияет на скорость вычислений- всё равно будет очень быстро --- хотя тогда может иметь место 'выбивание' одной точки в месте 'слияния' путей тогда лучше сделать так: на путях А-О и Б-О тоже отмечать расстояния до точек А и Б идём путём из А в О до тех пор, пока не встретим путь Б-О после этого- следуем до точки Б Если на карте больше одного персонажа, и они перемещаются каждый ход, то и пересчитывать расстояние нужно каждый ход, для того, чтобы один NPC мог обойти другого - так что способ ни разу не быстрый. К тому же, если все равно рассчитываешь расстояние каждый ход, можно считать сразу путь к точке назначения, мимо центра - а тогда способ не сильно отличается от приснопамятного волнового алгоритма. да, если имеют место быть перемещающиеся препятствия, то- да впрочем, в этом случае вообще нет уверенности в том, что путь из точки А в точку Б существует ----- собственно, мой алгоритм имеет свою область применимости, как и любой другой я предполагал, что в каждой локации может быть сколько угодно персонажей, а 'обойти' какую-то локацию на пути в другую в моём лабиринте невозможно в 100% случаев (имеется ввиду генератор лабиринта из конца темы про ЖИМ и начала темы ЖИМ:продолжение)

Ajenta: Крутая тема, надо будет изучить на досуге, ибо токены я всё равно так и не понимаю.

Korwin: Ajenta пишет: Крутая тема, надо будет изучить на досуге, ибо токены я всё равно так и не понимаю. Korwin чуть-чуть утешился. :-)

Iunel: На счет токенов, как вернуть Token_Delim по умолчанию, то есть пробел и знаки препинания, если я уже использовал Token_Delim=Char?

vito: Iunel пишет: На счет токенов, как вернуть Token_Delim по умолчанию, то есть пробел и знаки препинания, если я уже использовал Token_Delim=Char? Не уверена, что так будет правильно, но я бы сделала как-то так: [pre2] buff=Token_Delim Token_Delim=char ; Тут всякая хрень с разбиением строки на токены Token_Delim=buff [/pre2] Возможно, стоит еще попробовать использовать instr при присваивании значений Token_Delim. Эксперимент покажет...

Iunel: Да, работает. А что именно делает строка BUFF=Token_Delim? Кстати, INSTR обязателен, без него не работает. Возможно, потому что после "=" идет текст, а не число.

vito: Iunel пишет: Да, работает. А что именно делает строка BUFF=Token_Delim? Сохраняет значение переменной Token_Delim в некой переменной (произвольно обозванной buff) для последующего восстановления. Iunel пишет: Кстати, INSTR обязателен, без него не работает. Возможно, потому что после "=" идет текст, а не число. Ага, именно поэтому. Моему слабому девичьему уму никак не удается запомнить все хитросплетения работы со строками в URQ.



полная версия страницы