Как сделать?
…
Nikus:
kosmosnash,
Правильно я понимаю, что эта строчка
IF Жизнь_Минотавра = 100:
‘Жизнь_минотавра -= 50’
Значат что при этом действии значению “Жизнь_минотавра” будет присвоено значение 50, а не вычисляться формулой Жизнь_минотавра - 50?
Это вроде как одно и то же. Есть начальное значение, заданное в стартовой локации, по ходу игры оно меняется. Если у вас много минотавров, и нужно чтобы у каждого было перед началом боя 100 hp, то можно либо ввести новую переменную для каждого нового минотавра, например:
жизнь_минотавра_1 = жизнь_минотавра
И дальше во время боя пляшете с новой переменной, а если пользоваться начальной переменной, то можно после смерти одного минотавра, перед боем с новым снова задавать жизнь_минотавра = 100. Но это будет не совсем верно, хотя в некоторых ситуациях может быть удобнее. Может есть способы и попроще, но я бы вводил новую переменную
kosmosnash,
Ничего не понимаю. Сделал код
IF Жизнь_минотавра > 50:
Жизнь_минотавра = Жизнь_минотавра - 51
gs ‘Stat’
PL “Ты с ловкостью дикого хищника бросаешься на минотавра и пронзаешь его мечем. Еще один удар и враг повержен ”
ELSE
Жизнь = Жизнь - 20
gs ‘Stat’
PL “Минотавр сильный и коварный противник. Он легко уклоняется от удара и наносит свой.”
GOTO $CURLOC
END
А все равно не работает. Показывает обе жизни 100
прикрепите файл
labirint.qsp - вот
Из локации stat нужно убрать значения переменных.
У вас получается, что каждый раз, когда вы заходите на эту локацию, переменные принимают начальное значение. Оставьте там только это
‘Ваша жизнь: <<Жизнь>>’
‘Жизнь минотавра: <<Жизнь_минотавра>>’
kosmosnash, спасибо заработало/ И еще возник вопрос, система воспринимает отрицательные значения, т.е. если у меня в условии IF Жизнь_минотавра < 0:
GOTO “Победа_над_минотавром” - то при значении -2 оно должно срабатывать? (если я правильно понимаю, то должен появляться переход на локацию “Победа_над_минотавром”)?
Ну лично я как-то никогда не работал с отрицательными. Но должно работать, конечно)
kosmosnash,
Я так понимаю, что условия
IF Жизнь_минотавра < 0:
GOTO “Победа_над_минотавром”
END
мало для того, чтобы после победы игрок мог перейти на “специальную” локацию. Просто у меня опять текст появляется, жизни считаются, но ничего не происходит…
IF Жизнь_минотавра < 0:
GOTO “Победа_над_минотавром”
END
Именно эта конструкция должна работать. Значит где-то условие не выполняется. Попробуйте вместо < поставить <=
kosmosnash,
Я ничего не понимаю. С дейсвтием тоже какая-то фигня
IF Жизнь_минотавра > 50:
Жизнь_минотавра = Жизнь_минотавра - 51
gs ‘Stat’
PL “Ты с ловкостью дикого хищника бросаешься на минотавра и пронзаешь его мечем. Еще один удар и враг повержен ”
ELSE
Жизнь = Жизнь - 20
gs ‘Stat’
PL “Минотавр сильный и коварный противник. Он легко уклоняется от удара и наносит свой.”
GOTO $CURLOC
END
Если второй раз воспользоваться этим действием, то оно просто отменяет результат предыдущего. Т.е. после первого применения Жизнь_минотавра уменьшается, но если нажать кнопку действия еще раз, то строчка с предыдущим действием исчезает и Жизнь_минотавра снова становиться 100…
А условия “Победы” так и на работают…
Nikus,
в локации stat убери первую и третью строчку и перенеси их в действие “Атаковать минотавра”. Таким образом при выборе действия “атаковать минотавра” один раз будут выставлены параметры здоровья для героя и минотавра, и действие будет работать правильно.
Локация stat:
'Ваша жизнь: <<Жизнь>>'
'Жизнь минотавра: <<Жизнь_минотавра>>'
Локация Зал_Сияние:
IF OBJ "Меч":
ACT "Атаковать минотавра":
GOTO "Бой_с_минотавром_меч"
Жизнь_минотавра = 100
Жизнь = 100
END
END
IF OBJ "Факел":
ACT "Атаковать минотавра":
GOTO "Бой_с_минотавром_факел"
END
END
IF OBJ "Компас":
ACT "Атаковать минотавра":
GOTO "Бой_с_минотавром_компас"
END
END
Условия победы работают, но поскольку локация победы не создана, перейти на неё нельзя.
С условиями победы проглядел, напишу ниже.
Aleks Versus,
Прошу прощение, но у меня в stat-у только две строчки ‘Ваша жизнь: <<Жизнь>>’
‘Жизнь минотавра: <<Жизнь_минотавра>>’
Тогда прошу вновь прикрепить файл.
Добавлено:
В действиях ударов GOTO $CURLOC срабатывает только при одном условии, а должно срабатывать всякий раз при выборе действия, поэтому переход на локацию и проверка не срабатывают. Перенеси строчку GOTO $CURLOC в самый низ действий.
Ещё добавлено:
И при проверке уровня здоровья минотавра и героя используй не строго меньше или больше, а <= и =>.
локация бой_с_минотавром_меч:
IF Жизнь <= 0:
GOTO “Смерть_от_минотавра_в_бою”
END
IF Жизнь_минотавра <= 0:
GOTO “Победа_над_минотавром”
END
В настоящий момент несколько запар
1. когда я повторяю “Рубящий удар”, он обнуляет предыдущий результат этого же действия
2. когда минотавр повержен (применения “рубящего удара” а затем “быстрого выпада” дают жизнь_минотавра = -2) условие победы на этой локации (”Бой_с_минотавром_меч”) не срабатывает labirint2.qsp
Заранее спасибо за помощь и поддержку
Nikus,
Смотри пост выше, я там кой чего дописал.
На локации бой_с_минотавром_меч первые две строчки лишние. Они-то и восстанавливают здоровья при переходе GOTO $CURLOC.
Вот эти две строчки лучше всего перенести в действие “атаковать минотавра”, как я показал несколько сообщений назад.