Игра на семь дней (A game for seven days)

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

Привет!

Прошлой зимой я начал изучать Ren'Py и начал игру, разработку которой никогда не продолжал с тех пор. Пока я всё еще планирую однажды вернуться к её разработке, сегодня я проверил папку и подумал, что исходный код script.rpy, пожалуй, может быть интересен, если кто-нибудь захочет сделать игру, используя ту же концепцию.

Идея игры заключается в том, что события игры происходят в течение одной реальной недели. Вам нужно играть ежедневно, чтобы завершить игру.

Может вам нужно ежедневно получать предмет для строительства чего-нибудь или встречаться с одним из тем же персонажем каждое утро для достижения конца истории? Для каждого дня недели существует иной вариант развития событий и игрок должен сыграть во все (не обязательно проходить по порядку, если пропустите вторник, можете сыграть в следующий вторник).

Мой исходный сюжет был о приезде кого-либо в новый город, переезде в пустую квартиру и ежедневной попытки найти предмет мебели для заполнения пустого месте в комнате, встречая новых людей на своём пути — но мне любопытно узнать, какие еще истории смогут придумать люди, используя этот принцип.

Вот исходный script.rpy без сюжета. Всего лишь каркас с распознавание даты, завершённым/незавершённым переключением дней и шаблоном предложений о “предметах”.

## script.rpy для игры за семь дней
## оригинал исходного кода, созданного nicolas (probablement.net)

## Время
init -1 python:
    import time
    time = time.localtime(time.time()).tm_wday
    days = ['Понедельник',    # 0
            'Вторник',        # 1   
            'Среда',          # 2
            'Четверг',        # 3
            'Пятница',        # 4
            'Суббота',        # 5
            'Воскресенье']    # 6
## Начало
label start:
   
    # Который час?
    $day = time
    $dayname = days[time]
   
    # Проверка того, завершена ли уже игра.
    if persistent.all_items:
        centered "Я уже получил все предметы."
        return
   
    # Общее начало.
    centered "[dayname]"
    "Я проснулся."
   
    # Первое объяснение.
    if not persistent.first_exp:
        "Мне нужно получить 7 предметов."
        $persistent.first_exp = True
       
    jump gotoday

## Перейти ко дню.
label gotoday:
   
    # Перейти к ежедневному сценарию.
    if   day == 0:
        jump mon_start   
    elif day == 1:
        jump tue_start
    elif day == 2:
        jump wed_start
    elif day == 3:
        jump thu_start
    elif day == 4:
        jump fri_start
    elif day == 5:
        jump sat_start
    elif day == 6:
        jump sun_start
    else:
        "Время вышло!"
        return

## 0 ПОНЕДЕЛЬНИК
label mon_start:
    # Проверить прошлое.
    if   persistent.mon_item:
        "Я уже получил предмет в понедельник."
        jump closing
    elif persistent.mon_started:
        "В прошлый понедельник я ничего не нашел."

    # Флаг day, как только начался день.
    $persistent.mon_started = True
       
    "В этот понедельник я получу предмет понедельника."
   
    menu:
        "Получить предмет понедельника":
            $persistent.mon_item = True
            "Вы получили предмет понедельника!"
            jump closing
           
           
## 1 ВТОРНИК
label tue_start:
    # Проверить прошлое.
    if   persistent.tue_item:
        "Я уже получил предмет во вторник."
        jump closing
    elif persistent.tue_started:
        "В прошлый вторник я ничего не нашел."

    # Флаг day, как только начался день.
    $persistent.tue_started = True
       
    "В этот вторник я получу предмет вторника."
   
    menu:
        "Получить предмет вторника":
            $persistent.tue_item = True
            "Вы получили предмет вторника"
            jump closing
                      

## 2 СРЕДА
label wed_start:
    # Проверить прошлое.
    if   persistent.wed_item:
        "Я уже получил предмет в среду."
        jump closing
    elif persistent.wed_started:
        "В прошлую среду я ничего не нашел."

    # Флаг day, как только начался день.
    $persistent.wed_started = True
       
    "В эту среду я получу предмет среды."
   
    menu:
        "Получить предмет среды":
            $persistent.wed_item = True
            "Вы получили предмет среды!"
            jump closing
                      

## 3 ЧЕТВЕРГ
label thu_start:
    # Проверить прошлое.
    if   persistent.thu_item:
        "Я уже получил предмет в четверг."
        jump closing
    elif persistent.thu_started:
        "В прошлый четверг я ничего не нашел."

    # Флаг day, как только начался день.
    $persistent.thu_started = True
       
    "В этот четверг я получу предмет четверга."
   
    menu:
        "Получить предмет четверга":
            $persistent.thu_item = True
            "Вы получили предмет четверга!"
            jump closing
                      

## 4 ПЯТНИЦА
label fri_start:
    # Проверить прошлое.
    if   persistent.fri_item:
        "Я уже получил предмет в пятницу."
        jump closing
    elif persistent.fri_started:
        "В прошлую пятницу я ничего не нашел."

    # Флаг day, как только начался день.
    $persistent.fri_started = True
       
    "В эту пятницу я получу пятничный предмет."
   
    menu:
        "Получить пятничный предмет":
            $persistent.fri_item = True
            "Вы получили пятничный предмет!"
            jump closing
                      

## 5 СУББОТА
label sat_start:
    # Проверить прошлое.
    if   persistent.sat_item:
        "Я уже получил предмет в субботу."
        jump closing
    elif persistent.sat_started:
        "В прошлую субботу я ничего не нашел."

    # Флаг day, как только начался день.
    $persistent.sat_started = True
       
    "В эту субботу я получу субботний предмет."
   
    menu:
        "Получить субботний предмет":
            $persistent.sat_item = True
            "Вы получили субботний предмет!"
            jump closing           
           
   
## 6 ВОСКРЕСЕНЬЕ
label sun_start:
    # Проверить прошлое.
    if   persistent.sun_item:
        "Я уже получил предмет в воскресенье."
        jump closing
    elif persistent.sun_started:
        "В прошлое воскресенье я ничего не нашел."

    # Флаг day, как только начался день.
    $persistent.sun_started = True
       
    "В это воскресенье я получу воскресный предмет."
   
    menu:
        "Получить воскресный предмет":
            $persistent.sun_item = True
            "Вы получили воскресный предмет!"
            jump closing

## Конец
label closing:
   
    if persistent.mon_item and persistent.tue_item and persistent.wed_item and persistent.thu_item and persistent.fri_item and persistent.sat_item and persistent.sun_item:
        $persistent.all_items = True
        centered "Я получил все 7 предметов!"
    else:
        centered "До завтра!"
                 
    return

Желаю приятного вечера.

Лучший,~ nicolas

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

Статья "A game for seven days" на английском языке


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