Игра «Поиск предметов» одной строкой
Перейти к навигации
Перейти к поиску
По правде говоря двумя строками, специально разделил, чтобы можно было как фон использовать с учетом уже найденных предметов.
# Это мини-игра по поиску предметов
# сохранить этот код в файл game.rpy в корне игры
# Вызывается примерно так:
# $ InitGame("bg_room", 5.0, True, (735, 300), "figure1", (640, 226), "figure2", (288, 38), "figure3", (115, 260), "figure4")
# $ StartGame()
# где bg_room - имя файла фона без указания расширения .jpg
# 5.0 - количество секунд на выполнение поиска (если <= 0, таймер отключен)
# (735, 300), "figure1" - координаты и имя файла предмета
# без расширения .png
# предметов может быть сколько угодно
# все фоны и картинки предметов должны быть в папке images
# на выходе - истина или ложь (уложились в отведенное время или нет)
# количество найденных предметов в переменной oLen
# общее количество предметов в переменной maxLen
# в папке sounds должен лежать звук «click.mp3»
# либо, если его нет, то нужно закомментировать строку:
# renpy.play("sounds/click.mp3", channel="sound")
init python:
oXY = []
oN = []
oLen = 0
maxLen = 0
oBg = ""
oLast = -1
oTime = 0.0
needTimer = False
oActive = False
# Инициализация игры, размещение предметов на экране
def InitGame(bg, time, *args):
global oBg, oXY, oN, oLen, maxLen, oLast, oTime, oActive, needTimer
oXY = []
oN = []
oLen = 0
oBg = bg
oLast = -1
oTime = time
maxLen = 0
oActive = True
if oTime > 0.0:
needTimer = True
for xy, obj_name in zip(args[0::2], args[1::2]):
oXY.append(xy)
oN.append(obj_name)
maxLen += 1
# Запуск игры
def StartGame():
global oActive
oActive = True
while (oLen < maxLen) and ((oTime > 0.0) or not needTimer):
renpy.call_screen("game")
if oTime > 0.0 or not needTimer:
return True
else:
return False
# Показать экран игры в виде неактивного фона
# Уже найденные предметы не будут отображаться
def NotGame():
global oActive
oActive = False
renpy.show_screen("game")
# Обработчик клика по предмету
def oClick():
global oLen
if oLast >= 0:
if oN[oLast]:
oN[oLast] = ""
oLen += 1
renpy.play("sounds/click.mp3", channel="sound")
# Собственно экран игры, запускать из функции StartGame()
screen game:
if oActive and needTimer:
timer 0.1 repeat True action [SetVariable("oTime", oTime - .1), If(oTime <= .0, true = [Hide("game"), Return(-1)])]
add "images/" + oBg + ".jpg"
for i in range(0, len(oN)):
if oN[i]:
imagebutton:
focus_mask True
pos(oXY[i])
idle "images/" + oN[i] + ".png"
hover "images/" + oN[i] + ".png"
if oActive:
action [SetVariable("oLast", i), oClick(), Hide("game"), Return(i)]
else:
action []
if oActive and needTimer:
if oTime > .1:
text "[oTime]" align(.1, .1) size 48
else:
text "0.0" align(.1, .1) size 48
- Сссылка на архив с тестовым проектом: test-find.zip
- Источник: Renpy для чайников: Игра «Поиск предметов» одной строкой
На главную страницу | Книга рецептов Энциклопедии Ren'Py | Renpy для чайников | Вернуться к началу статьи |