АвторСообщение
noname
постоянный участник




Сообщение: 2
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 19.03.08 14:05. Заголовок: живой игровой мир


это особое направление для УРК-работ:

пусть все NPC живут своей жизнью, а не ждут ГГ. я подготовил пример, где они могут ходить по всем доступным локациям или не ходить (всего 4-ре персонажа, номер персонажа, которым будет управлять игрок задан в переменной 'игрок')

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


Korwin
постоянный участник


Сообщение: 340
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 21.03.08 09:28. Заголовок: noname пишет: если ..


noname пишет:

 цитата:
если бы милена была не ПОЧТИ а совсем совместима- я бы проверил на ней свою прогу.



не смеши мои тапочки, дружище... задача установления полной совместимости является НЕТРИВИАЛЬНОЙ.

Проще сразу писать на Милене, благо автор "жив" и работает над системой регулярно. Или уж тогда правда на QSP, где много действий на одной кнопке присутствуют изначально. Но QSP работает только с целыми числами - если это важно, то надо думать.

Спасибо: 0 
Профиль
Борщевский



Сообщение: 56
Зарегистрирован: 02.08.07
ссылка на сообщение  Отправлено: 21.03.08 14:23. Заголовок: noname пишет: а что..


noname пишет:

 цитата:
а что если в моём примере получится 90 кнопок, как досурка на это отреагирует?


Я знаю как я на это отреагирую
Если я увижу игру в которой 90 кнопок, я закрою ее сразу же, и больше никогда не буду даже пытаться в нее играть
noname пишет:

 цитата:
а то пишут милену, которая с ними совместима,


она совместима никогда не будет, это даже теоретически невозможно, потому что досурка и акурка несовместимы между собой, а акурка еще и между версиями


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




Сообщение: 23
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 21.03.08 18:51. Заголовок: Korwin пишет: Спрос..


Korwin пишет:

 цитата:
Спроси у Виктора его программу по конвертации xbtn в подпрограммы.



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

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

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

хотя, хорошо бы и QSP изучить...

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




Сообщение: 24
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 21.03.08 19:25. Заголовок: ознакомился с описан..


ознакомился с описанием QSP, и вот что я про него скажу:

в отличие от урки это НЕ универсальный язык. в урке я могу смело игнорировать их инвентарь и неточное сравнение строк, которые, если я и буду использовать, то не так, как это предполагалось авторами. в QSP я не могу(ведь так?)игнорировать их систему добавления объектов и действий и писать всё по своему.

почему это важно:

я не терплю ограничений, так как из-за них на каком-то этапе окажется, что я не в состоянии реализовать очередной этап своего замысла. поэтому до урки я выбирал либо C++ либо Delphi. побаловавшись с уркой я понял, что некоторые вещи писать на ней быстрее и проще. При этом моё видение игрового мира таково, что RTADS меня не устроил (это было около полутора лет назад).

в моём видении игрового мира персонажи не перемещаются по локациям. даже ГГ. они только думают, что перемещаются. такая иллюзия создаётся переменной "актёр#номер_актёра$_место", которая хранит предполагаемое местонахождение данного персонажа(аналогично и для других объектов). создание иллюзии игрового мира заключается в правильной обработке набора таких переменных каждого объекта. такой подход даёт максимальные возможности автору. вплоть до создания и удаления объектов, персонажей, локаций во время игры, как результат их взаимодействия.(например, если у пары рождается ребёнок- даём ему наугад имя из списка имён его пола, фамилию родителей и отчество, задаём некоторые отношения с родителями и его личные характеристики- и так может смениться сколь угодно много поколений).(или например игрок может редактировать игровой мир в процессе игры, пользуясь мастер-командами, как это делается в MUD-ах, а затем сохранить получившийся квест).

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

хорошо бы изучить Милену... но есть ли на неё описание, и насколько она страдает багами?

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




Сообщение: 26
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 21.03.08 19:30. Заголовок: а ещё посты Guest и ..


а ещё посты Guest и Борщевского мне не нравятся то ли своим духом антирекламы, то ли какой-то въедливой ехидцей... ну как-то не увидел я рыцарей РИЛ в сверкающих доспехах. в урк-сообществе общение как-то более приятно.

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




Сообщение: 28
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 21.03.08 21:20. Заголовок: вроде всё продумал, ..


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

...
instr актёр6имя = Выносливый Пещерный Гном
актёр6место = 33
актёр6сила = 4
актёр6ловкость = 3
актёр6вещей = 0
поле33_актёров = поле33_актёров+1
макс_актёров = 6; обязательно должен быть хотя бы один актёр
// игрок
pln Выбери своего персонажа:
выбор =0
счётчик=0
:инициализация_метка_1
счётчик=счётчик+1
xbtn предварительный_выбор_игрока_локация,{выбор=#счётчик$},#%актёр#счётчик$имя$
if счётчик<макс_актёров then goto инициализация_метка_1
// завершение инициализации
end

;------------------------------------------------
:предварительный_выбор_игрока_локация
pln Твой выбор - #%актёр#выбор$имя$
pln Сила = #актёр#выбор$Сила$
pln Ловкость = #актёр#выбор$Ловкость$
btn окончательный_выбор_игрока_локация, играть этим персонажем
xbtn инициализация_метка_1,{счётчик=0 & pln Выбери своего персонажа:}, вернуться в меню выбора
end

;------------------------------------------------
:окончательный_выбор_игрока_локация
игрок = выбор
goto главная_локация
end

;------------------------------------------------
;************************************************
:главная_локация
proc мотор_локация ; ходят все NPC
proc отображение_локация
goto ход_игрока_локация ; последний в очереди
end
;************************************************
...

да, два удобных xbtn: коротко и ясно!
ну ничего, мучиться буду не я, а игроки...

да, и вот ещё что: ну сделай Victor переключение на русский!
представь: скачал новый посетитель твою досурку, поиграл в игру про Таню Одел (Горафовская вроде бы), и раз- надо вводить текст по русски. что делать? вышел из игры,
почитал тексты- ага, нужен unikbd.

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

а мой игровой мир с текстовым вводом (делаю) напряжёт его ещё раз. и не раз.

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




Сообщение: 29
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 21.03.08 23:25. Заголовок: да, кстати: у меня н..


да, кстати:
у меня нет unikbd.com...
и в и-нете я не смог его скачать
(нашёл только образ загрузочной дискеты с ним, но у меня нет дисковода)
и в комп фирме не в любой нынче есть досовские утилиты...

кто даст ссылку на работающий unikbd.com - тот даст мне возможность продолжать работу над примером№2 в эту тему.

я щёлкну спасибо...

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


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




Сообщение: 355
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.03.08 23:56. Заголовок: Можно использовать л..


Можно использовать любой переключатель клавиатуры, начиная с keyrus( http://ru.wikipedia.org/wiki/KeyRus ). А если запускать игры в фаре, то там раскладка переключается вместе с виндовской. А ещё я как то написал для досурки декодер в кирилицу через аски коды и anykey. Правда, он не совсем корректен, но его даже использовали. Кажется, Корвин в своем "Джинне из машины".

Спасибо: 1 
Профиль
Mioirel



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 21.03.08 23:58. Заголовок: Смелая задумка. Жела..


Смелая задумка. Желаю успехов noname. Кстати, qsp достаточно универсален, и на нем в принципе можно реализовать текстовую игру любой сложности задумки. От cya до roguelike и “чистокровной парсерной if”.

Спасибо: 0 
noname
постоянный участник




Сообщение: 30
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 22.03.08 08:56. Заголовок: Евгений пишет: Можн..


Евгений пишет:

 цитата:
Можно использовать любой переключатель клавиатуры, начиная с keyrus

Евгений пишет:

 цитата:
А ещё я как то написал для досурки декодер в кирилицу через аски коды и anykey. Правда, он не совсем корректен,


keyrus тоже несовсем корректен.
давным-давно он подглючивал на 386-ых, но и сейчас я слыхал, с ним могут быть проблемы.
Евгений пишет:

 цитата:
А если запускать игры в фаре, то там раскладка переключается вместе с виндовской.


хорошая новость! буду пробовать...

вообще-то можно и винду так настроить, что б в дос-окне раскладка переключалась особыми клавишами, но там свои заморочки.

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




Сообщение: 31
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 22.03.08 09:07. Заголовок: Mioirel пишет: Кста..


Mioirel пишет:

 цитата:
Кстати, qsp достаточно универсален, и на нем в принципе можно реализовать текстовую игру любой сложности задумки. От cya до roguelike и “чистокровной парсерной if”.


когда я постнул (год - полтора назад) про трудности в реализации кой-чего на досурке, мне через час-два кинули ссылку на свежеиспечённый qwerty-bench-vic. что касается QSP, то с первого взгляда его описалово выглядит непривычно, а фэны QSP только расхваливают его и хвастаются хорошей технической поддержкой, но кода я не вижу.
P.S.
на RTADS тоже быстро отвечали на мои запросы, что очень приятно
P.P.S.
что мне нужно от QSP-мастера (если есть такой, заинтересованный в продвижении этого языка): код проги, в которой будет возможность перемещаться, брать/выкладывать предметы, игрок выбирает любого персонажа для игры, каждый персонаж на своём ходу выбирает любое из возможных действий (наугад с равной вероятностью) и выполняет его. у игрока столько же возможностей, сколько у любого другого персонажа (собственно игрока там и нет- есть номер управляемого им персонажа).

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

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




Сообщение: 32
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 22.03.08 09:17. Заголовок: Mioirel пишет: Смел..


Mioirel пишет:

 цитата:
Смелая задумка. Желаю успехов noname.


пока что моя очередная моя задумка полностью описана в предыдущем посте.

у меня там 6-ть персонажей, 9-ть локаций(3х3), предметы пока толком не сделал, но для тестинга их нужно штук 9-ть (а то один из персонажей может утащить их сразу 6-ть за раз).

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

Спасибо: 0 
Профиль
Byte



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 22.03.08 10:03. Заголовок: noname пишет: в урк..


noname пишет:

 цитата:
в урке я могу смело игнорировать их инвентарь и неточное сравнение строк, которые, если я и буду использовать, то не так, как это предполагалось авторами. в QSP я не могу(ведь так?)игнорировать их систему добавления объектов и действий и писать всё по своему.


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

Спасибо: 0 
noname
постоянный участник




Сообщение: 33
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 22.03.08 13:17. Заголовок: что я могу ответить ..


что я могу ответить на все хвалебные статьи о QSP см в моём посте чуть выше:

 цитата:
Отправлено: Сегодня 09:07. Заголовок: Mioirel пишет: Кста..


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

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




Сообщение: 34
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 22.03.08 15:31. Заголовок: Евгений пишет: А ес..


Евгений пишет:

 цитата:
А если запускать игры в фаре, то там раскладка переключается вместе с виндовской.


эт правда... только, если из-под фара запустить досурку, то ей это переключение раскладки нипочём... а я тебе уже спасибо ляпнул.
P.S.
прошу проверять свои советы до того, как их постить- всяких непроверенных идей у меня у самого вагон. а я, блин с этим фаром времени хоть и мало потерял, но всё равно жалко. да ладно, пригодится мне Far ещё не раз- знатная программулина.
P.P.S.
unikbd.com должен лежать в одном архиве с досуркой, или хотя бы поблизости.

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




Сообщение: 37
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 22.03.08 16:13. Заголовок: читал в другой теме ..


читал в другой теме этого форума, что Акурка1.28pre1 нормально работает...
слухи не подтвердились. то, что нормально прокатывало в pre6, первая не хавает.
неправильно работает такой кусок кода:

...
instr актёр6имя = Выносливый Пещерный Гном
актёр6место = 33
актёр6сила = 4
актёр6ловкость = 3
актёр6вещей = 0
поле33_актёров = поле33_актёров+1
макс_актёров = 6; обязательно должен быть хотя бы один актёр
; игрок
pln Выбери своего персонажа:
выбор =0
счётчик=0
:инициализация_метка_1
счётчик=счётчик+1
xbtn предварительный_выбор_игрока_локация,{выбор=#счётчик$},#%актёр#счётчик$имя$
if счётчик<макс_актёров then goto инициализация_метка_1
...

вроде и xbtn отдельно работает и всё остальное, запускаю на pre6- выводит список персонажей, на pre1 - синтакс ерроры, а если обрубить остальную часть программы и дать кусок сначала досюда(см выше), то даёт одну кнопку с капчионом "0".

может {выбор=#счётчик$} не так понимает?
вобщем, плюнул я на Акурку. попробую доделать свой пример№2 на досурке, а затем начну свой интерпретатор URQL под винду. 100% совместимый с досуркой + некоторые доп возможности.

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




Сообщение: 38
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 22.03.08 21:13. Заголовок: прошу прощения, что ..


прошу прощения, что засыпал вас постами.
боюсь, из-за их обилия никто не будет их читать.
но на следующий мой пост стоит обратить внимание.
что я изменил в своём примере:
(у меня был почти доделан 2-й пример, но не работал)

переделал его концепт дважды
расширил игровой мир
и пару раз запутался в наполовину переделанной программе
доделал обработку ввода игрока (простейший парсер)
убрал пока все вещи и действия с ними (опустился до 1-го примера)
оттестил прогу и убрал все баги (странности интерфейса- не баг!)

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

продолжу работу до полностью работающего примера№2
и подумаю, то ли писать пример№3, то ли интерпретатор URQL

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




Сообщение: 39
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 22.03.08 21:15. Заголовок: ;ex1pars.qst ;первый..


;ex1pars.qst
;первый пример. парсерная версия
;------------------------------------------------
:инициализация_локация
; начало инициализации
invkill
perkill
; поля
instr поле11вид = на яркой солнечной поляне
поле11_се = 12; куда переход, если 0- перехода нет
поле11_за = 0
поле11_юг = 0
поле11_во = 21
поле11актёров = 0
поле11вещей = 0
instr поле21вид = у красивого, освежающего водопада
поле21_се = 22
поле21_за = 11
поле21_юг = 0
поле21_во = 31
поле21актёров = 0
поле21вещей = 0
instr поле31вид = на холме, покрытом множеством цветов
поле31_се = 32
поле31_за = 21
поле31_юг = 0
поле31_во = 0
поле31актёров = 0
поле31вещей = 0
instr поле12вид = в лесу, наполненном весёлым щебетом
поле12_се = 13
поле12_за = 0
поле12_юг = 11
поле12_во = 22
поле12актёров = 0
поле12вещей = 0
instr поле22вид = в удивительно прозрачном мелком ручейке
поле22_се = 23
поле22_за = 12
поле22_юг = 21
поле22_во = 32
поле22актёров = 0
поле22вещей = 0
instr поле32вид = в лесу, устланном ароматными листьями
поле32_се = 33
поле32_за = 22
поле32_юг = 31
поле32_во = 0
поле32актёров = 0
поле32вещей = 0
instr поле13вид = в уютном домике лесного эльфа
поле13_се = 0
поле13_за = 0
поле13_юг = 12
поле13_во = 0
поле13актёров = 0
поле13вещей = 0
instr поле23вид = под отвесной величественной скалой
поле23_се = 0
поле23_за = 0
поле23_юг = 22
поле23_во = 0
поле23актёров = 0
поле23вещей = 0
instr поле33вид = в богато украшенной гномьей пещере
поле33_се = 0
поле33_за = 0
поле33_юг = 32
поле33_во = 0
поле33актёров = 0
поле33вещей = 0
макс_полей = 33;максимумы по горизонтали и по вертикали
;просматриваем прямоугольник от 11 до 33. он может и не весь быть заполнен локациями
;пришла в голову идея составлять таблицу переходов отдельным редактором, как в Adrift.
; актёры
instr актёр1имя = Честный Галантный Рыцарь
актёр1место = 12; номер поля
актёр1сила = 5
актёр1ловкость = 6
актёр1вещей = 0
поле12_актёров = поле12_актёров+1 ; актёр добавлен
instr актёр2имя = Умиротворённый Обаятельный Мудрец
актёр2место = 21
актёр2сила = 2
актёр2ловкость = 1
актёр2вещей = 0
поле21_актёров = поле21_актёров+1
instr актёр3имя = Нежная Добрая Принцесса
актёр3место = 32
актёр3сила = 1
актёр3ловкость = 2
актёр3вещей = 0
поле32_актёров = поле32_актёров+1
instr актёр4имя = Бесшабашный Развязный Дракон
актёр4место = 22
актёр4сила = 6
актёр4ловкость = 5
актёр4вещей = 0
поле22_актёров = поле22_актёров+1
instr актёр5имя = Ловкий Лесной Эльф
актёр5место = 13
актёр5сила = 3
актёр5ловкость = 4
актёр5вещей = 0
поле13_актёров = поле13_актёров+1
instr актёр6имя = Выносливый Пещерный Гном
актёр6место = 33
актёр6сила = 4
актёр6ловкость = 3
актёр6вещей = 0
поле33_актёров = поле33_актёров+1
макс_актёров = 6; обязательно должен быть хотя бы один актёр
; игрок
выбор = rnd#макс_актёров$
:инициализация_метка_1
goto предварительный_выбор_игрока_локация
; завершение инициализации
end

;------------------------------------------------
:предварительный_выбор_игрока_локация
выбор = выбор+rnd#макс_актёров-1$ ; выбираем любого персонажа, кроме того же самого
if выбор>макс_актёров then выбор=выбор-макс_актёров
pln Имя : #%актёр#выбор$имя$
pln Сила = #актёр#выбор$Сила$
pln Ловкость = #актёр#выбор$Ловкость$
btn окончательный_выбор_игрока_локация, играть этим персонажем
btn инициализация_метка_1, выбрать другого персонажа
btn выбор_персонажа_с_клавиатуры_локация, ввести имя персонажа
end

;------------------------------------------------
:окончательный_выбор_игрока_локация
игрок = выбор
pln #%игрок$
goto главная_локация
end

;------------------------------------------------
:выбор_персонажа_с_клавиатуры_локация
instr name=
input name
выбор = 0
счётчик = 0
:выбор_персонажа_с_клавиатуры_метка_1
счётчик = счётчик+1
if name=актёр#счётчик$имя then выбор=счётчик
if счётчик<макс_актёров then goto выбор_персонажа_с_клавиатуры_метка_1
;в следующей строчке "выбор = rnd#макс_актёров$" добавлено, что бы следующий персонаж был выбран из всего списка с равной вероятностью (подумайте сами)
if выбор=0 then pln нет такого персонажа в нашем мире & pln & выбор = rnd#макс_актёров$ & goto предварительный_выбор_игрока_локация else goto окончательный_выбор_игрока_локация
end

;------------------------------------------------
;************************************************
:главная_локация
proc мотор_локация ; ходят все
if (vvod="конец")or(vvod="end") then end else goto главная_локация
end
;************************************************

;------------------------------------------------
:мотор_локация
;начало движения
чей_ход = 0
:мотор_метка_1
чей_ход = чей_ход+1
;if (rnd12)>(актёр#чей_ход$ловкость+6) then goto мотор_метка_2; пропуск хода
дел = 0
;идти по направлению
if поле#актёр#чей_ход$место$_се <> 0 then дел=дел+1 & дело#дел$="идти на" & арг1#дел$="север"
if поле#актёр#чей_ход$место$_за <> 0 then дел=дел+1 & дело#дел$="идти на" & арг1#дел$="запад"
if поле#актёр#чей_ход$место$_юг <> 0 then дел=дел+1 & дело#дел$="идти на" & арг1#дел$="юг"
if поле#актёр#чей_ход$место$_во <> 0 then дел=дел+1 & дело#дел$="идти на" & арг1#дел$="восток"
;ждать - всегда доступное действие без аргументов (необходимо всегда иметь хотя бы одно доступное действие)
дел=дел+1 & дело#дел$="ждать"
;взять предмет
;выложить предмет
;пускаем список на обработку
if игрок = чей_ход then proc ввод_игрока_локация else proc ход_актёра_локация
;:мотор_метка_2
if чей_ход < макс_актёров then goto мотор_метка_1
;конец всех действий
end

;------------------------------------------------
:отображение_локация
pln
pln Вы #%поле#актёр#игрок$место$вид$
pln Здесь находятся:
счётчик = 0
:отображение_метка_1
счётчик = счётчик + 1
if актёр#счётчик$место = актёр#игрок$место then pln - #%актёр#счётчик$имя$
if счётчик<макс_актёров then goto отображение_метка_1
end

;------------------------------------------------
:ход_актёра_локация
выбор = rnd#дел$
if дело#выбор$="ждать" then proc ждать_актёр_локация
if дело#выбор$="идти на" then proc идти_на_актёр_локация
end

;------------------------------------------------
:ввод_игрока_локация
instr vvod=
proc отображение_локация ; игрок должен видеть текущую ситуацию
pln
pln Введите, что сделать:
input vvod
tokens vvod
if token1="ждать" then proc ждать_игрок_локация
if token1="идти" then proc идти_на_1_игрок_локация
end

;------------------------------------------------
:ждать_актёр_локация
if актёр#чей_ход$место = актёр#игрок$место then pln + #%актёр#чей_ход$имя$ чего-то ждёт
end

;------------------------------------------------
:ждать_игрок_локация
pln #%актёр#игрок$имя$ чего-то ждёт
end

;------------------------------------------------
:идти_на_актёр_локация
if актёр#чей_ход$место = актёр#игрок$место then pln + #%актёр#чей_ход$имя$ ушёл на #%арг1#выбор$$
if арг1#выбор$="север" then актёр#чей_ход$место = поле#актёр#чей_ход$место$_се
if арг1#выбор$="запад" then актёр#чей_ход$место = поле#актёр#чей_ход$место$_за
if арг1#выбор$="юг" then актёр#чей_ход$место = поле#актёр#чей_ход$место$_юг
if арг1#выбор$="восток" then актёр#чей_ход$место = поле#актёр#чей_ход$место$_во
if актёр#чей_ход$место = актёр#игрок$место then pln + вошёл #%актёр#чей_ход$имя$
end

;------------------------------------------------
:идти_на_1_игрок_локация
if token2="на" then goto идти_на_2_игрок_локация
end

;------------------------------------------------
:идти_на_2_игрок_локация
pln #%актёр#игрок$имя$ ушёл на #%token3$
if (token3="север")and(поле#актёр#игрок$место$_се<>0) then актёр#игрок$место = поле#актёр#игрок$место$_се
if (token3="запад")and(поле#актёр#игрок$место$_за<>0) then актёр#игрок$место = поле#актёр#игрок$место$_за
if (token3="юг")and(поле#актёр#игрок$место$_юг<>0) then актёр#игрок$место = поле#актёр#игрок$место$_юг
if (token3="восток")and(поле#актёр#игрок$место$_во<>0) then актёр#игрок$место = поле#актёр#игрок$место$_во
pln и оказался #%поле#актёр#игрок$место$вид$
end

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




Сообщение: 47
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 23.03.08 21:52. Заголовок: сейчас доделываю при..


сейчас доделываю пример№2 (с вещами)
стажируюсь на новой работе
и что я хочу сказать:
с xbtn работа шла бы гораздо быстрее-
игрок бы выбирал действие из списка действий,
который я полюбому готовлю для каждого персонажа.

а так- приходится долбиться с обработкой ввода игрока.
код удваивается- отдельно обработка персонажей
и- другая обработка игрока

хочется, что бы проги на URQL выглядели покороче и попроще

вот сделаю пример№2
потом сделаю ему более дружественный интерфейс
(ничего слишком крутого- информация о выходах из локации, реакция на недопустимые действия, более корректное отображение локации)
и когда он будет доведён до ума у меня будет три пути:

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

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




Сообщение: 48
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 23.03.08 22:00. Заголовок: кроме xbtn нужна ещ..


кроме xbtn
нужна ещё bpause,
которая будет приостанавливать работу
программы до выбора игроком btn
.
пример:

:процедура
pln ответьте ДА или НЕТ
btn вложенная_процедура_да , да
btn вложенная_процедура_нет, нет
end

такая ПРОЦЕДУРА невозможна в нынешней досурке
(угадайте, что произойдёт?)

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

работа над пример№2 по-любому затормозится:
мне не нравится получающийся код- он должен быть более кратким и простым,
буду думать над новым концептом.

Спасибо: 0 
Профиль
Ответов - 136 , стр: 1 2 3 4 5 6 7 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 7
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет