RenPy中文空间

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 968|回复: 0

[经验] 拖放组件(drag drop)“派侦探到那个城市”示例加强版

[复制链接]
发表于 2018-12-24 17:00:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
起因是这帖子【推理游戏demo】罗曼圣诞探案集 说要写个“拖放组件”教程的

后来看到拖放组件(drag drop)文档的最后一个示例是”派侦探到那个城市“... ...改改,做个加强版示例,当教程吧
原示例地址:https://www.renpy.cn/doc/drag_drop.html#drag-drop-examples
直接看脚本注释,很容易理解的,准备一张背景图(也可以不需要),2个城市和2个侦探的小图(头像?)
[RenPy] 纯文本查看 复制代码
## “派侦探到那个城市”示例加强版 ##
init python:

    def detective_ivy(drags, drop):
 # 如果drop为False,即没有任何触碰交互,drags没有放到任何drop上。
        if not drop:
 # 没有任何触碰交互,0.1秒返回原位置。
            drags[0].snap(700 , 600, 0.1)
            return

## python语句中变量store.city,Ren’Py脚本中变量 city。
## 具体看这里: [url=https://www.renpy.cn/doc/python.html?highlight=store#other-named-stores]https://www.renpy.cn/doc/python. ... #other-named-stores[/url]

 # 人物名,存储到变量detective中。
        store.detective = drags[0].drag_name
 # 城市名,存储到变量city中。
        store.city = drop.drag_name
        return True

    def detective_zack(drags, drop):
 # 如果drop为False,即没有任何触碰交互,drags没有放到任何drop上。
        if not drop:
 # 没有任何触碰交互,0.1秒返回原位置。
            drags[0].snap(900 , 600, 0.1)
            return

 # 人物名,存储到变量detective中。
        store.detective = drags[0].drag_name
 # 城市名,存储到变量city中。
        store.city = drop.drag_name
        return True

### 定义一个界面(screen)###
screen send_detective_screen:
    # 作为背景的地图。
    add "europe.jpg" # 欧洲地图

    # DragGroup确保每个侦探可以拖拽到每个城市。
    draggroup:

        # 可选择侦探
        drag:
            drag_name "艾薇" # Ivy 艾薇。

             # 调用图像 
            child "ivy.png"

            # 若为False,其他Drag对象不能放在该Drag对象上。
            droppable False

            # 一个回调函数(或回调函数列表),当Drag对象被拖拽时被调用。
            dragged detective_ivy

             # 人物图位置。
            xpos 700 ypos 600

        drag:
            drag_name "扎克" # Zack 扎克。

             # 调用图像 
            child "zack.png"

            # 若为False,其他Drag对象不能放在该Drag对象上。
            droppable False

            # 一个回调函数(或回调函数列表),当Drag对象被拖拽时被调用。
            dragged detective_zack
             # 人物图位置。
            xpos 900 ypos 600

        # 可选择城市。
        drag:
            drag_name "伦敦" # 伦敦

             # 调用图像 
            child "london.png"

             # 若为False,此Drag对象无法被鼠标拖拽。
            draggable False
             # 城市位置。
            xpos 100 ypos 140

        drag:
            drag_name "巴黎" # 巴黎

             # 调用图像 
            child "paris.png"

            # 若为False,此Drag对象无法被鼠标拖拽。
            draggable False

             # 城市位置。
            xpos 150 ypos 450

########################################

# 游戏在此开始。
label start:

    "我们需要调查!应该派谁去哪里?"

## call screen ##
    call screen send_detective_screen

    "好的,我们派 {color=#f00}[detective]{/color} 去 {color=#00ff00}[city]{/color}。"

## 下面是无字体颜色
#    "好的,我们派 [detective] 去 [city]。"

    return # 结束返回。



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号 | 苏公网安备 32092302000068号 )

GMT+8, 2019-12-7 21:42 , Processed in 0.087632 second(s), 23 queries , File On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表