Пример дождя, грома и молний для нового GUI

init python:
    # объявление картинок и псевдонимов
    images_auto()

    # объявление персонажа
    p = Character("Свинья", color="#fc7", window_left_padding=100, image="pig")

    # функции громыхания для внедрения в картинки
    def s_thunder1(trans, st, at):
        splay("thunder1")

    def s_thunder2(trans, st, at):
        splay("thunder2")

    def s_thunder3(trans, st, at):
        splay("thunder3")

    def s_rain(trans, st, at):
        sfxplay("rain")

    # остановка шума дождя
    def s_rain_off(trans, st, at):
        sfxstop()

init:
    # анимация дождя
    image rain ani = Ani("rain ", 8, .1, zoom=2.4)

    # анимация молнии
    image light ani = Ani("lightning ", 3, .05, True, True)

    $ t1, t2, t3 = rndf(8, 15), rndf(12, 20), rndf(15, 25)
    $ t11, t22, t33 = rndf(2, 4), rndf(5, 7), rndf(7, 10)
    $ xz = (1, -1)
    # мерцание молнии
    transform l_flash(t, tt):
        anchor (.5, .0)
        xzoom xz[rnd(1)]
        alpha 0
        tt
        alpha 1
        .1
        alpha 0
        .1
        alpha 1
        .1
        alpha 0
        t - tt - .3
        repeat

    image light1 = At("light ani", l_flash(t1, t11))
    image light2 = At("light ani", l_flash(t2, t22))
    image light3 = At("light ani", l_flash(t3, t33))

    # картинка с молнией и со звуком грома
    image thunder:
        contains:
            "light1"
            align(rndf(.0, 1.), .0)
            t11
            function s_thunder1
            t1 - t11
            repeat
        contains:
            "light2"
            align(rndf(.0, 1.), .0)
            t22
            function s_thunder2
            t2 - t22
            repeat
        contains:
            "light3"
            align(rndf(.0, 1.), .0)
            t33
            function s_thunder3
            t3 - t33
            repeat

    # картинка с дождём и со звуком дождя
    image rain:
        "rain ani"
        on show:
            function s_rain
        on hide:
            function s_rain_off

# Игра начинается здесь:
label start:
    scene bg
    with dissolve

    p "Кажется, дождь собирается."
    show rain
    with dissolve

    p "Кажется, будут гром и молнии."
    show thunder

    pause
    hide thunder
    hide rain
    with dissolve

    p "Кажется, дождь кончился."
    scene black
    with dissolve
    return

Комментарии

  1. Прикольно. Но называть персонажа свиньей не красиво.

    ОтветитьУдалить
  2. А как можно уменьшить время появления молний? а то очень долго ждать когда засверкает или может можно как-то сделать переодичность и даже рандомность?

    ОтветитьУдалить

Отправить комментарий