Сайт Anivisual.net закрыт

Он продолжит функционировать в виде архива. Новые материалы добавлять нельзя.

Объявление и использование переменных (Variables)

Объявление и использование переменных (Variables)

Переменные

В данной статье речь пойдёт о переменных и их полезности.

Для начала нам нужно объявить переменную. Желательно это сделать в начале "label start:", но не обязательно. Объявление может быть расположено в любом месте "label". Главное, объявление должно находиться до непосредственной работы с данной переменной. Стандартное объявление, это присваивание переменной нулю.

Код
label start:
    $ per = 0

$ per - название нашей переменной, объявление переменных в количестве не ограничено.
0 - присваивание значения, в данном случае - переменная равна нулю.
P.S. Знак ($) обязателен, и после него необходимо поставить пробел.

Чаще всего переменные используются для запоминания определённых действий/выборов игрока.
Код
label start:
    $ dei1 = 0
    $ dei2 = 0
    menu:
        "Действие 1":
            $ dei1 += 1
        "Действие 2":
            $ dei2 += 1
    if dei1 == 1:
        "Вы выбрали первое действие."
        jump label ...
    if dei2 == 1:
        "Вы выбрали второе действие."
        jump label ...

$ dei1; $ dei2 - объявление двух переменных
menu - вызов меню
Действие 1; Действие 2 - создание двух вариантов выбора

$ dei1 += 1; $ dei2 += 1 - так выглядит присваивание к переменной +1, т.е. прибавление единицы в переменную.
if - оператор "if-else", дословно, 'если' переменная dei1 == 1, равна нулю ("==" - сравнение), тогда выводиться сообщение о том, что мы выбрали первое действие и переход к "label ..."

P.S.S. К переменной можно как и добавлять значения, так и убавлять, или вовсе, сразу присваивать иные значения.
Код
    $ per += 10  
#Прибавление к переменной 10.

    $ per -= 5
#Отнятия у переменной 5.

    $ per = 50
#Присваивание переменной 50.


При создания новеллы, это полезно, когда вам необходимо вычислить определённое количество действий игрока.
К примеру, вам необходимо знать, сколько раз игрок помог кому-либо. Для этого, создаём переменную и при каждой помощи игрока, к переменной будем прибавлять 1. И в итоге можно вызвать оператор "if-else", и поставить условия, если игрок помог больше 5 раз, то выход на хорошую концовку, если же игрок не набрал нужное количество очков, выход на плохую концовку.

Переменные можно создавать не только числовые, но и буквенные.
Код
    $ pred = u"Hello, world"

u"..." - 'u' необходима, дабы Ren'Py распознал русский язык.

Все переменные можно выводить в диалоги. Для этого, в диалоге достаточно написать [имя_переменной] для её вывода.
Код
    $ pred = u"Hello, world"  
#Объявление переменной

    "[pred] ..."
#Вывод её в диалог

Выглядеть это будет примерно так:


Сфера применения переменных достаточно обширная. Ограничением является лишь ваша фантазия.

©Программист Celestial Novels
18
Декабрь
41
3.7
26495
Добавлять комментарии могут только зарегистрированные пользователи.

Комментарии к записи: 41

avatar
#1 barsunduk
860
в 18:16 (23/Сен/2014)
4
# одна из сфер применения:
# записать в строку длинный список возможных строковых значений
# и выдёргивать рандомно одно из них
label start:
....$ all_names_string = u"Нюша, Клава, Фрося, Дуся"
....$ name = renpy.random.choice(all_names_string.split(', '))
...."[name], дай телефончик."
....jump start
....return
avatar
#2 barsunduk
860
в 18:35 (23/Сен/2014)
3

# ещё я использую переменные для красивого оформления прямой речи:
init:
....$ cl = "{/color}{/i}"
....$ clOn = "{i}{color="
....$ clBill = clOn+"#9999ff}"
....$ clTed = clOn+"#ff9999}"
label start:
....scene black
...."Он говорит:\n[clBill]«Привет, я - Билл».[cl]\nНу, океюшки."
...."Я отвечаю:\n[clTed]«Здорова, а я - Тед»."
....return
avatar
#3 Небель
9857
в 20:34 (11/Июл/2015)
0
Скажите, пожалуйста, если для опознавания русских символов необходимо предварять буквой u, то как нужно предварять латинскую диакритику типа немецких умляутов (ä, ö, ü, ß)?
avatar
#4 barsunduk
860
в 13:52 (13/Июл/2015)
0
никак не предварять. главное, чтобы в шрифте игры были прорисованы нужные символы. например, шрифт по умолчанию их содержит, так что всё отобразится нормально.
avatar
#5 Papanka
5168
в 13:40 (16/Авг/2015)
0
Весьма странный вопрос назрел у меня.
Возможно ли присвоить переменной отрицательное значение?
Типа "$ per = -5"
avatar
#6 barsunduk
860
в 22:49 (16/Авг/2015)
0
нет! как такое в голову пришло! даже не пробуй! запрещаю!
avatar
#7 Papanka
5168
в 13:35 (17/Авг/2015)
0
Ладно-ладно, понял, исправлюсь.
avatar
#8 FairyTail2003
23991
в 18:42 (29/Янв/2016)
1
Извините...может быть я пишу полный бред,но...после первого выбора можно заменить переменную? Или мне и в дальнейшем использовать её? cry cry cry cry
avatar
#10 barsunduk
860
в 19:37 (29/Янв/2016)
0
что, религия запрещает использовать больше одной переменной?))
avatar
#11 FairyTail2003
23991
в 19:39 (29/Янв/2016)
0
Просто я запуталась...вдруг я использую другую и тогда ветвь которая ведёт к той или иной концовке прервётся..
avatar
#12 barsunduk
860
в 19:40 (29/Янв/2016)
0
нарисуйте блок-схему алгоритма, чтобы не путаться
avatar
#13 FairyTail2003
23991
в 19:41 (29/Янв/2016)
0
Эм..блок-... что?
avatar
#14 barsunduk
860
в 19:42 (29/Янв/2016)
1
avatar
#15 FairyTail2003
23991
в 19:43 (29/Янв/2016)
1
Хех..спасибо)..хоть немного разобралась..
avatar
#16 barsunduk
860
в 19:46 (29/Янв/2016)
0
мозг человека не всегда способен осилить обработку множества возможных вариантов, для этого программисты используют блок-схемы. если привыкнуть, то очень помогает. можно нагуглить программные комплексы для их составления. это рисунки, они нагляднее кода. а по рисункам уже проще написать нужный код.
avatar
#17 FairyTail2003
23991
в 19:48 (29/Янв/2016)
0
Хм...ясно! Спасибо Вам огромное!))) funny funny funny
avatar
#18 barsunduk
860
в 19:49 (29/Янв/2016)
0
с другой стороны при наличии всего пары-тройки переменных использование дополнительных инструментов нецелесообразно. лучше поискать учебник для детей по основам программирования. узнать общие основы всех языков. ПОНЯТЬ их. тогда можно и браться за конкретные языки.
avatar
#19 FairyTail2003
23991
в 19:53 (29/Янв/2016)
0
Я скорее всего послушаюсь вашего совета))) happy
avatar
#20 barsunduk
860
в 19:59 (29/Янв/2016)
0
кстати, пара гулек на ведроид для освоения принципов программирования:
1) Lightbot : Code Hour
2) Hacked
это только те, что лично мне так понравились, что я их прошел))
avatar
#21 FairyTail2003
23991
в 20:04 (29/Янв/2016)
0
С-спасибо вам большое!!Но не стоило.. wow funny
avatar
#22 barsunduk
860
в 20:04 (29/Янв/2016)
1
а вдруг понравится))
avatar
#23 FairyTail2003
23991
в 10:25 (30/Янв/2016)
0
funny funny funny funny
avatar
#9 FairyTail2003
23991
в 19:30 (29/Янв/2016)
1
А если вот мой герой должен выбрать одежду,игрок за него выбирает.Но через некоторое время снова идёт выбор,но после него должна быть картинка.Вот как сделать чтобы на картинке,герой был в выбранной одежде?
avatar
#26 Leshiy133
8334
в 04:58 (20/Мар/2016)
0
Вводить переменную на выбор одежды) Желательно по комплекту, а не отдельно брюки, отдельно кофту, отдельно обувь - иначе это за сто лет не управится =) Джинсовый комплект, спортивный комплект, деловкой комплект (пиджак и брюки) и т.д.)
С каждым рисовать картинку.
Показывать картинку через условие:
аля if sportswear == 1:
и показываешь картинку в спортивной форме =)
Правда зачем в Новелле показывать Главного Героя - если вся новелла - вид из его глаз оО решительно не понятно) Картинка для сцены с зеркалом?) Или под CG где он с девчонками? Тогда к каждой CG рисовать по комплекту одежды и точно также через условия и переменные ковыряться с отображением нужной в нужном выборе)
avatar
#28 Blue_Bird_Illusion
22911
в 20:32 (01/Апр/2016)
0
Что касается одевания гг, это возможно, но с помощью всемогущего питона :bad:,
if sportswear == 1: - Смешно и тупо
есть команда def draw_characte, погуглите.
Лично я так засунула в новеллу создание персонажа.
Если не найдете,то я могу попробовать вам объяснить
avatar
#24 FairyTail2003
23991
в 14:02 (15/Мар/2016)
0
У меня вот вопрос,а если я хочу сделать так,чтобы определённый выбор появился ТОЛЬКО после того,как будут пройдёны все концовки моей ВН.Как мне это сделать?
avatar
#25 FairyTail2003
23991
в 15:00 (19/Мар/2016)
0
angry angry angry cry cry cry cry cry cry cry
avatar
#27 Blue_Bird_Illusion
22911
в 20:27 (01/Апр/2016)
-1
В концовка "включайте" определенную переменную:
first_ending = True
second_ending = True
и т.д
в нужный момент в новелле спросите
if first_ending:
if second_ending:
и т.д

переменные , если их не объявлять в начале переходят из игры в игру. Проверенно
avatar
#29 ShaylinCat
38761
в 19:47 (20/Авг/2016)
0
Привет всем! ))) Возможно ли сделать (и если да, то как), в меню выборов пункт, который высвечивается только если есть достаточно кол-во очков?

К примеру,

....menu:
........"Пойти ли в магазин?"

........"Пойти одной.":
............"Я пошла в магазин и купила себе новые джинсы."

........"Пойти вместе с А-чан.": (Присутствует в меню, только если переменная A_friend = 5, если же нет, то чтобы этого выбора вообще не было видно.)
............"Мы с А-чан купили много красивых вещей, но у меня почти кончились деньги"

........"Не идти.":
............pass

Буду рада ответу и извините, если он глупый. Я только учусь делать новеллы.
avatar
#30 ShaylinCat
38761
в 20:49 (20/Авг/2016)
0
Есть, конечно, вариант написать две менюшки, одну в if, другую в else...
Но нет ли варианта проще?
avatar
#31 ShaylinCat
38761
в 01:43 (22/Авг/2016)
1
Всё. Я нашла ответ на свой вопрос.
Вот, если кому интересно:
........"Пойти вместе с А-чан" if (A_friend == 5):
avatar
#32 naro-san
56921
в 02:16 (27/Апр/2017)
0
Здравствуйте, у меня вопрос! Допустим, в течении игры я набираю две или более переменных а определенные итоги зависят от сравнения этих переменных (например баллов А больше чем Б), то как мне это сделать?
avatar
#33 naro-san
56921
в 03:18 (27/Апр/2017)
0
Все оказалось очень просто. Я ожидала чего-то сложного. Ответ уже ненужен wow
avatar
#34 MackDillan
57229
в 13:53 (02/Май/2017)
0
Здравствуйте, как сделать так, чтобы игра запомнила какую то переменную навсегда? как в БЛ было с прохождением рутов на хорошую концовку
avatar
#39 AsHBySLd
338776
в 16:25 (09/Июн/2020)
0
Вы уже нашли ответ на свой вопрос? Просто делаю мод, и нихрена не понимаю, особенно как сделать эту переменную. Если уже нашли ответ, можете объяснить, что да как?
avatar
#41 Curvas
188914
в 09:00 (09/Мар/2022)
0
Команда:
$ persistent.(название)= "Значение"
Потом просто проверяете значение через "if"
avatar
#35 leozzz
63457
в 15:45 (01/Авг/2017)
0
Я чувствую себя идиотом ,потому что перечитал уже статей 10 про переменные ,но я не понимаю почему мое значение переменной ,не выводится в диалог
Тобишь
$ x = 0
Объявляется переменная
Потом по ходу игры в menu она получает
$ x += 1
И в конце в диалоге мне должны выдать значение этой переменной
t"Значение равно [x]"
Но выводит он мне [x]
Я что-то не так понял?
avatar
#36 Dolphin13
68751
в 11:11 (23/Дек/2017)
0
У меня такая проблема...Мне нужно сделать 2е концовки,но происходит что-то не то...Мой код:
if dei1 == 3:
"Я с Мариной?"
else:
"Конец 1"



if dei2 == 3:
scene black with fade
"Я с Филиппом?"
else:
scene black with fade
"Конец 2"



if dei3 == 1:
"Конец 3"

Вот только после первой концовки начинается вторая,не подскажете,что мне делать?
avatar
#37 Yatik
69639
в 15:31 (28/Фев/2018)
0
Здравствуйте!
А у меня вот такая проблема. Есть 3 концовки,

if per = X :
jump:
"Концовка 1"

if per = Y :
jump:
"Концовка 2"

if per = M :
jump:
"Концовка 3"

На 1 и 3 концовку выходит без проблем, а на 2 никак, какие бы значения переменной не добавлял/изменял, что делать? cry
avatar
#38 ignatev2002aleksey@gmail
85030
в 14:47 (07/Авг/2018)
0
У меня вопрос, как сделать так, чтобы появилась еще одна концовка в зависимости от имени персонажа, которое даст игрок.
avatar
#40 Хемуль
87473
в 16:56 (09/Июн/2020)
-1
Думают, лучше спросить об этом на форуме, так как в старой статье вряд ли ответят.