| 
本帖最后由 Zealot001 于 2021-7-15 22:47 编辑
×
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册 
  
 
 [RenPy] 纯文本查看 复制代码 default flag001 = 0
init -1 python:
    import requests
    import random
    class plusvar(object):
        def __init__(self, plusx):
            self.plusx = plusx
        @classmethod
        def plus_var_fun01(self):
            global flag001
            flag001 = flag001 + random.randint(5,8)
            if flag001 >= 50:
                flag001 = 50
    def plus_var_fun():
        global flag001
        flag001 = flag001 + random.randint(5,8)
        if flag001 >= 50:
            flag001 = 50
    def red_var_fun():
        global flag001
        flag001 = flag001 - random.randint(5,8)
        if flag001 <= 0:
            flag001 = 0
label start:
    
    $ flag001 = 20
    scene black
    call screen attack_fun
    return
screen attack_fun():
    frame:
        xcenter 0.25
        ycenter 0.25
        xsize 180
        ysize 320
        vbox:
            bar:
                value AnimatedValue(value=flag001, range=50, delay=0.3, old_value=None)
                xsize 170
                xcenter 0.5
            if flag001 < 50:
                textbutton "治疗":
                    text_size 40
                    text_outlines[(absolute(2), "#effdff", absolute(0), absolute(0))]
                    text_color "#ed54de"
                    text_selected_color "#32e0fc"
                    action Function(plusvar.plus_var_fun01)
            elif flag001 >= 50:
                textbutton "满了,归零":
                    text_size 40
                    text_outlines[(absolute(2), "#effdff", absolute(0), absolute(0))]
                    text_color "#ed54de"
                    text_selected_color "#32e0fc"
                    action SetVariable("flag001", 0)
            if flag001 > 0:
                textbutton "伤害":
                    text_size 40
                    text_outlines[(absolute(2), "#effdff", absolute(0), absolute(0))]
                    text_color "#ed54de"
                    text_selected_color "#32e0fc"
                    action Function(red_var_fun)
            elif flag001 <= 0:
                textbutton "空了,加满":
                    text_size 40
                    text_outlines[(absolute(2), "#effdff", absolute(0), absolute(0))]
                    text_color "#ed54de"
                    text_selected_color "#32e0fc"
                    action SetVariable("flag001", 50)
            text "血量是:[flag001]"
 直接用function调用函数和类方法都可以让代码正常运行,也没有预加载导致的数据混乱。
 但是在看文档的时候,function的介绍是
 
 Function(callable, *args, **kwargs)这个行为会使用 args 和 kwargs 调用 callable 。
 
 callable
 可调用的对象。
 args
 传给 callable` 的固定位置入参。
 kwargs
 传给 callable 的关键词入参。
 这个行为使用一个可选的 _update_screens 关键词参数,而且这个参数默认为True。参数为True时,函数返回后,互动行动会重新开始,各界面会更新。
 
 如果函数返回一个非空值,互动行为会停止并返回那个值。(使用call screen语句得到的返回值放置在 _return 变量中。)
没有入参,直接用全局变量的话,想复用有点麻烦,假如说我现在的函数追加了一个入参
 
 
 [RenPy] 纯文本查看 复制代码 def plus_var_funX(x):        x = x + random.randint(5,8)
        if x >= 50:
            x = 50
        
action Function(plus_var_funX, x=flag001)#入参这部分的格式,按照文档里的解释,没看懂
 相应的action Function(red_var_fun)里面的参数要怎么才能正确传入呢?然后对应到数值变化呢?
 我试过了action Function(red_var_fun, flag001)和action Function(red_var_fun, x=flag001)
 都没有办法正常运行,想请教一下具体的写法是什么?
 
 
 
 
 |