Автоматическое обьявление мелодий и звуков



Дабы не прописывать пути и расширения для каждой мелодии и звуков, написал пару функций, дублирующих стандартную работу со звуками. Только на входе теперь имя мелодии без пути и расширения. Сделано для папок "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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!