RU

Одно действие

7mer4 #847 02.05.2013 10:09 21 comments 14562 views

Делою игру, почти сделал но возникла проблемка. К примеру
ПОМОЧЬ ВЛАДУ
ПОМОЧЬ КОЛЕ
Ну нажал я помочь Владу, помог, сделал локацию и помогаю Коле и выиграл. Но когда сразу нажимаю помочь Коле, то я не могу помочь владу. Как исправит? Нодеюсь вы меня поняли)) так как я начинающий)) и пока немного понимаю что и как

Эмм… ну ок:

А теперь - представь что в эту локацию можно будет вернуться. Такие локации в текстовых играх очень распространены. Как изменится описание и код?

а какие, например, баги могут быть?

Самый очевидный - с повторным посещением локации. Сделал действие, проверил - убирается через DELACT, доволен. Через некоторое время добавил переход на эту локацию (возможность вернуться). При повторном заходе, действие, ранее убранное с помощью DELACT, опять появляется. Если по замыслу это действие должно выполняться только раз, то получается баг.

Представил:

Spoiler
if Посещение=0:
     if Встали=0: 
     'Вы находитесь в убогой лачуге, где кровать, сортир и умывальник, сделанный из пластиковой бутылки, покоятся на 4 квадратных метрах пространства =) Сами же вы лежите на кровати.'
         act'Встать': 
             'Вы встали с кровати' 
             Встали=1 
             xgt $curloc 
         end 
     end 
     
     if Встали=1 and Умылись=0: 
         act'Умыться': 
             'Вы умылись' 
             Умылись=1
             xgt $curloc 
         end 
     end
     
     if Умылись=1: 
         act'Выйти': 
             'Вы выходите из лачуги' 
             Посещение=1 
             gt 'Улица'
         end 
     end
else
     *clr
     'Вы находитесь в убогой лачуге, где кровать, сортир и умывальник, сделанный из пластиковой бутылки, покоятся на 4 квадратных метрах пространства =) Сами же вы лежите на кровати.'
end

Что сложного то? Да, если делать что-то вроде фриплэя, то могут понадобиться лишние “контрольные” переменные - эдакие “флажки”. Но когда игра делается по принципу коридора с ответвлениями (не знаю кому как, а мне демка топикстартера сразу напомнила игру “Ходячие Мертвецы”, которая так и сделана) это вовсе не обязательно - там главное грамотно расставить “флажки” на сюжет.
Что же касается того, что сначала не планировал повторного захода на локацию, потом таки поставил его… с трудом могу себе такое представить. Делаешь локу - сразу понятно что в неё впихнешь и сколько, хотя бы примерно, раз она проиграется.

Что сложного то?

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

“*clr”, кстати, лишний.

Но когда игра делается по принципу коридора с ответвлениями

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

Переоцениваю? Я тоже новичок, между прочим) Парню на данном этапе нужно обходиться с минимумом переменных и условий, иначе сам запутается во всем этом мельтешении. Да, код получится в 2…3… раза больше (за счет дублирования), но это не критично. Критично же, что игра будет таки дописана и автор набьет руку на приведении сюжета в играбельный вид (а игрок все равно разницы особой не почувствует). Если же углубляться в изучение синтаксиса, то он и через месяц ничего не напишет т.к. будет считать, что не достаточно освоился и где-то там, в глубинах мануалов сокрыта истина о том как правильно, коротко, гармонично, и вообще по фэн-шую, писать игры. Пусть лучше пишет сейчас, пока есть вдохновение, а работу над ошибками сделать всегда успеет (в будущих проектах).

З.ы.: Ага, лишний. Это я сначала хотел покрасивее код написать, а потом плюнул и написал понятный.

Aleks Versus Moderator 05.05.2013 16:01 (12 years ago)

Nex:

Самый очевидный - с повторным посещением локации.

Точно. Я на первых порах постоянно сталкивался. Вводил переменные всякие, потом понял, что раз уж использую один хрен эти самые переменные, значит можно без delact обходиться. Потом научился без xgoto обходиться, опять же потому, что ведь на локацию всё равно приходится возвращаться.

EL_RIO:

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

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

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

Я согласен, нет ничего страшного в том, что автор наступит на грабли и потом научится на ошибках. Просто когда ты ему написал “как надо делать”, то я отметил, чем чревато предложенное решение. Только и всего. Никто, конечно же, не запрещает так писать. Я уведомил об опасности, дальше решение пусть каждый принимает сам.

Aleks Versus,
во-во. Как раз для локаций с динамическим описанием GOTO $CURLOC очень полезен. Не стал рассматривать, чтобы не усложнять обсуждение :)

Log in or Register to post comments.