Объявление и использование переменных (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

Автор материала: Sota
Материал от пользователя сайта.



Ren'Py 23.09.14 6228 Sota var. variables, туториал, объявление переменных, гид, RenPy, переменные 4.3/3

Комментарии (31):
3
1 barsunduk   (23.09.14 19:16)
860
# одна из сфер применения:
# записать в строку длинный список возможных строковых значений
# и выдёргивать рандомно одно из них
label start:
....$ all_names_string = u"Нюша, Клава, Фрося, Дуся"
....$ all_names = all_names_string.split(', ')
....$ randompers = renpy.random.randint(0, len(all_names)-1)
....$ name = all_names[randompers]
...."[name], дай телефончик."
....jump start
....return

3
2 barsunduk   (23.09.14 19:35)
860
http://hkar.ru/vdPD
# ещё я использую переменные для красивого оформления прямой речи:
init:
....$ cl = "{/color}{/i}"
....$ clOn = "{i}{color="
....$ clBill = clOn+"#9999ff}"
....$ clTed = clOn+"#ff9999}"
label start:
....scene black
...."Он говорит:\n[clBill]«Привет, я - Билл».[cl]\nНу, океюшки."
...."Я отвечаю:\n[clTed]«Здорова, а я - Тед»."
....return

0
3 Небель   (11.07.15 21:34)
9857
Скажите, пожалуйста, если для опознавания русских символов необходимо предварять буквой u, то как нужно предварять латинскую диакритику типа немецких умляутов (ä, ö, ü, ß)?

0
4 barsunduk   (13.07.15 14:52)
860
никак не предварять. главное, чтобы в шрифте игры были прорисованы нужные символы. например, шрифт по умолчанию их содержит, так что всё отобразится нормально.

0
5 Papanka   (16.08.15 14:40)
5168
Весьма странный вопрос назрел у меня.
Возможно ли присвоить переменной отрицательное значение?
Типа "$ per = -5"

0
6 barsunduk   (16.08.15 23:49)
860
нет! как такое в голову пришло! даже не пробуй! запрещаю!

0
7 Papanka   (17.08.15 14:35)
5168
Ладно-ладно, понял, исправлюсь.

1
8 FairyTail2003   (29.01.16 19:42)
23991
Извините...может быть я пишу полный бред,но...после первого выбора можно заменить переменную? Или мне и в дальнейшем использовать её? cry cry cry cry

0
10 barsunduk   (29.01.16 20:37)
860
что, религия запрещает использовать больше одной переменной?))

0
11 FairyTail2003   (29.01.16 20:39)
23991
Просто я запуталась...вдруг я использую другую и тогда ветвь которая ведёт к той или иной концовке прервётся..

0
12 barsunduk   (29.01.16 20:40)
860
нарисуйте блок-схему алгоритма, чтобы не путаться

0
13 FairyTail2003   (29.01.16 20:41)
23991
Эм..блок-... что?

1
14 barsunduk   (29.01.16 20:42)
860

1
15 FairyTail2003   (29.01.16 20:43)
23991
Хех..спасибо)..хоть немного разобралась..

0
16 barsunduk   (29.01.16 20:46)
860
мозг человека не всегда способен осилить обработку множества возможных вариантов, для этого программисты используют блок-схемы. если привыкнуть, то очень помогает. можно нагуглить программные комплексы для их составления. это рисунки, они нагляднее кода. а по рисункам уже проще написать нужный код.

0
17 FairyTail2003   (29.01.16 20:48)
23991
Хм...ясно! Спасибо Вам огромное!))) funny funny funny

0
18 barsunduk   (29.01.16 20:49)
860
с другой стороны при наличии всего пары-тройки переменных использование дополнительных инструментов нецелесообразно. лучше поискать учебник для детей по основам программирования. узнать общие основы всех языков. ПОНЯТЬ их. тогда можно и браться за конкретные языки.

0
19 FairyTail2003   (29.01.16 20:53)
23991
Я скорее всего послушаюсь вашего совета))) happy

0
20 barsunduk   (29.01.16 20:59)
860
кстати, пара гулек на ведроид для освоения принципов программирования:
1) Lightbot : Code Hour
2) Hacked
это только те, что лично мне так понравились, что я их прошел))

0
21 FairyTail2003   (29.01.16 21:04)
23991
С-спасибо вам большое!!Но не стоило.. wow funny

0
22 barsunduk   (29.01.16 21:04)
860
а вдруг понравится))

0
23 FairyTail2003   (30.01.16 11:25)
23991
funny funny funny funny

1
9 FairyTail2003   (29.01.16 20:30)
23991
А если вот мой герой должен выбрать одежду,игрок за него выбирает.Но через некоторое время снова идёт выбор,но после него должна быть картинка.Вот как сделать чтобы на картинке,герой был в выбранной одежде?

0
26 Leshiy133   (20.03.16 05:58)
8334
Вводить переменную на выбор одежды) Желательно по комплекту, а не отдельно брюки, отдельно кофту, отдельно обувь - иначе это за сто лет не управится =) Джинсовый комплект, спортивный комплект, деловкой комплект (пиджак и брюки) и т.д.)
С каждым рисовать картинку.
Показывать картинку через условие:
аля if sportswear == 1:
и показываешь картинку в спортивной форме =)
Правда зачем в Новелле показывать Главного Героя - если вся новелла - вид из его глаз оО решительно не понятно) Картинка для сцены с зеркалом?) Или под CG где он с девчонками? Тогда к каждой CG рисовать по комплекту одежды и точно также через условия и переменные ковыряться с отображением нужной в нужном выборе)

0
28 Blue_Bird_Illusion   (01.04.16 21:32)
22911
Что касается одевания гг, это возможно, но с помощью всемогущего питона :bad:,
if sportswear == 1: - Смешно и тупо
есть команда def draw_characte, погуглите.
Лично я так засунула в новеллу создание персонажа.
Если не найдете,то я могу попробовать вам объяснить

0
24 FairyTail2003   (15.03.16 15:02)
23991
У меня вот вопрос,а если я хочу сделать так,чтобы определённый выбор появился ТОЛЬКО после того,как будут пройдёны все концовки моей ВН.Как мне это сделать?

0
25 FairyTail2003   (19.03.16 16:00)
23991
angry angry angry cry cry cry cry cry cry cry

0
27 Blue_Bird_Illusion   (01.04.16 21:27)
22911
В концовка "включайте" определенную переменную:
first_ending = True
second_ending = True
и т.д
в нужный момент в новелле спросите
if first_ending:
if second_ending:
и т.д

переменные , если их не объявлять в начале переходят из игры в игру. Проверенно

0
29 ShaylinCat   (20.08.16 20:47)
38761
Привет всем! ))) Возможно ли сделать (и если да, то как), в меню выборов пункт, который высвечивается только если есть достаточно кол-во очков?

К примеру,

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

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

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

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

Буду рада ответу и извините, если он глупый. Я только учусь делать новеллы.

0
30 ShaylinCat   (20.08.16 21:49)
38761
Есть, конечно, вариант написать две менюшки, одну в if, другую в else...
Но нет ли варианта проще?

0
31 ShaylinCat   (22.08.16 02:43)
38761
Всё. Я нашла ответ на свой вопрос.
Вот, если кому интересно:
........"Пойти вместе с А-чан" if (A_friend == 5):

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]