Автор | Сообщение |
|
| неизвестный человек
|
Сообщение: 1
Зарегистрирован: 08.06.07
|
|
Отправлено: 08.06.07 13:15. Заголовок: Tokenы. С чем их едят
Можно ли поподробнее об использовании токенов. (В частности игра Острова от Терракона)
|
|
Профиль
Цитата
Ответить
|
Ответов - 80
, стр:
1
2
3
4
All
[только новые]
|
|
|
| почётное бревно
|
Сообщение: 272
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.06.07 21:43. Заголовок: Re:
Из многочисленных учебников Корвина: Оператор разбиения строки - tokens Для удобства работы с длинными строками введен оператор разбиения строки на отдельные части. Разбиение проводится по разделителям, хранящимся в строковой системной переменной tokens_delim (по умолчанию в ней хранится пробел и четыре знака препинания: точка, запятая, вопрос и восклицальный знак, то есть она разбивает предложение на отдельные слова) Если равна char, то строка делится на отдельные символы. tokens - команда делит строку на подстроки (разделитель - tokens_delim) Результаты сохраняются в строках вида tokenN, где N - номер подстроки. (очевидно, что если tokens_delim равно char, то в этих строках содержатся отдельные символы). Применение: tokens <стр. перем> tokens_num - содержит число подстрок в результате расщепления строки(например, слов в предложении), строковые переменные token1, token2 ... token# tokens_num$ содержат сами токены (например, слова). Операция разделения на подстроки никак не сказывается на исходной текстовой переменной. Пример. Поиск в токенах слова «гоблин»: :1 instr pars=. input pars tokens pars i=1 :loop if token#i$=«гоблин» then pln Я не гоблин! - истерически кричит урук-хай & goto 1 if token#i$=«пока» then quit if i‹tokens_num then i=i+1 & goto loop pln Не понимаю goto 1 Распечатка токенов: :0 instr a= input a tokens a pln #tokens_num$ tokens: i=1 :loop if i‹=tokens_num then pln #i$: #%token#i$$ & i=i+1 & goto loop else ; _if not(a=«bye») then goto 0 else end
|
|
Профиль
Цитата
Ответить
|
|
| неизвестный человек
|
Сообщение: 2
Зарегистрирован: 08.06.07
|
|
Отправлено: 11.06.07 13:36. Заголовок: Re:
а подробнее - для чего они вообще используются?
|
|
Профиль
Цитата
Ответить
|
|
| почётное бревно
|
Сообщение: 274
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.06.07 15:40. Заголовок: Re:
Ну, это единственный оператор для работы со строками(кроме, конечно, сравнений и *?). То есть если ты хочешь как-то оперировать текстовой информацией записанной в переменную, то тут без токенов никак не обойтись. К примеру, ты можешь записывать в строку список предметов которые лежат у героя в кармане instr в_кармане="нож, зажигалка, разводной ключ, злая обезъяна, семечки" И если вдруг понадобится вычленить какой-нибудь предмет из этого списка, то на помощь приходят токены. делаем "tokens в_кармане" и у нас теперь в переменной token2 содержится "зажигалка", а в token5 "семечки"... Что с ними делать потом решай уже сам :) Терр, в островах, насколько я понимаю разбивал строчки не по запятой, а на символы(такая возможность появляется когда tokens_delim=char) и уже отдельно в цикле анализировал их(в его случае каждый символ это точка на карте по которой ходит ГГ), можно ли по ним ходить и тд, а потом выводил измененную карту на экран.
|
|
Профиль
Цитата
Ответить
|
|
| неизвестный человек
|
Сообщение: 3
Зарегистрирован: 08.06.07
|
|
Отправлено: 12.06.07 09:11. Заголовок: Re:
Понятно теперь. Полезная вещь. А как дела обстоят в акурке? Почему мне не удается Острова Терракона портировать на нее?
|
|
Профиль
Цитата
Ответить
|
|
| почётное бревно
|
Сообщение: 275
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.06.07 12:10. Заголовок: Re:
Я честно, ни разу ничего не писал и не отлаживал под акурку :) Ну там может быть две проблемы - ловля клавиш пемещения и частое обновление экрана. В досурке вся карта перерисовывается поверху уже написанного текста(есть специальный ключ для этого), а в акурке для вывода используется richtextbox где такое невозможно - приходится каждый раз заново загружать текст... И ещё там с цветами я помню Акела что-то мудрил. Изменял цвет текста с помощью выделения оного - отсюда тоже всяческие неприятные мелькания и тормоза пойдут.
|
|
Профиль
Цитата
Ответить
|
|
| неизвестный человек
|
Сообщение: 4
Зарегистрирован: 08.06.07
|
|
Отправлено: 27.06.07 14:47. Заголовок: Немного не в тему, но... Пишу я квест под досурку. Все было терпимо и тут досурка пишет: ошибка if без then. Как накти где это? Обьем 100 кб :)
|
|
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 295
Зарегистрирован: 25.05.05
|
|
Отправлено: 27.06.07 15:04. Заголовок: Re:
Запусти в акурке. Если пойдет - будешь знать по тексту в какой локации примерно искать
|
|
Профиль
Цитата
Ответить
|
|
| неизвестный человек
|
Сообщение: 5
Зарегистрирован: 08.06.07
|
|
Отправлено: 27.06.07 15:44. Заголовок: А др. Нет вариантов? Игра в псевдографике . Там много всяких ифовов... Акурка не хочет.
|
|
Профиль
Цитата
Ответить
|
|
| почётное бревно
|
Сообщение: 279
Зарегистрирован: 17.05.05
|
|
Отправлено: 27.06.07 16:32. Заголовок: Re:
У меня обычно if без then возникает когда я путаю в условиях ифа & и and :) В досурке есть примитивный дебаггер, который включается нажатием кнопки a, можно поробовать его. В любом случае, всегда помогает способ отладки - "запряги Вика", но этот способ нельзя использовать слишком часто :)
|
|
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 296
Зарегистрирован: 25.05.05
|
|
Отправлено: 28.06.07 04:44. Заголовок: Re:
А у меня была ошибка 'tnen' вместо 'then' Вообще, надо проверять те локации, которые создавались последними. Кстати, мэтры, а почему собственно не запускается? Я думал, раз интерпретатор, то должно дойти до "сбойной" локации и выдать ошибку там? Chicago1920 - кинь мне на почту свою игрушку (почта в профиле). Проверю. И пиши, пожалуйста, свои посты не в заголовок, а ниже, ладно?
|
|
Профиль
Цитата
Ответить
|
|
| неизвестный человек
|
Сообщение: 6
Зарегистрирован: 08.06.07
|
|
Отправлено: 28.06.07 08:46. Заголовок: Re:
Всем спасибо. Работает. Вместо and было &. Нотеперрь мой проц (атлон 64 3500+) загружен под 100 процентов и игра тормрзит.... я неудачник))
|
|
Профиль
Цитата
Ответить
|
|
|
| постоянный участник
|
Сообщение: 297
Зарегистрирован: 25.05.05
|
|
Отправлено: 28.06.07 09:38. Заголовок: Re:
Chicago1920 пишет: цитата: | Нотеперрь мой проц (атлон 64 3500+) загружен под 100 процентов и игра тормрзит.... я неудачник)) |
|
Однако, что-то неоптимально...
|
|
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 92
Зарегистрирован: 20.12.05
|
|
Отправлено: 28.06.07 13:23. Заголовок: Re:
Chicago1920 пишет: цитата: | Всем спасибо. Работает. Вместо and было &. Нотеперрь мой проц (атлон 64 3500+) загружен под 100 процентов и игра тормрзит.... я неудачник)) |
| Та же самая ерунда была у меня с моими экспериментами (правда, процессор у меня похуже:)) - из-за использования волнового алгоритма. Под виндами, по ходу, тут ничего не попишешь. Зато в чистом досе летало... возможно, получше шло бы и в линуксе. Посмотри сам. Такова специфика досурки... смирись (и жди, как и все, мифического релиза) или переходи на C:). Собственно, играть-то можно и при загрузке CPU на 100%. Korwin пишет: цитата: | Однако, что-то неоптимально... |
| Ммм, досурка?;)
|
|
Профиль
Цитата
Ответить
|
|
| неизвестный человек
|
Сообщение: 7
Зарегистрирован: 08.06.07
|
|
Отправлено: 29.06.07 09:25. Заголовок: Re:
Вот так всегда. Придется делать обрезание игры по фичям. Может быть поможет быть.
|
|
Профиль
Цитата
Ответить
|
|
| почётное бревно
|
Сообщение: 280
Зарегистрирован: 17.05.05
|
|
Отправлено: 29.06.07 10:13. Заголовок: Re:
А что там у тебя, вторые острова? :)
|
|
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 93
Зарегистрирован: 20.12.05
|
|
Отправлено: 29.06.07 12:23. Заголовок: Re:
Chicago1920 пишет: цитата: | Вот так всегда. Придется делать обрезание игры по фичям. Может быть поможет быть. |
| Обрезание - обычай, конечно, древний, но вовсе не обязательный)... представь, что пишешь что-то в духе Doom 4, что будет по определению тормозить на любом компьютере;). Специфика еще в том, что на любой машине от 350 до 3500 MHz тормоза будут, в сущности, одинаковые... но играть-то при этом можно кое-как:).
|
|
Профиль
Цитата
Ответить
|
|
| неизвестный человек
|
Сообщение: 8
Зарегистрирован: 08.06.07
|
|
Отправлено: 29.06.07 12:24. Заголовок: Re:
Что то вроде Островов. Просто больше фишек
|
|
Профиль
Цитата
Ответить
|
|
| хитромудрый
|
Сообщение: 94
Зарегистрирован: 22.05.05
|
|
Отправлено: 30.06.07 11:51. Заголовок: Re:
Круто. Будет очень антересно посмотреть.
|
|
Профиль
Цитата
Ответить
|
|
| неизвестный человек
|
Сообщение: 9
Зарегистрирован: 08.06.07
|
|
Отправлено: 17.07.07 08:36. Заголовок: Re:
Может кто подскажет по старой дружбе... :) Допустим имеется игровое поле 10х10 клеток. По нему передвигается персонаж. NPC должен приблизится к нему. Примерный код: x1=5 ;координата х игрока y1=5 ;y игрока x2=5 ;координата х NPC y2=4 ;y NPC ........... ........... proc 1 .......... :1 if x2>x1 then x2=x2-1 if x2<x1 then x2=x2+1 if y2>y1 then y2=y2-1 if y2<y1 then y2=y2+1 end .......... .......... В чем ошибка?
|
|
Профиль
Цитата
Ответить
|
|
| почётное бревно
|
Сообщение: 295
Зарегистрирован: 17.05.05
|
|
Отправлено: 17.07.07 09:20. Заголовок: Re:
Приблизиться это значит встать на те же координаты? Не вижу никакой криминальной ошибки :) Все шагает нормально.. Если только у тебя начальные координаты не в той же локации что вызывается постоянно :) x1=5 ;координата х игрока y1=5 ;y игрока x2=3 ;координата х NPC y2=4 ;y NPC pln Начальные координаты: pln #x1$ #y1$ ME pln #x2$ #y2$ NPC btn 0, шаг end :0 if x1=x2 and y1=y2 then pln Уже на месте & end proc 1 pln Шагнул: pln #x1$ #y1$ ME pln #x2$ #y2$ NPC btn 0, шаг end :1 if x2>x1 then x2=x2-1 if x2<x1 then x2=x2+1 if y2>y1 then y2=y2-1 if y2<y1 then y2=y2+1 end
|
|
Профиль
Цитата
Ответить
|
Ответов - 80
, стр:
1
2
3
4
All
[только новые]
|
|