Автор | Сообщение |
|
| moderator
|
|
|
Отправлено: 23.03.08 23:35. Заголовок: Примеры кода
В этой теме будут примеры работающего кода для QSP.
|
|
Профиль
Цитата
Ответить
|
Ответов - 84
, стр:
1
2
3
4
5
All
[только новые]
|
|
|
Отправлено: 26.03.08 08:00. Заголовок: не то что бы код ста..
не то что бы код стал выглядеть понятней, зато работает. со стороны человек если глянет- не поймёт, что я написал. остался вопрос насчёт многомерных(например двумерных)массивов: Byte пишет: цитата: | сделать можно так: $вещи['<<индекс>>_<<вещь>>'] = 'камень' |
| в моём случае это как? на поле, например лес ложат вторую вещь, камень. т е поле#место$вещь2=37 на QSP: $место='лес' $вещь='2' $поле['<<$место>>_<<$вещь>>']='камень' м-да, возможности-то есть, но к конструкциям надо привыкнуть
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 26.03.08 08:06. Заголовок: #Начало gosub '..
#Начало gosub 'инициализация' gosub 'отображение ситуации' ------------ Конец Локации --------------- #инициализация set $полевид['11'] = 'лес' set $полевыходы['11'] = '....юг..' set $полеюг['11'] = '22' set $полевид['22'] = 'море' set $полевыходы['22'] = 'се......' set $полесе['22'] = '11' set $актёримя['1'] = 'Робинзон' set $актёрвид['1'] = 'тощий европеец' set $актёрместо['1'] = '22' set $актёримя['2'] = 'Пятница' set $актёрвид['2'] = 'мускулистый дикарь' set $актёрместо['2'] = '11' set $игрок = '1' ------------ Конец Локации --------------- #отображение ситуации *pl '<<$полевид[$актёрместо[$игрок]]>>' ------------ Конец Локации ---------------
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 26.03.08 08:09. Заголовок: приведённый выше при..
приведённый выше пример работает. жаль, только что индексы массива всегда в конце, из-за этого непонятно, что к чему относится. например в $актёрместо['1'] = '22' 1-номер актёра, а 22-занимаемое им место логичнее выглядело актёр1место=22 ну да ладно, это дело десятое. вернусь с работы- проверю двумерные массивы
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 26.03.08 08:12. Заголовок: noname, даже если ос..
noname, даже если оставить так как ты написал - то зачем там подвыражение? можно так: #отображение ситуации $полевид[$актёрместо[$игрок]] ------------ Конец Локации ---------------
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 26.03.08 08:16. Заголовок: Byte пишет: noname,..
Byte пишет: цитата: | noname, даже если оставить так как ты написал |
| а можно лучше? Byte пишет: цитата: | то зачем там подвыражение? |
| с непривычки. к тому же всё равно это выражение будет подвыражением в строчке типа: "вы видите <<..>>" спасибо за помощь!
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 26.03.08 08:23. Заголовок: noname, что-то ты пе..
noname, что-то ты перешёл на строки там где не нужно.. #Начало gosub 'инициализация' gosub 'отображение ситуации' ------------ Конец Локации --------------- #инициализация set $полевид[11] = 'лес' set $полевыходы[11] = '....юг..' set полеюг[11] = 22 set $полевид[22] = 'море' set $полевыходы[22] = 'се......' set полесе[22] = 11 set $актёримя[1] = 'Робинзон' set $актёрвид[1] = 'тощий европеец' set актёрместо[1] = 22 set $актёримя[2] = 'Пятница' set $актёрвид[2] = 'мускулистый дикарь' set актёрместо[2] = 11 set игрок = 1 ------------ Конец Локации --------------- #отображение ситуации *pl $полевид[актёрместо[игрок]] ------------ Конец Локации ---------------
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 26.03.08 19:17. Заголовок: хмм... QSP мне начин..
хмм... QSP мне начинает нравиться... хрен с ними, с этими токенами. попробую перевести свою прогу с урк на qsp. там как раз подошёл к важному моменту: хочу избавиться от дублирования процедур- что бы действия игрока обрабатывались теми же процедурами, что и действия неписей. тогда и баги будет гораздо проще вылавливать- я буду уверен, что возможности обычного непися и непися, которым управляет игрок одинаковы.
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 26.03.08 22:34. Заголовок: сделать можно так: $..
сделать можно так: $вещи['<<индекс>>_<<вещь>>'] = 'камень' что-то не очень понятно... массив типа a[x,y] как сделать? a,x,y- числа. как туды присвоить значение и как оттуда его получить?
|
|
Профиль
Цитата
Ответить
|
|
| moderator
|
|
|
Отправлено: 26.03.08 23:09. Заголовок: Двумерный массив раз..
Двумерный массив размерностью M на N : mass[x,y] отображается в виде одномерного так: mass[y*M+x] в QSP массивы - одномерные.
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 27.03.08 01:39. Заголовок: Из нового хелпа: Ка..
Из нового хелпа: Как организовать многомерный массив? 1) Самый удобный способ - использование массивов, индексируемых через строки. Например: $карта_вещь['<<x>>_<<y>>'] = 'палка' карта_нпс['<<x>>,<<y>>,<<z>>'] = 12 2) Отображение многомерного массива на одномерный. Например: $карта_вещь[x+y*ширина] = 'палка' карта_нпс[x+y*ширина+z*ширина*высота] = 12
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 27.03.08 01:43. Заголовок: noname пишет: сдела..
noname пишет: цитата: | сделать можно так: $вещи['<<индекс>>_<<вещь>>'] = 'камень' что-то не очень понятно... массив типа a[x,y] как сделать? a,x,y- числа. как туды присвоить значение и как оттуда его получить? |
| если a,x,y - числа, то: $имя_массива['<<a>>_<<x>>_<<y>>'] = 'строковое значение' $имя_массива['<<a>>_<<x>>_<<y>>'] & ! вывод значения если a - имя массива, то a['<<x>>_<<y>>'] = 3 a['<<x>>_<<y>>'] & ! вывод значения
|
|
Профиль
Цитата
Ответить
|
|
|
Отправлено: 27.03.08 07:35. Заголовок: Nex пишет: Двумерны..
Nex пишет: цитата: | Двумерный массив размерностью M на N : mass[x,y] отображается в виде одномерного так: mass[y*M+x] |
| не так всё просто- мне нужны массивы неизвестной/переменной размерности т.е. в первой версии было 4-ре локации, во второй- их уже 9-ть, потом придумаю, как их генерить- будет тысяча. хотелось бы, чтоб добавление локаций не было сопряжено с изменениями в программе. код должен быть легко расширяем хотя... если в M и N засунуть при инициализации максимальные координаты... всё равно не пойдёт: кол-во чего-нибудь(то же хранится по массивам) может увеличиваться по ходу игры. а ещё в большом проекте код должен быть легко читаем. mass[y*M+x] не очень наглядно будет выглядеть при использовании хотя, это-дело десятое
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 27.03.08 07:43. Заголовок: м-да... в урке с мас..
м-да... в урке с массивами было гораааздо проще нравилась мне простота урки. и ещё: можно ли хелп сделать в виде не-help, а чего угодно другого: ваш help долго листать- не срабатывает функция ускоренного колёсика мыши. и желательно, чтоб это был один длиннючий лист, усыпанный гиперссылками. в *.chm и *.doc и *.html всё в порядке.
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 27.03.08 09:11. Заголовок: noname, новый хелп у..
noname, новый хелп уже в chm. возможно, будет сразу pdf - вариант. а с простотой массивов - здесь просто немного построже.. в урке код и данные смешаны, это имхо как раз минус.. это "удобство" скрывает за собой кучу ограничений / ошибок. например, если в урке "a#x$_#y$", то аналогично в куспе "a['<<x>>_<<y>>']"..
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 27.03.08 19:02. Заголовок: а если в урке пол..
а если в урке поле11вещь7свойство2 ='несъедобно' поле11вещь7форма ='куб' поле11вещей_здесь = 9 и т д ну да ладно, всё равно это никто не использует. что мне нужно от платформы? простота работа с данными (урка устраивает, qsp то же, но не так) нормальное оформление (досурка не устраивает сложностями с русификацией) что мне нравится в qsp, так это: "(круглое | зелёное) яблоко" - где-то в хелпе вычитал надо это опробовать. для парсера- то, что нужно! хотя тогда уж лучше: "[круглое][зелёное]яблоко" поймёт и яблоко и круглое яблоко и зелёное яблоко и круглое зелёное яблоко (но не поймёт зелёное круглое яблоко) буду изучать всякие эти закорючки. хорошо бы их снабдить краткими примерами (хотя бы в одну строку) так как не ясно, как использовать /n перевод строки
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 27.03.08 21:14. Заголовок: что-то я не понял. с..
что-то я не понял. символы * и + применимы только к отдельным символам? а если "(круглое)*(зелёное)*яблоко" - не прокатит? к словам применим только | ? есть такой язык регулярный выражений не язык программирования, а скорее из какого-то раздела математики- так там было это попродуманнее. пытаюсь наковырять из QSP всё, что может пригодиться. получается странный набор... сразу скажу: возможности привлекательнее, чем на урке, но... но удобства- во дворе. причём во дворе у соседей.
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 27.03.08 21:28. Заголовок: *pl STRCOMP($text,..
*pl STRCOMP($text,'.осм.+') выдаёт или '0' - если строка не соответствует шаблону или '-1' - если соответствует. почему '-1'? какие ещё значения можно ожидать от STRCOMP? в хелпе вообще не сказано, что возвращает эта функция. и вообще: в хелпе о каждой функции, как правило сказано, что она делает. в данном случае сравнивает то с этим, НО от ФУНКЦИИ требуется в первую очередь- возвращаемое значение. важно- что она возвращает. что она при этом делает- неважно, лишь бы не слишком долго.
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 27.03.08 23:22. Заголовок: не подумайте, что я ..
не подумайте, что я противник QSP- наоборот, я на него уже фактически перешёл. пишу 'живой игровой мир' - у меня появились свежие идеи. прога будет маленькая- для начала, чтоб пальцы размять.
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 28.03.08 01:19. Заголовок: noname, фактически, ..
noname, фактически, тебе должно быть важно возвратила она 0 или нет. "-1" (не 0) для QSP это "истина", "0" - ложь. в хелп добавил описание возвращаемого значения.. noname пишет: цитата: | а если в урке поле11вещь7свойство2 ='несъедобно' поле11вещь7форма ='куб' поле11вещей_здесь = 9 и т д |
| не понимаю, почему у тебя с этим какие-то сложности возникают... $свойство['11_7_2'] = 'несъедобно' $форма['11_7'] = 'куб' вещей[11] = 9 можно и "более читаемо": $свойство['поле11_вещь7_2'] = 'несъедобно' $форма['поле11_вещь7'] = 'куб' вещей['поле11'] = 9
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 28.03.08 01:44. Заголовок: "(круглое)*(зелё..
"(круглое)*(зелёное)*яблоко" - такое тоже допустимо.. будет работать для "круглоеяблоко", "круглоекруглоеяблоко", "зелёноеяблоко", "круглоезеленоеяблоко", "круглоекруглоезелёноезелёноеяблоко" и т.п. я так понял, ты хотел написать: "(круглое\s)?(зелёное\s)?яблоко" тогда $pattern = '(круглое\s)?(зелёное\s)?яблоко' strcomp('круглое зелёное яблоко', $pattern) strcomp('круглое яблоко', $pattern) strcomp('зелёное яблоко', $pattern) strcomp('яблоко', $pattern) все строчки вернут -1. PS: это уже стандарт регулярных выражений.. то есть такой формат использует далеко не только QSP.. справку и учебники можно найти в интернете ("Perl Compatible Regular Expressions" / PCRE).
|
|
Профиль
Цитата
Ответить
|
Ответов - 84
, стр:
1
2
3
4
5
All
[только новые]
|
|