Простое руководство по навигационной карте (A simple navigation map tutorial)

Материал из Ren'Py Wiki
Перейти к навигации Перейти к поиску

Привет, в этом уроке будет рассмотрена очень простая функция Ren'Py: создание простой навигационной карты.


Базовые значения
Изображения
Летим в космос! Пространственная игра, в которой вам предстоит исследовать солнечную систему, чтобы предотвратить разрушение Земли. И что может быть лучше для выбора следующего пункта назначения, чем полностью внемасштабная карта Солнечной системы?
Имя в коде: planets.jpg
Карта – это круто, но на ней нужно отметить места, места, на которые пользователь может кликнуть, чтобы что-то сделать. Горячая точка imagemap – прямоугольная область, определяемая координатами её левого верхнего угла, шириной и высотой.
Затем, в большинстве случаев, вы хотите дать пользователю некоторую визуальную обратную связь, когда он или она нажимает по интерактивной области. Для этого нам нужно создать второе изображение, где все горячие точки находятся в "режиме наведения". Имя в коде: planets-hover.jpg. Обратите внимание, что нам нужны только горячие точки для этого слоя, и нас не волнует остальная часть изображения.
После того, как мы сделали эти два изображения, собственно можно начать кодирование.


Код
Когда все изображения готовы, кодирование довольно простое.
Для каждой горячей точки мы вводим функцию с её координатами (по порядку: x-позиция верхнего левого угла, y-позиция верхнего левого угла, ширина, высота) и действие, которое нужно выполнить при клике. Здесь действие состоит в том, чтобы перейти к указанной метке. Обратите внимание, что вам нужно использовать синтаксис `Jump("label")` с кавычками, заглавными буквами и скобками вместо стандартного `jump mercury`.
screen planets: #Подготовка карты изображений
    imagemap:
        ground "planets.jpg"
        hover "planets-hover.png"
        
        hotspot (62, 399, 90, 91) clicked Jump("mercury")
        hotspot (227, 302, 141, 137) clicked Jump("venus")
        hotspot (405, 218, 164, 118) clicked Jump("earth")
        hotspot (591, 78, 123, 111) clicked Jump("mars")

# Игра начинается здесь
label start:
    "Это учебник по карте изображений."
    jump solar_system

label solar_system:
    call screen planets #Отображение карты изображений

label mercury:
    "Это Меркурий."
    jump solar_system

label venus:
    "Это Венера."
    jump solar_system

label earth:
    "Это Земля."
    jump solar_system
    
label mars:
    "Это Марс."
    jump solar_system
И это всё. У нас есть функциональная карта.


Открываемые локации
Иногда некоторые местоположения недоступны с самого начала или отключаются через некоторое время. Давайте представим, что игра продолжается после того, как земля была разрушена.
Изображения
Для начала нам нужно подготовить два новых изображения. Одно полное изображение, где все локации, которые могут быть недоступны в какой-то момент игры, должны быть нарисованы в их недоступном состоянии. Это станет нашим новым изображением по умолчанию. Имя в коде: planets-no-earth.jpg
Одно частичное изображение, где все местоположения, которые могут быть недоступны, находятся в их доступном состоянии. Имя в коде: earth.png
Изображение hover остаётся прежним.


Код
Чтобы активировать или деактивировать горячую точку, нам просто нужно добавить простое условие в оператор imagemap. Обратите внимание, что мы изменили изображение по умолчанию для того, где земля разрушена (неактивна).
screen planets: #Подготовка карты изображений
    imagemap:
        ground "planets-no-earth.jpg"
        hover "planets-hover.png"
        idle "earth.png"
        
        hotspot (62, 399, 90, 91) clicked Jump("mercury")
        hotspot (227, 302, 141, 137) clicked Jump("venus")
        if not earth_destroyed:
            hotspot (405, 218, 164, 118) clicked Jump("earth")
        hotspot (591, 78, 123, 111) clicked Jump("mars")

init python:
    earth_destroyed = False

# Игра начинается здесь
label start:
    "Это учебник по карте изображений."
    jump solar_system

label solar_system:
    call screen planets #Displaying the imagemap

label mercury:
    "Это Меркурий."
    jump solar_system

label venus:
    "Это Венера."
    jump solar_system

label earth:
    "Это Земля."
    "Как только вы покинете её, она будет уничтожена!"
    $ earth_destroyed = True
    jump solar_system
    
label mars:
    "Это Марс."
    jump solar_system
Остальное - магия Ren'Py.

Источник[править | править код]

Статья "A simple navigation map tutorial" на английском языке.


На главную страницу Книга рецептов Энциклопедии Ren'Py Форумы Lemma Soft Вернуться к началу статьи