Автоматическое обьявление мелодий и звуков
Дабы не прописывать пути и расширения для каждой мелодии и звуков, написал пару функций, дублирующих стандартную работу со звуками. Только на входе теперь имя мелодии без пути и расширения. Сделано для папок "music" и "sound" и расширения "mp3". · init python:· def mplay(mname, fin=0, fout=0):renpy.play("music/" + mname + ".mp3", channel="music", loop=True, fadein=fin, fadeout=fout)· def splay(mname, fin=0, fout=0):renpy.play("sound/" + mname + ".mp3", channel="sound", loop=False, fadein=fin, fadeout=fout) · label start:· $ mplay("music1")###музыка с именем music1.mp3· $ splay("ku_ku")###звук с именем ku_ku.mp3
Поставить музыку на паузу
(http://renpyfordummies.blogspot.ru/2015/07/blog-post_18.html)
init python: # запустить мелодию на канале def mplay(fn, chan = "music", fin = 1.0, fout = 1.0): renpy.play(fn + ".mp3", channel = chan, loop = True, fadein = fin, fadeout = fout) # канал на паузу def mpause(channel = "music"): c = renpy.audio.audio.get_channel(channel) c.pause() # снять с паузы def munpause(channel = "music"): c = renpy.audio.audio.get_channel(channel) c.unpause() # остановить мелодию def mstop(chan = "music", fout=1.0): renpy.music.stop(channel = chan, fadeout = fout)# тестlabel start: $ mplay("mus") pause (2.0) $ mpause() pause (2.0) $ munpause() pause (2.0) $ mstop() pause (2.0)return
Экраны
Пример простого экрана
· screen simple_screen():
· frame:
· xalign 0.5 ypos 50
· vbox:
· text _(" Это экран .")
· textbutton _(" Хорошо "):
· action Return(True)
Оператор screen говорит ренпаю, что это экран, и у него имя simple_screen
Объект frame: используется что бы показать на каких координатах будет находиться данный экран
|
|
Объект vbox: расставляет вертикально все что в нем пропишут
text _("Это экран.") – текст
textbutton – текстовая кнопка
action Return(True) – действие при нажатии
Как отобразить экран в проекте
1) show screen
show screen imya_ekrana
Данный экран будет показываться, пока его не скроют.
Скрывают экраны командой hide screen imya _ ekrana
2)call screen
call screen imya _ ekrana останавливает ренпай, пока экран либо не вернется на какое либо действие, либо не прыгнет в другое место
Например
· screen simple_screen():
· frame:
· xalign 0.5 ypos 50
· vbox:
· text _(" Это экран .")
· textbutton _(" Хорошо "):
· action Return(True)
call screen simple _ screen
У вас пропадет текстовый диалог, и пока вы не нажмете на «Хорошо»и вы ничего не сможете сделать.
Когда заканчивается оператор call screen , экран автоматически закрывается
В основном show screen применяется, что бы отобразить постоянные элементы.
А call screen что бы отобразить короткие интерактивные экраны
Вот еще 1 пример экрана, который берет сразу 3 параметра
· $ message = "Привет мир"
· screen parameter_screen(message, okay=Return(True), cancel=Return(False)):
· frame:
· xalign 0.5 ypos 50
· vbox:
· text "[message!t]"
· textbutton _("Okay"):
· action okay
|
|
· textbutton _("Cancel"):
· action cancel
show screen parameter_screen(_(" Привет ."), cancel=Notify(_(" Ты не можешь отменить ")))
Теперь рассмотрим параметры
[message!t] – показываемое сообщение
okay и cancel – действия при нажатии, Это базовые значения, используемые когда не задано других аргументов.
Каждый параметр имеет приоритет над всеми остальными переменными
Параметры позволяют нам изменять внешний вид экрана, попросту показав его с другими аргументами
show screen parameter_screen(_("Shiro был тут ."))
Рассмотрим некоторые параметры
1) modal True
Когда у modal стоит значение True, вы не можете ни с чем взаимодействовать за экраном, пока не завершится этот экран. Так же его применяют в созданиях меню, прописывают в настройках, загрузках и т.д. Что бы перейдя с загрузок в настройки, у нас не были активны кнопки загрузок и настроек(т.е. мы не даем одновременно работать сразу нескольким экранам)
Аналогичным значением выступает tag menu
· screen modal_example():
· modal True
·
· frame:
· xalign 0.5 ypos 50
· textbutton _("Закрыть этот экран"):
· action Hide("modal_example")
Zorder
Контролирует порядок наложения. Чем больше значение – тем ближе к игроку.
|
|
· screen zorder_100_screen():
· zorder 100
· frame:
· xalign 0.5 xoffset 50 ypos 70
· text "Zorder 100"
Стандартный экран имеет значение 0
Style_prefix
Определяет стиль экрана
· screen style_prefix_screen():
· style_prefix "red"
·
· frame:
· xalign 0.5 ypos 50
· text _(" Этот текст красный .")
·
· style red_frame :
· background "#440000d9"
·
· style red_text :
· color "#ffc0c0"
Когда используется префикс red , рамка берет стиль из style red _ frame
А текст из style red _ text
Python в экранах
Операторы питона в экранах работают точно так же как и в обычном скрипте.
Строки с питоном в ренпае начинаются со знаком $ или python. Пример
· screen single_python_screen():
·
· $ message = _(" Привет мир ")
·
· frame:
· xalign 0.5 ypos 50
· vbox:
· text "[message!t]"
· screen block_python_screen():
·
· python:
· message1 = _("Привет мир")
· message 2 = _("Приятно с тобой познакомиться")
·
· frame:
· xalign 0.5 ypos 50
· vbox:
· text "[message1!t]"
· text "[message2!t]"
Есть 1 различие между питоном в экранах и в сценарии.
В питоне экранах нельзя иметь сторонние функции, т.е. в экране вы не поменяете значение переменной.
Операторе define
В операторе define можно установить первоначальное значение переменной экрана при его запуске. Это значение может быть изменено через SetScreenVariable и ToggleScreenVariable
|
|
Пример
· screen default_screen():
·
· default n = 0
·
· frame:
· xalign 0.5 ypos 50
· vbox:
· text "n = [n]"
· textbutton _(" Увеличить значение ") action SetScreenVariable("n", n + 1)
Операторы if, elif, else
Обычные операторы if , elif , else работают, так же как и в скрипте.
· screen if_screen():
·
· default n = 0
·
· frame:
· xalign 0.5 ypos 50
· vbox:
· if n > 2:
· text "n = [n]" color "#cfc"
· else:
· text "n = [n]" color "#fcc"
·
· textbutton _(" Увеличить ") action SetScreenVariable("n", n + 1)
Где если данные переменной n меньше 2, будет значение else
Если n больше 2, будет if
Оператор for
Есть в переменных еще оператор for. Он берет список значений i, и проходит через них in landings, запускает блок action .
В котором 1 переменная i привязывается к каждому значению в списке in landings
· screen for_screen():
·
· $ landings = [ _("Earth"), _("Moon"), _("Mars") ]
·
· frame:
· xalign 0.5 ypos 50
·
· vbox:
· for i in landings:
· textbutton "[i!t]" action Return(i)
Оператор Frame
Создает рамку, и в нем указывают положение экрана.
Пример без Frame
С Frame
Дата добавления: 2018-10-27; просмотров: 633; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!