АвторСообщение
неизвестный человек




Сообщение: 1
Зарегистрирован: 08.06.07
ссылка на сообщение  Отправлено: 08.06.07 13:15. Заголовок: Tokenы. С чем их едят


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

Спасибо: 0 
Профиль Цитата Ответить
Ответов - 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


Спасибо: 0 
Профиль Цитата Ответить
неизвестный человек




Сообщение: 2
Зарегистрирован: 08.06.07
ссылка на сообщение  Отправлено: 11.06.07 13:36. Заголовок: Re:


а подробнее - для чего они вообще используются?

Спасибо: 0 
Профиль Цитата Ответить
почётное бревно




Сообщение: 274
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.06.07 15:40. Заголовок: Re:


Ну, это единственный оператор для работы со строками(кроме, конечно, сравнений и *?). То есть если ты хочешь как-то оперировать текстовой информацией записанной в переменную, то тут без токенов никак не обойтись.
К примеру, ты можешь записывать в строку список предметов которые лежат у героя в кармане
instr в_кармане="нож, зажигалка, разводной ключ, злая обезъяна, семечки"
И если вдруг понадобится вычленить какой-нибудь предмет из этого списка, то на помощь приходят токены.
делаем "tokens в_кармане" и у нас теперь в переменной token2 содержится "зажигалка", а в token5 "семечки"... Что с ними делать потом решай уже сам :)
Терр, в островах, насколько я понимаю разбивал строчки не по запятой, а на символы(такая возможность появляется когда tokens_delim=char) и уже отдельно в цикле анализировал их(в его случае каждый символ это точка на карте по которой ходит ГГ), можно ли по ним ходить и тд, а потом выводил измененную карту на экран.

Спасибо: 0 
Профиль Цитата Ответить
неизвестный человек




Сообщение: 3
Зарегистрирован: 08.06.07
ссылка на сообщение  Отправлено: 12.06.07 09:11. Заголовок: Re:


Понятно теперь. Полезная вещь. А как дела обстоят в акурке? Почему мне не удается Острова Терракона портировать на нее?

Спасибо: 0 
Профиль Цитата Ответить
почётное бревно




Сообщение: 275
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.06.07 12:10. Заголовок: Re:


Я честно, ни разу ничего не писал и не отлаживал под акурку :) Ну там может быть две проблемы - ловля клавиш пемещения и частое обновление экрана. В досурке вся карта перерисовывается поверху уже написанного текста(есть специальный ключ для этого), а в акурке для вывода используется richtextbox где такое невозможно - приходится каждый раз заново загружать текст... И ещё там с цветами я помню Акела что-то мудрил. Изменял цвет текста с помощью выделения оного - отсюда тоже всяческие неприятные мелькания и тормоза пойдут.

Спасибо: 0 
Профиль Цитата Ответить
неизвестный человек




Сообщение: 4
Зарегистрирован: 08.06.07
ссылка на сообщение  Отправлено: 27.06.07 14:47. Заголовок: Немного не в тему, но... Пишу я квест под досурку. Все было терпимо и тут досурка пишет: ошибка if без then. Как накти где это? Обьем 100 кб :)




Спасибо: 0 
Профиль Цитата Ответить
постоянный участник


Сообщение: 295
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 27.06.07 15:04. Заголовок: Re:


Запусти в акурке. Если пойдет - будешь знать по тексту в какой локации примерно искать

Спасибо: 0 
Профиль Цитата Ответить
неизвестный человек




Сообщение: 5
Зарегистрирован: 08.06.07
ссылка на сообщение  Отправлено: 27.06.07 15:44. Заголовок: А др. Нет вариантов? Игра в псевдографике . Там много всяких ифовов... Акурка не хочет.




Спасибо: 0 
Профиль Цитата Ответить
почётное бревно




Сообщение: 279
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.06.07 16:32. Заголовок: Re:


У меня обычно if без then возникает когда я путаю в условиях ифа & и and :)

В досурке есть примитивный дебаггер, который включается нажатием кнопки a, можно поробовать его.

В любом случае, всегда помогает способ отладки - "запряги Вика", но этот способ нельзя использовать слишком часто :)

Спасибо: 0 
Профиль Цитата Ответить
постоянный участник


Сообщение: 296
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 28.06.07 04:44. Заголовок: Re:


А у меня была ошибка 'tnen' вместо 'then'

Вообще, надо проверять те локации, которые создавались последними. Кстати, мэтры, а почему собственно не запускается? Я думал, раз интерпретатор, то должно дойти до "сбойной" локации и выдать ошибку там?

Chicago1920 - кинь мне на почту свою игрушку (почта в профиле). Проверю. И пиши, пожалуйста, свои посты не в заголовок, а ниже, ладно?


Спасибо: 0 
Профиль Цитата Ответить
неизвестный человек




Сообщение: 6
Зарегистрирован: 08.06.07
ссылка на сообщение  Отправлено: 28.06.07 08:46. Заголовок: Re:


Всем спасибо. Работает. Вместо and было &. Нотеперрь мой проц (атлон 64 3500+) загружен под 100 процентов и игра тормрзит.... я неудачник))

Спасибо: 0 
Профиль Цитата Ответить
постоянный участник


Сообщение: 297
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 28.06.07 09:38. Заголовок: Re:


Chicago1920 пишет:

 цитата:
Нотеперрь мой проц (атлон 64 3500+) загружен под 100 процентов и игра тормрзит.... я неудачник))

Однако, что-то неоптимально...

Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Сообщение: 92
Зарегистрирован: 20.12.05
ссылка на сообщение  Отправлено: 28.06.07 13:23. Заголовок: Re:


Chicago1920 пишет:

 цитата:

Всем спасибо. Работает. Вместо and было &. Нотеперрь мой проц (атлон 64 3500+) загружен под 100 процентов и игра тормрзит.... я неудачник))


Та же самая ерунда была у меня с моими экспериментами (правда, процессор у меня похуже:)) - из-за использования волнового алгоритма. Под виндами, по ходу, тут ничего не попишешь. Зато в чистом досе летало... возможно, получше шло бы и в линуксе. Посмотри сам.
Такова специфика досурки... смирись (и жди, как и все, мифического релиза) или переходи на C:). Собственно, играть-то можно и при загрузке CPU на 100%.
Korwin пишет:

 цитата:
Однако, что-то неоптимально...


Ммм, досурка?;)

Спасибо: 0 
Профиль Цитата Ответить
неизвестный человек




Сообщение: 7
Зарегистрирован: 08.06.07
ссылка на сообщение  Отправлено: 29.06.07 09:25. Заголовок: Re:


Вот так всегда. Придется делать обрезание игры по фичям. Может быть поможет быть.

Спасибо: 0 
Профиль Цитата Ответить
почётное бревно




Сообщение: 280
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.06.07 10:13. Заголовок: Re:


А что там у тебя, вторые острова? :)

Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Сообщение: 93
Зарегистрирован: 20.12.05
ссылка на сообщение  Отправлено: 29.06.07 12:23. Заголовок: Re:


Chicago1920 пишет:

 цитата:

Вот так всегда. Придется делать обрезание игры по фичям. Может быть поможет быть.


Обрезание - обычай, конечно, древний, но вовсе не обязательный)... представь, что пишешь что-то в духе Doom 4, что будет по определению тормозить на любом компьютере;). Специфика еще в том, что на любой машине от 350 до 3500 MHz тормоза будут, в сущности, одинаковые... но играть-то при этом можно кое-как:).

Спасибо: 0 
Профиль Цитата Ответить
неизвестный человек




Сообщение: 8
Зарегистрирован: 08.06.07
ссылка на сообщение  Отправлено: 29.06.07 12:24. Заголовок: Re:


Что то вроде Островов. Просто больше фишек

Спасибо: 0 
Профиль Цитата Ответить
хитромудрый




Сообщение: 94
Зарегистрирован: 22.05.05
ссылка на сообщение  Отправлено: 30.06.07 11:51. Заголовок: Re:


Круто. Будет очень антересно посмотреть.

Спасибо: 0 
Профиль Цитата Ответить
неизвестный человек




Сообщение: 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
..........
..........

В чем ошибка?

Спасибо: 0 
Профиль Цитата Ответить
почётное бревно




Сообщение: 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

Спасибо: 0 
Профиль Цитата Ответить
Ответов - 80 , стр: 1 2 3 4 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 5
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет