找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19804|回复: 5

[已解决] 关于条件判定的问题

[复制链接]
发表于 2019-11-4 01:56:18 | 显示全部楼层 |阅读模式

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

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

×
有些时候在python里进行for循环然后进行条件判定的话无法生效是怎么回事呢……BUG还是我对代码的理解错误了?

比如,我设定一个校园养成类游戏,想要触发一个如果主角成绩太差,会被热心同学辅导的剧情

python:
    listA = [] #这个是可能触发这个事件的人物
    for i in students: #students是这个班所有学生的list
        if i.xingge == "冷漠": #冷漠的同学不会来辅导我
            pass
        elif i.haogan < 0: #好感太低不会来辅导我
            pass
        else:
            listA.append(i)

if len(listA) == 0:#没人可以触发这个事件,无事发生
    pass

else:
    $someone = renpy.random.choice(listA) #随便选一个人触发
    somenone  "嘿,你这次考试没有及格,我来帮帮你吧"
   


然而实际剧情里就算是冷漠性格的同学或者好感度<0的同学也可以触发……

但是如果在python外进行判定的话貌似就ok

if len(listA) == 0:#没人可以触发这个事件,无事发生
    pass

else:
    $someone = renpy.random.choice(listA) #随便选一个人触发
    if someone.xingge == "冷漠" or someone.like <0:
        pass
    else:
        somenone  "嘿,你这次考试没有及格,我来帮帮你吧"
   
发表于 2019-11-4 14:13:52 | 显示全部楼层
本帖最后由 老司机飞飞飞 于 2019-11-4 23:26 编辑

没有具体的代码我也不知道你错哪里
[RenPy] 纯文本查看 复制代码
init python:
    class a():
        def __init__(self,name,xg,hgd):
            self.name = name
            self.xg = xg
            self.hgd = hgd

    xs1 = a("1","冷漠",-10)
    xs2 = a("2","冷漠",0)
    xs3 = a("3","冷漠",22)

    xs4 = a("4","开朗",-10)
    xs5 = a("5","开朗",0)
    xs6 = a("6","开朗",22)

    xs7 = a("7","冷静",15)
    students = [xs1,xs2,xs3,xs4,xs5,xs6,xs7]

    listA = []

    for i in students:
        if i.xg != "冷漠" and i.hgd > 0:
            listA.append(i)

    def bzsj():
        if len(listA) == 0:#没人可以触发这个事件,无事发生
            renpy.say ("","没有人帮助你自己奋斗吧")
        else:
            someone = renpy.random.choice(listA) #随便选一个人触发
            renpy.say (someone.name,"嘿,你这次考试没有及格,我来帮帮你吧")
            # return someone

screen a:
    frame:
        vbox:
            for i in listA:
                text "姓名:[i.name]  性格:[i.xg]  好感度:[i.hgd]"

label start:
    show screen a
    # $ someone = bzsj()
    $ bzsj()
    # someone.name  "嘿,你这次考试没有及格,我来帮帮你吧"
    "aaaa"

评分

参与人数 1干货 +1 收起 理由
BuErShen + 1 感谢分享!

查看全部评分

回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2019-11-4 21:27:53 | 显示全部楼层
老司机飞飞飞 发表于 2019-11-4 14:13
没有具体的代码我也不知道你错哪里[mw_shl_code=renpy,true]init python:
    class a():
        def __in ...

感谢大佬……我的代码应当是无错,但是实际效果却是冷漠和低好感的对象也被加入了listA里刚刚也做了一个测试用screen来显示可能触发的角色,倒是没有问题,冷漠和低好感的对象被排除了,因为不是百分之百遇到条件外的对象……我再排查下吧
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2019-11-4 21:33:57 | 显示全部楼层
刚才又测试了一下……并不是有不符合条件的人被加进了list,而是从list里选择一个人物的时候出现了list之外的人物!!这是咋回事啊!!
回复 支持 抱歉

使用道具 举报

发表于 2019-11-4 23:21:56 | 显示全部楼层
yume513 发表于 2019-11-4 21:33
刚才又测试了一下……并不是有不符合条件的人被加进了list,而是从list里选择一个人物的时候出现 ...

我上面写的改了下,测试的时候没有发现问题,我看你上面写的代码 someone 有时候多个n 有时候少个,你看下是不是这个问题吧
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2019-11-5 21:33:34 | 显示全部楼层
老司机飞飞飞 发表于 2019-11-4 23:21
我上面写的改了下,测试的时候没有发现问题,我看你上面写的代码 someone 有时候多个n 有时候少个,你看 ...

啊哈哈哈那个就是纯粹打错字了,然后我发现我在别的地方也用了listA这个名字,然后把listA这个变量给global了一下居然就没问题了没有专门学过编程真的感觉自己好弱智啊哈哈哈……
回复 支持 抱歉

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 14:00 , Processed in 0.076733 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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