Форум переехал на новый адрес: http://qsp.su



АвторСообщение
moderator


ссылка на сообщение  Отправлено: 23.03.08 23:35. Заголовок: Примеры кода


В этой теме будут примеры работающего кода для QSP.

Спасибо: 0 
Профиль Цитата Ответить
Ответов - 84 , стр: 1 2 3 4 5 All [только новые]







ссылка на сообщение  Отправлено: 26.03.08 08:00. Заголовок: не то что бы код ста..


не то что бы код стал выглядеть понятней, зато работает.
со стороны человек если глянет- не поймёт, что я написал.

остался вопрос насчёт многомерных(например двумерных)массивов:
Byte пишет:

 цитата:
сделать можно так: $вещи['<<индекс>>_<<вещь>>'] = 'камень'


в моём случае это как?
на поле, например лес ложат вторую вещь, камень.
т е поле#место$вещь2=37
на QSP:
$место='лес'
$вещь='2'
$поле['<<$место>>_<<$вещь>>']='камень'

м-да, возможности-то есть, но к конструкциям надо привыкнуть

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





ссылка на сообщение  Отправлено: 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 '<<$полевид[$актёрместо[$игрок]]>>'
------------ Конец Локации ---------------

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





ссылка на сообщение  Отправлено: 26.03.08 08:09. Заголовок: приведённый выше при..


приведённый выше пример работает.
жаль, только что индексы массива всегда в конце,
из-за этого непонятно, что к чему относится.

например в $актёрместо['1'] = '22'
1-номер актёра, а 22-занимаемое им место
логичнее выглядело актёр1место=22

ну да ладно, это дело десятое.
вернусь с работы- проверю двумерные массивы

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




ссылка на сообщение  Отправлено: 26.03.08 08:12. Заголовок: noname, даже если ос..


noname, даже если оставить так как ты написал - то зачем там подвыражение?
можно так:

#отображение ситуации
$полевид[$актёрместо[$игрок]]
------------ Конец Локации ---------------

Спасибо: 1 
Профиль Цитата Ответить





ссылка на сообщение  Отправлено: 26.03.08 08:16. Заголовок: Byte пишет: noname,..


Byte пишет:

 цитата:
noname, даже если оставить так как ты написал


а можно лучше?
Byte пишет:

 цитата:
то зачем там подвыражение?


с непривычки. к тому же всё равно это выражение будет подвыражением
в строчке типа: "вы видите <<..>>"
спасибо за помощь!



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




ссылка на сообщение  Отправлено: 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 $полевид[актёрместо[игрок]]
------------ Конец Локации ---------------


Спасибо: 1 
Профиль Цитата Ответить





ссылка на сообщение  Отправлено: 26.03.08 19:17. Заголовок: хмм... QSP мне начин..


хмм...
QSP мне начинает нравиться...

хрен с ними, с этими токенами.
попробую перевести свою прогу с урк на qsp.
там как раз подошёл к важному моменту:
хочу избавиться от дублирования процедур-
что бы действия игрока обрабатывались теми же
процедурами, что и действия неписей.
тогда и баги будет гораздо проще вылавливать-
я буду уверен, что возможности обычного непися и
непися, которым управляет игрок одинаковы.

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





ссылка на сообщение  Отправлено: 26.03.08 22:34. Заголовок: сделать можно так: $..


сделать можно так: $вещи['<<индекс>>_<<вещь>>'] = 'камень'

что-то не очень понятно...

массив типа a[x,y] как сделать? a,x,y- числа.
как туды присвоить значение и как оттуда его получить?

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


ссылка на сообщение  Отправлено: 26.03.08 23:09. Заголовок: Двумерный массив раз..


Двумерный массив размерностью M на N :
mass[x,y]
отображается в виде одномерного так:
mass[y*M+x]

в QSP массивы - одномерные.

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




ссылка на сообщение  Отправлено: 27.03.08 01:39. Заголовок: Из нового хелпа: Ка..


Из нового хелпа:

Как организовать многомерный массив?

1) Самый удобный способ - использование массивов, индексируемых через строки. Например:

 
$карта_вещь['<<x>>_<<y>>'] = 'палка'
карта_нпс['<<x>>,<<y>>,<<z>>'] = 12


2) Отображение многомерного массива на одномерный. Например:

 
$карта_вещь[x+y*ширина] = 'палка'
карта_нпс[x+y*ширина+z*ширина*высота] = 12


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




ссылка на сообщение  Отправлено: 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>>'] & ! вывод значения


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





ссылка на сообщение  Отправлено: 27.03.08 07:35. Заголовок: Nex пишет: Двумерны..


Nex пишет:

 цитата:
Двумерный массив размерностью M на N :
mass[x,y]
отображается в виде одномерного так:
mass[y*M+x]


не так всё просто- мне нужны массивы неизвестной/переменной размерности
т.е. в первой версии было 4-ре локации, во второй- их уже 9-ть,
потом придумаю, как их генерить- будет тысяча.

хотелось бы, чтоб добавление локаций не было сопряжено с изменениями в программе.
код должен быть легко расширяем

хотя... если в M и N засунуть при инициализации максимальные координаты...
всё равно не пойдёт: кол-во чего-нибудь(то же хранится по массивам) может
увеличиваться по ходу игры.

а ещё в большом проекте код должен быть легко читаем.
mass[y*M+x] не очень наглядно будет выглядеть при использовании
хотя, это-дело десятое

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





ссылка на сообщение  Отправлено: 27.03.08 07:43. Заголовок: м-да... в урке с мас..


м-да...
в урке с массивами было гораааздо проще
нравилась мне простота урки.

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

в *.chm и *.doc и *.html всё в порядке.

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




ссылка на сообщение  Отправлено: 27.03.08 09:11. Заголовок: noname, новый хелп у..


noname, новый хелп уже в chm. возможно, будет сразу pdf - вариант.

а с простотой массивов - здесь просто немного построже.. в урке код и данные смешаны, это имхо как раз минус.. это "удобство" скрывает за собой кучу ограничений / ошибок.

например, если в урке "a#x$_#y$", то аналогично в куспе "a['<<x>>_<<y>>']"..

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





ссылка на сообщение  Отправлено: 27.03.08 19:02. Заголовок: а если в урке пол..


а если в урке
поле11вещь7свойство2 ='несъедобно'
поле11вещь7форма ='куб'
поле11вещей_здесь = 9
и т д

ну да ладно, всё равно это никто не использует.

что мне нужно от платформы?

простота работа с данными (урка устраивает, qsp то же, но не так)
нормальное оформление (досурка не устраивает сложностями с русификацией)

что мне нравится в qsp, так это:

"(круглое | зелёное) яблоко" - где-то в хелпе вычитал
надо это опробовать. для парсера- то, что нужно!

хотя тогда уж лучше:
"[круглое][зелёное]яблоко"
поймёт и яблоко
и круглое яблоко
и зелёное яблоко
и круглое зелёное яблоко
(но не поймёт зелёное круглое яблоко)

буду изучать всякие эти закорючки.
хорошо бы их снабдить краткими примерами
(хотя бы в одну строку)
так как не ясно, как использовать /n перевод строки

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





ссылка на сообщение  Отправлено: 27.03.08 21:14. Заголовок: что-то я не понял. с..


что-то я не понял.
символы * и + применимы только к отдельным символам?
а если
"(круглое)*(зелёное)*яблоко" - не прокатит?
к словам применим только |
?

есть такой язык регулярный выражений
не язык программирования, а скорее из
какого-то раздела математики-
так там было это попродуманнее.

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

сразу скажу: возможности привлекательнее, чем на урке, но...
но удобства- во дворе. причём во дворе у соседей.

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





ссылка на сообщение  Отправлено: 27.03.08 21:28. Заголовок: *pl STRCOMP($text,&#..


*pl STRCOMP($text,'.осм.+')
выдаёт или '0' - если строка не соответствует шаблону
или '-1' - если соответствует.

почему '-1'?
какие ещё значения можно ожидать от STRCOMP?
в хелпе вообще не сказано, что возвращает эта функция.

и вообще: в хелпе о каждой функции, как правило сказано, что она делает.
в данном случае сравнивает то с этим, НО
от ФУНКЦИИ требуется в первую очередь- возвращаемое значение.
важно- что она возвращает.
что она при этом делает- неважно, лишь бы не слишком долго.


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





ссылка на сообщение  Отправлено: 27.03.08 23:22. Заголовок: не подумайте, что я ..


не подумайте, что я противник QSP-
наоборот, я на него уже фактически перешёл.

пишу 'живой игровой мир' - у меня появились свежие идеи.
прога будет маленькая- для начала, чтоб пальцы размять.

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




ссылка на сообщение  Отправлено: 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


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




ссылка на сообщение  Отправлено: 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).

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

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



Создай свой форум на сервисе Borda.ru
Текстовая версия