RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2429177 views

Aleks Versus,
Может вы подскажете какой-нибудь подробный гайд по этой платформе, потому, что я нашел тут только 8-му урочный и с ним, кажется, рано браться за создание игры. А с теми знаниями, которые я из него вынес, сдается, я превращусь в “занозу в…” для местных форумчан

Aleks Versus Moderator 11.01.2015 18:06 (11 years ago)

Nikus,
Ничего-ничего. На то форум и создан. )))
Смотри файл. Я старался подробно прокомментировать всё, что изменил. Начни с локации “Зал_сияние” и следуй порядку переходов.

ЛАБИРИНТ

Кстати, там я не заметил. Локация смерти называется “Смерть_от_минотавра”, а при проверке пытается перейти на локацию “Смерть_от_минотавра_в_бою”. Либо там, либо там - подправь.

Aleks Versus Moderator 11.01.2015 18:14 (11 years ago)

Nikus,
подробного гайда, насколько мне известно, нет. Видел учебники, но вроде как в зачаточном состоянии. Сам начал писать что-то типа “для чайников”, но пока что продвинулся недалеко.

Aleks Versus Moderator 11.01.2015 18:19 (11 years ago)

Nikus:

Есть только один пикантный момент, герой к этому времени в одной из локации может потерять 5 жизни, а тут получается, что он “регенерирует”

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

Aleks Versus,
Еще раз спасибо, посмотрел,почитал, но так и не понял, мож-но ли как-то обойтись без того чтобы каждый раз выставлять здоровье персонажа, ведь оно будет меняться. Например из этого боя персонаж может выйти поврежденным и как мне писать следующую схватку? Даже до этой схватке персонаж может получить урон -5. Я так понял, что переменные вводятся как раз для того, чтобы система запоминала текущее значение и его можно было бы не писать каждый раз. Правильно я понял, что в локации ‘проверка_здоровья’ можно писать условия победы и проигрыша для каждого сражения, а после каждого боевого действия писать в конце строчку “GOSUB ‘проверка_здоровья’” - чтобы система определяла победил-ли кто-нибудь из участников? правильно я понял, что двойной IF позволяет задавать два условия, которые должны быть выполнены, чтобы произошло действие? И таким образом код боя будет состоять из действий, содержащих условие, каждое из которых будет заканчиваться
END
gosub ‘stat’
GOSUB ‘проверка_здоровья’

так?

Aleks Versus Moderator 11.01.2015 18:54 (11 years ago)

Nikus,
я не понял, что именно тебе нужно. Возвращать герою здоровье равное 100 перед каждым боем? Или напротив, чтобы у героя было то здоровье, с которым он пришёл к месту схватки?

Aleks Versus Moderator 11.01.2015 19:00 (11 years ago)

:lol: всё. Я окончательно запутался.

Aleks Versus Moderator 11.01.2015 19:15 (11 years ago)

Nikus:

Правильно я понял, что в локации ‘проверка_здоровья’ можно писать условия победы и проигрыша для каждого сражения, а после каждого боевого действия писать в конце строчку “GOSUB ‘проверка_здоровья’” - чтобы система определяла победил-ли кто-нибудь из участников?

Да, правильно. Любой повторяющийся код можно засунуть в отдельную локацию и вызывать её по мере необходимости.

Nikus:

правильно я понял, что двойной IF позволяет задавать два условия, которые должны быть выполнены, чтобы произошло действие?

двойной IF это как?))

Aleks Versus,
Чтобы у него было текущее здоровье (с которым он пришёл к месту схватки). Я просто пытаюсь понять назначение локаций ‘stat’ (ее я добавил по совету kosmosnash) и так и не понимаю ее смысл, учитывая, что там не указывается значение (числовое) переменных. И назначение локации ‘проверка_здоровья’. И как это обобщить для своего понимания, чтобы использовать это самостоятельно.

Сейчас я понимаю так что в локации’проверка_здоровья’можно каждый раз менять участников схватки и “отправлять” от туда игрока если он победил или проиграл. Для этого просто после каждого кода действия, которое я создаю для боя я добавляю GOSUB ‘проверка_здоровья’. Так? Но что бы определить случилась ли поражение или победа система должна “заглянуть” в “stat” и “посчитать” сколько у участников боя жизней и исходя из результатов уже выдать победу/поражение или возможность продолжить бой. Правильно? Или я что-то не правильно понял.

У вас в “проверки здоровья” код

IF Жизнь <= 0:
! если здоровье героя меньше нуля или ноль:
! если противник минотавр, переходим на соответствующую локацию:
if $противник=‘минотавр’: GOTO “Смерть_от_минотавра_в_бою”

IF Жизнь <= 0: и if $противник=‘минотавр’

:cool: Запутать и запутываться я мастер. Поэтому т хотел напроситься на гайд для сохранения психологического сдоровья окружающих. У меня терпения бы не хватило себе, что-нибудь объяснить :=D

Aleks Versus Moderator 11.01.2015 19:50 (11 years ago)

Nikus,

Локация stat просто выводит на экран строчки с уровнем здоровья минотавра и героя. Она удобна тем, что тебе не приходится всякий раз писать:

'Ваша жизнь: <<Жизнь>>' 
'Жизнь минотавра: <<Жизнь_минотавра>>'

ты пишешь просто gs ‘stat’
локация “проверка_здоровья” - это всё что нужно для проверки здоровья. Система знает значение переменных жизнь и жизнь_минотавра, на какой бы локации герой не находился. Все расчёты у тебя идут в действиях атак.
Допустим герой нанёс урон минотавру, в действии посчиталась жизнь_минотавра. Потом нужно провести проверку здоровья минотавра, т.е. каково же сейчас значение переменной жизнь_минотавра. Для этого переходим на локацию “проверка_здоровья”, где оператор IF а после него условие, которое мы проверяем:

IF Жизнь_минотавра <= 0:

Двойного IF на той локации нет. Просто можно один IF “вложить” в другой, но только в МНОГОстрочный.
Вот это однострочная конструкция:

if $противник='минотавр': GOTO "Смерть_от_минотавра_в_бою"

А так она выглядит в многострочном варианте:

if $противник='минотавр':
     GOTO "Смерть_от_минотавра_в_бою" 
end

Если что, заходи в чат, там отвечают оперативнее.

Aleks Versus,
Добрый вечер изучал вчера и сегодня правленый вами код и только понять не могу, почему там *pl $text
pl $text. Т.е. что делает второй pl, и почему один из них со звездочкой?

и почему их написание отличается в первом и втором действии:
в первом варианте они после END и их всего 2, а во втором их четыре штуки и они пишутся внутри кода?

Aleks Versus Moderator 12.01.2015 19:03 (11 years ago)

Nikus,
советую почитать справку. Хотя, я вроде как прокомментировал в каждом случае:
*pl - выводит текст в окно основного описания
pl - выводит текст в окно дополнительного описания
Разницы в результате их работы ни для одного ни для другого действия не будет никакой. Переделывал быстро, не задумываясь, сначала взялся за “Рубящий удар”, написал так; потом переделал “быстрый удар” и пришло в голову сократить запись, а рубящий удар уже переделывать не стал, видимо ещё на что-то переключился.)

Aleks Versus Moderator 12.01.2015 19:13 (11 years ago)

Если же исходить из последовательности команд, то для рубящего удара:

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,
Простите это все моя невнимательность, пришел в такой восторг, что не увидел, что в основом экране тоже выводится описание…

Хитрый Пряник #1300 13.01.2015 19:29 (11 years ago)

Aleks Versus,
у тебя вижу один момент для объединения.
a.2 и b.2 можно сохранять в одну переменную, раз уж мы ею воспользовались
Пункты a.3 и b.3 объединить и вынести за условия. У тебя же это сделано во втором куске кода.

Log in or Register to post comments.