init python: # время на перемещение move_t = .25 # Функция, которую назначим для обработки результатов перемещений def drag_to(drags, drop): # Не попали в пределы города if not drop: return # Запоминаем, что куда переместили store.detective = drags[0].drag_name store.city = drop.drag_name # выравниваем положения детектива и города drags[0].snap(drop.x, drop.y, move_t) # устанавливаем флаг конца действия, # чтобы таймер сработал store.drag_ok = True # чтобы таймер вообще запустился renpy.restart_interaction() # превратить в action для кнопок DragTo = renpy.curry(drag_to) screen choose_city: # Карта в качестве фона. add "EUROPE" # Группа drag гарантирует, что детективов и города можно перетащить друг на друга. # (в нашем случае только детективов на города, у городов draggable False) draggroup: # Наши детективы drag: drag_name "Еву" child "ivy" droppable False dragged drag_to xpos 100 ypos 100 drag: drag_name "Зака" child "zack" droppable False dragged drag_to xpos 150 ypos 200 # Города, куда можно направить детективов. drag: as london drag_name "Лондон" child "LONDON" draggable False xpos 500 ypos 150 # В этот квадрат можно перетаскивать xysize(300, 300) drag: as paris drag_name "Париж" draggable False child "PARIS" xpos 200 ypos 500 # В этот квадрат можно перетаскивать xysize(300, 300) # Этот персонаж может перемещаться и сам по нажатию кнопки, # если установить ему и городам идентификаторы с помощью as drag: as carmen # идентификатор droppable False dragged drag_to drag_name "Кармэн" xpos 600 ypos 600 frame: style "empty" vbox: text "\nКАРМЭН" style "names" color "#8af" # кнопки имитируют перетаскивание в нужный город textbutton "Лондон" action DragTo([carmen], london) textbutton "Париж" action DragTo([carmen], paris) # если выбор сделан, то ждем окончания перемещения, # затем ещё немного на осознание игроком происходящего # и выходим из экрана if drag_ok: timer move_t + .75 action Return() label start: # сбрасываем флаг конца действия $ drag_ok = False centered "Кого нам отправить и куда? Перетащите Кармэн, Еву или Зака в нужный город." # вызываем экран с выбором города call screen choose_city centered "Хорошо, мы пошлём [detective] в [city]." return # Чтобы обойтись без картинок, раскрасим квадратики: init: # стиль для имён style names is text: size 60 bold True color "#fff" image EUROPE = "#002" image LONDON: contains: "#004" xysize(300, 300) contains: Text("ЛОНДОН", style="names") image PARIS: contains: "#053" xysize(300, 300) contains: Text("ПАРИЖ", style="names") image ivy = Text("\nЕВА", style="names", color="#0f8") image zack = Text("\nЗАК", style="names", color="#ff0")
Комментарии
Отправить комментарий