Как сделать?
…
Aleks Versus,
Может вы подскажете какой-нибудь подробный гайд по этой платформе, потому, что я нашел тут только 8-му урочный и с ним, кажется, рано браться за создание игры. А с теми знаниями, которые я из него вынес, сдается, я превращусь в “занозу в…” для местных форумчан
Nikus,
Ничего-ничего. На то форум и создан. )))
Смотри файл. Я старался подробно прокомментировать всё, что изменил. Начни с локации “Зал_сияние” и следуй порядку переходов.
Кстати, там я не заметил. Локация смерти называется “Смерть_от_минотавра”, а при проверке пытается перейти на локацию “Смерть_от_минотавра_в_бою”. Либо там, либо там - подправь.
Nikus,
подробного гайда, насколько мне известно, нет. Видел учебники, но вроде как в зачаточном состоянии. Сам начал писать что-то типа “для чайников”, но пока что продвинулся недалеко.
Nikus:
Есть только один пикантный момент, герой к этому времени в одной из локации может потерять 5 жизни, а тут получается, что он “регенерирует”
Тогда просто убери строчки, выставляющие здоровье отовсюду, кроме первой локации.
Aleks Versus,
Еще раз спасибо, посмотрел,почитал, но так и не понял, мож-но ли как-то обойтись без того чтобы каждый раз выставлять здоровье персонажа, ведь оно будет меняться. Например из этого боя персонаж может выйти поврежденным и как мне писать следующую схватку? Даже до этой схватке персонаж может получить урон -5. Я так понял, что переменные вводятся как раз для того, чтобы система запоминала текущее значение и его можно было бы не писать каждый раз. Правильно я понял, что в локации ‘проверка_здоровья’ можно писать условия победы и проигрыша для каждого сражения, а после каждого боевого действия писать в конце строчку “GOSUB ‘проверка_здоровья’” - чтобы система определяла победил-ли кто-нибудь из участников? правильно я понял, что двойной IF позволяет задавать два условия, которые должны быть выполнены, чтобы произошло действие? И таким образом код боя будет состоять из действий, содержащих условие, каждое из которых будет заканчиваться
END
gosub ‘stat’
GOSUB ‘проверка_здоровья’
так?
Nikus,
я не понял, что именно тебе нужно. Возвращать герою здоровье равное 100 перед каждым боем? Или напротив, чтобы у героя было то здоровье, с которым он пришёл к месту схватки?
:lol: всё. Я окончательно запутался.
Nikus:
Правильно я понял, что в локации ‘проверка_здоровья’ можно писать условия победы и проигрыша для каждого сражения, а после каждого боевого действия писать в конце строчку “GOSUB ‘проверка_здоровья’” - чтобы система определяла победил-ли кто-нибудь из участников?
Да, правильно. Любой повторяющийся код можно засунуть в отдельную локацию и вызывать её по мере необходимости.
Nikus:
правильно я понял, что двойной IF позволяет задавать два условия, которые должны быть выполнены, чтобы произошло действие?
двойной IF это как?))
Aleks Versus,
Чтобы у него было текущее здоровье (с которым он пришёл к месту схватки). Я просто пытаюсь понять назначение локаций ‘stat’ (ее я добавил по совету kosmosnash) и так и не понимаю ее смысл, учитывая, что там не указывается значение (числовое) переменных. И назначение локации ‘проверка_здоровья’. И как это обобщить для своего понимания, чтобы использовать это самостоятельно.
Сейчас я понимаю так что в локации’проверка_здоровья’можно каждый раз менять участников схватки и “отправлять” от туда игрока если он победил или проиграл. Для этого просто после каждого кода действия, которое я создаю для боя я добавляю GOSUB ‘проверка_здоровья’. Так? Но что бы определить случилась ли поражение или победа система должна “заглянуть” в “stat” и “посчитать” сколько у участников боя жизней и исходя из результатов уже выдать победу/поражение или возможность продолжить бой. Правильно? Или я что-то не правильно понял.
У вас в “проверки здоровья” код
IF Жизнь <= 0:
! если здоровье героя меньше нуля или ноль:
! если противник минотавр, переходим на соответствующую локацию:
if $противник=‘минотавр’: GOTO “Смерть_от_минотавра_в_бою”
IF Жизнь <= 0: и if $противник=‘минотавр’
:cool: Запутать и запутываться я мастер. Поэтому т хотел напроситься на гайд для сохранения психологического сдоровья окружающих. У меня терпения бы не хватило себе, что-нибудь объяснить :=D
Nikus,
Локация stat просто выводит на экран строчки с уровнем здоровья минотавра и героя. Она удобна тем, что тебе не приходится всякий раз писать:
'Ваша жизнь: <<Жизнь>>'
'Жизнь минотавра: <<Жизнь_минотавра>>'
ты пишешь просто gs ‘stat’
локация “проверка_здоровья” - это всё что нужно для проверки здоровья. Система знает значение переменных жизнь и жизнь_минотавра, на какой бы локации герой не находился. Все расчёты у тебя идут в действиях атак.
Допустим герой нанёс урон минотавру, в действии посчиталась жизнь_минотавра. Потом нужно провести проверку здоровья минотавра, т.е. каково же сейчас значение переменной жизнь_минотавра. Для этого переходим на локацию “проверка_здоровья”, где оператор IF а после него условие, которое мы проверяем:
IF Жизнь_минотавра <= 0:
Двойного IF на той локации нет. Просто можно один IF “вложить” в другой, но только в МНОГОстрочный.
Вот это однострочная конструкция:
if $противник='минотавр': GOTO "Смерть_от_минотавра_в_бою"
А так она выглядит в многострочном варианте:
if $противник='минотавр':
GOTO "Смерть_от_минотавра_в_бою"
end
Если что, заходи в чат, там отвечают оперативнее.
Aleks Versus,
Добрый вечер изучал вчера и сегодня правленый вами код и только понять не могу, почему там *pl $text
pl $text. Т.е. что делает второй pl, и почему один из них со звездочкой?
и почему их написание отличается в первом и втором действии:
в первом варианте они после END и их всего 2, а во втором их четыре штуки и они пишутся внутри кода?
Nikus,
советую почитать справку. Хотя, я вроде как прокомментировал в каждом случае:
*pl - выводит текст в окно основного описания
pl - выводит текст в окно дополнительного описания
Разницы в результате их работы ни для одного ни для другого действия не будет никакой. Переделывал быстро, не задумываясь, сначала взялся за “Рубящий удар”, написал так; потом переделал “быстрый удар” и пришло в голову сократить запись, а рубящий удар уже переделывать не стал, видимо ещё на что-то переключился.)
Если же исходить из последовательности команд, то для рубящего удара:
1. проверяем условие
-----a. условие верно:
---------a.1 снимаем здоровье с минотавра
---------a.2 формируем текст и помещаем в переменную
---------a.3 выводим текст из переменной
-----b. условие неверно:
---------b.1. снимаем здоровье с героя
---------b.2. формируем текст и помещаем в переменную
---------b.3. выводим текст из переменной
2. выводим статы
3. проверяем здоровье
а для быстрого выпада:
1. проверяем условие
-----a. условие верно:
---------a.1 снимаем здоровье с минотавра
---------a.2 формируем текст и помещаем в переменную
-----b. условие неверно:
---------b.1 снимаем здоровье с героя
---------b.2 формируем текст и помещаем в переменную
2. выводим текст из переменной
3. выводим статы
4. проверяем здоровье
Aleks Versus,
Простите это все моя невнимательность, пришел в такой восторг, что не увидел, что в основом экране тоже выводится описание…
Aleks Versus,
у тебя вижу один момент для объединения.
a.2 и b.2 можно сохранять в одну переменную, раз уж мы ею воспользовались
Пункты a.3 и b.3 объединить и вынести за условия. У тебя же это сделано во втором куске кода.