找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1913|回复: 3

[教程] menu动态选项

[复制链接]
发表于 2021-10-27 17:49:22 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 三幻神宝贝龙 于 2021-10-27 17:55 编辑

我想通过一天内不同的时间,提供不同的选项,首先想到的是这种

                               
登录/注册后可看大图

但是这种存在一个lable的跳转
之后有又了
mune

                               
登录/注册后可看大图

通过call test调用该选项


但是,还是不够渐变,我希望可以实现动态的选项,所以想到了menu(元组)的方式,找了一下官方中文教程:

                               
登录/注册后可看大图

最后我是这么写的:

                               
登录/注册后可看大图

                               
登录/注册后可看大图

画面的效果就是:

                               
登录/注册后可看大图

选择晚上之后,可供选择的选项就只有:

                               
登录/注册后可看大图

实现了动态的选项,主要是代码量降低,提高复用性和模块化代码

关键代码:
define times = 0#时间
init python:
    def change_time_by_now(times,sleepChoose):
        #global sleepChoose
        sleepChoose = (("取消",times),)
        if times == 0:
            sleepChoose = (("睡到中午",1),("睡到下午",2),("睡到晚上",3),("睡到深夜",4),("睡到第二天",0),("取消",times))
        if times == 1:
            sleepChoose = (("睡到下午",2),("睡到晚上",3),("睡到深夜",4),("睡到第二天",0),("取消",times))
        elif times==2:
            sleepChoose = (("睡到晚上",3),("睡到深夜",4),("睡到第二天",0),("取消",times))
        elif times==3:
            sleepChoose = (("睡到深夜",4),("睡到第二天",0),("取消",times))
        elif times==4:
            sleepChoose = (("睡到第二天",0),("取消",times))
        return sleepChoose


label lbl_home():
    pause 0.5
    "回到家"
    call mu_home_choose()#此处进行调用menu
    jump lbl_home

#主角家的选项
menu mu_home_choose():
    "睡觉":
        $times=renpy.display_menu(change_time_by_now(times,sleepChoose),interact=True)#核心调用

!!!!!!特别注意,元组的初始化
创建空元组
代码如下:
tup=()
元组中只包含一个元素时,需要在元素后面添加逗号来消除歧义
tup=(50,)!!!注意这个点,没有错!!!





 楼主| 发表于 2021-10-27 17:50:19 | 显示全部楼层
本帖最后由 三幻神宝贝龙 于 2021-10-27 17:57 编辑

好像我的图片都无法显示出来为什么呢
其实这个还是可以继续缩减代码的,不继续写了
回复 支持 抱歉

使用道具 举报

发表于 2021-10-28 09:24:46 | 显示全部楼层
本帖最后由 被诅咒的章鱼 于 2021-10-29 09:15 编辑

略做修改……
[RenPy] 纯文本查看 复制代码
define times = 0

init python:
    sleepChoiceArray = (("睡到中午",1),("睡到下午",2),("睡到晚上",3),("睡到深夜",4),("睡到第二天",0),("取消",times))
    
    def change_time_by_now(times):
        global sleepChoiceArray
        
        if times < len(sleepChoiceArray):
            return sleepChoiceArray[times:]
        else:
            return sleepChoiceArray[-1]
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2021-10-29 09:04:09 | 显示全部楼层
还是python语法不行呀,没想过这么写元组
回复 支持 抱歉

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 11:45 , Processed in 0.096842 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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