TC官方合作论坛

 找回密码
 立即注册
查看: 2093|回复: 7

[已解决] 我写的循环到了第27次就会卡死 然后win7提示重新启动 怎么办

[复制链接]
发表于 2017-5-10 17:09:25 | 显示全部楼层 |阅读模式

马上加入TC

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

x
本帖最后由 锃少 于 2017-5-10 17:10 编辑

以下是代码,当然部分功能名称我是修改了一下,让代码看起来相对较为搞笑。这样也许大神们就愿意花点宝贵的时间帮我看看了。毕竟枯燥的代码看了眼疼,只能这样子找点乐子了。可以复制粘贴到tc观看,更加直观,我注释了问题 求解决方法




变量 线程ID, 找图开关, 判断开关, x, y
//从这里开始执行
功能 执行()
    //从这里开始你的代码
结束
//启动_热键操作
功能 启动_热键()
    线程ID = 线程开启("执行", "")
结束

//终止热键操作
功能 终止_热键()
    线程关闭(线程ID)
结束

//===================================撩妹主程序===========================================

功能 按钮0_点击()
    //这里添加你要执行的代码
    找图开关 = 真
    判断开关 = 真
    线程开启("开始撩妹", "")
结束


功能 按钮1_点击()
    //这里添加你要执行的代码
    找图开关 = 假
    判断开关 = 假
    变量 线程关闭判断 = 线程关闭("开始撩妹", 0)
    如果(线程关闭判断 == 假)
        消息框("线程关闭失败")
    否则
        消息框("线程关闭")
    结束
结束

//===================================撩妹主程序结束===========================================


//===================================撩妹流程========================================


功能 开始撩妹()
    找图撩妹应用()
    等待(500)
    找图进入游戏()
    等待(1000)
    判断妹子是否加载完成()
    如果(找图妹子>0)
        开始攻略()
    否则
        去下一家()
    结束
    等待(500)
    找图口袋里的玫瑰花()
    等待(2000)
    判断妹子男朋友是否在家()
    等待(900)
    找图男朋友战斗力()
    等待(随机数(2, 4) & 000)
    对战判断()
    如果(判断结果 < 0)
        认怂跑路()
    否则
        鸠占鹊巢()
    结束
    等待(随机数(5, 9) & 00)
    找图送玫瑰花()
    等待(500)
    找图好感度判断()
    等待(2000)
    如果(妹子好感度 > 100)
        不可描述()
        等待(20000)
        从新开始()
    否则
        等待(45000)
        从新开始()
    结束
结束



功能 从新开始()

    找图返回图标()//相当于退出了游戏
    等待(随机数(2, 4) & 000)//随机的等一会
    如果(编辑框获取文本("编辑框2") != 编辑框获取文本("编辑框1"))//这里编辑框1是设置要循环几次,编辑框2是正在第几次循环,要是相等的话就停止脚本.但问题就是在这.不出意外的话编辑框2 会显示到27就脚本卡死.如果编辑框1设置的值小于27的话,就会进行正常跳出达到循环次数的消息框.
        编辑框设置文本("编辑框2", 编辑框获取文本("编辑框2") + 1)//这里相当于是没有达到条件的话,自己加自己一下.来标识正在第几次运行.别问我为什么不用遍历,遍历以前会,现在生疏了,没把握控制好.
        列表框插入文本("列表框0", 时间时(当前时间()) & ":" & 时间分(当前时间()) & ":" & 时间秒(当前时间()) & "==>" & "从新开始游戏", 0)//这里我想的是在软件界面显示一个类似于实时日志一样的功能,能够"看"到代码的运行
        列表框插入文本("列表框0", "=======第" & 编辑框获取文本("编辑框2") & "次结束=======", 0)//和上面一样
        文件写日志("\r\n" & 时间时(当前时间()) & ":" & 时间分(当前时间()) & ":" & 时间秒(当前时间()) & "==>" & "从新开始游戏", "H:\\jbzy\\lm\\rz.txt")//和上面一样,只不过是保存为txt方便出现错误的话进行逐个查看
        文件写日志("\r\n" & "================第" & 编辑框获取文本("编辑框2") & "次结束==================", "H:\\jbzy\\lm\\rz.txt")//同上
        开始撩妹()//相当于是没有达到设定的次数,再来一次
    否则
        等待(1000)
        列表框插入文本("列表框0", "达到循环次数请退出", 0)//和上面的哪个运行日志一样
        文件写日志("\r\n" & 时间时(当前时间()) & ":" & 时间分(当前时间()) & ":" & 时间秒(当前时间()) & "==>" & "达到循环次数", "H:\\jbzy\\lm\\rz.txt")//闲的蛋疼才复制粘贴一下改一点字
        按钮1_点击()//停止脚本,但有时候好象停不下来.反正很少用,也就不管它了
        消息框("达到循环次数请退出")//有时候虽然这个弹出来了,但运行日志里还有少量代码在运行.不清楚,求大神解惑
    结束
结束

//===================================撩妹流程结束========================================


//===================================撩妹功能区==========================================

功能 找图撩妹应用()
    循环(找图开关)
        如果(找图(0, 0, 510, 300, "H:\\jbzy\\lm\\应用图标.bmp", "000000", 1, 0, x, y) >= 0)//找图,没找到就等一秒再找.虽然是死循环,但目前来说所有以找图开头的功能都没怎么出错.
            窗口发送按键(编辑框获取文本("编辑框0"), 49)//就是按一下当前应用的位置 位置是提前设置好的,可以看作是快捷键
            列表框插入文本("列表框0", 时间时(当前时间()) & ":" & 时间分(当前时间()) & ":" & 时间秒(当前时间()) & "打开撩妹应用", 0)
            文件写日志("\r\n" & 时间时(当前时间()) & ":" & 时间分(当前时间()) & ":" & 时间秒(当前时间()) & "==>" & "打开撩妹应用", "H:\\jbzy\\lm\\rz.txt")
            跳出
        结束
        等待(1000)
    结束
结束

功能 找图进入游戏()
    循环(找图开关)
        如果(找图(0, 0, 510, 300, "H:\\jbzy\\lm\\进入游戏.bmp", "000000", 1, 0, x, y) >= 0)
            窗口发送按键(编辑框获取文本("编辑框0"), 50)
            列表框插入文本("列表框0", 时间时(当前时间()) & ":" & 时间分(当前时间()) & ":" & 时间秒(当前时间()) & "进入撩妹应用", 0)
            文件写日志("\r\n" & 时间时(当前时间()) & ":" & 时间分(当前时间()) & ":" & 时间秒(当前时间()) & "==>" & "进入撩妹应用", "H:\\jbzy\\lm\\rz.txt")
            跳出
        结束
        等待(1000)
    结束
结束

功能 判断妹子是否加载完成()
    循环(判断开关)
        变量 应用ret = 找图(0, 0, 510, 300, "H:\\jbzy\\tl\\白天判断妹子身材.bmp", "000000", 1, 0, x, y)
        如果(应用ret >= 0)
            列表框插入文本("列表框0", 时间时(当前时间()) & ":" & 时间分(当前时间()) & ":" & 时间秒(当前时间()) & "妹子加载完成", 0)
            跳出
        否则
            变量 应用夜间ret = 找图(0, 0, 510, 300, "H:\\jbzy\\tl\\晚上判断妹子身材.bmp", "000000", 1, 0, x, y)
            如果(应用夜间ret >= 0)
                列表框插入文本("列表框0", 时间时(当前时间()) & ":" & 时间分(当前时间()) & ":" & 时间秒(当前时间()) & "妹子加载完成", 0)
                跳出
            结束
        结束
        列表框插入文本("列表框0", 时间时(当前时间()) & ":" & 时间分(当前时间()) & ":" & 时间秒(当前时间()) & "妹子没有加载完成,等待", 0)
        等待(2000)
    结束
结束

功能 找图开始攻略()
    循环(找图开关)
        变量 开始攻略x, 开始攻略y
        变量 开始攻略ret = 找图(0, 0, 510, 300, "H:\\jbzy\\lm\\开始攻略.bmp", "000000", 1, 0, 开始攻略x, 开始攻略y)//虽然知道这段还有更简单的直接扔如果的条件里的写法.但由于是复制粘贴所以也就懒得改了,大家忍忍.
        如果(开始攻略ret >= 0)
            变量 鼠标x, 鼠标y
            鼠标获取坐标(鼠标x, 鼠标y)//获得现在鼠标在那里
            编辑框设置文本("编辑框8", 鼠标x)//保存一下现在的坐标
            编辑框设置文本("编辑框9", 鼠标y)//好吧,我写的代码自己看起来都有好多,多余的
            鼠标移动(应用清理x, 应用清理y)//鼠标移动到找到的图
            等待(10)
            鼠标左键单击()//然后点击一下
            鼠标移动(鼠标x, 鼠标y)//然后会到刚刚鼠标的位置
            等待(500)
            键盘按键(87, 1)//相当于鼠标移动到模拟器的返回,然后在按一下设置好的快捷键,应用就清理了.
            列表框插入文本("列表框0", 时间时(当前时间()) & ":" & 时间分(当前时间()) & ":" & 时间秒(当前时间()) & "开始攻略", 0)
            文件写日志("\r\n" & 时间时(当前时间()) & ":" & 时间分(当前时间()) & ":" & 时间秒(当前时间()) & "==>" & "开始攻略", "H:\\jbzy\\lm\\rz.txt")
            跳出//的确,我的想法是用win7的操作系写的脚本来控制模拟器上的游戏,不用安卓端的脚本.虽然很费力,但目前为止还是相对于很安全的.至少目前我还没封号.其他功能我都试了,很好用.就是这个到27次就卡死的毛病一直折腾我,想让我挂机刷经验都不行.
        结束//说出来你们可能不信,有时候我要离开电脑的话,只好用手机远程控制电脑.来看软件卡死没有.唉.用手机控制电脑,操作模拟器玩**的智障,你们见过没?我见过.而且还很熟.....
        等待(1000)
    结束//求大神指点,帮帮忙了!我先脱光衣服跪在地上谢谢了!
结束

功能 找图去下一家()
    //过程过于不可描述无法显示
结束

功能 找图口袋里的玫瑰花()
    //过程过于不可描述无法显示
结束

功能 判断妹子男朋友是否在家()
    //过程过于不可描述无法显示
结束

功能 找图男朋友战斗力()
    //过程过于不可描述无法显示
结束

功能 判断对战判断()
    //过程过于不可描述无法显示
结束

功能 找图认怂跑路()
    //过程过于不可描述无法显示
结束

功能 找图鸠占鹊巢()
    //过程过于不可描述无法显示
结束

功能 找图送玫瑰花()
    //过程过于不可描述无法显示
结束

功能 找图好感度判断()
    //过程过于不可描述无法显示
结束

功能 找图不可描述()
    //过程过于不可描述无法显示
结束

//===================================撩妹功能区结束==========================================


















复制代码

回复

使用道具 举报

发表于 2017-5-23 23:31:48 | 显示全部楼层
思路不对,代码问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-11 08:55:20 | 显示全部楼层
没人吗?
回复

使用道具 举报

发表于 2017-5-11 15:52:21 | 显示全部楼层
什么鬼,直接看晕
回复 支持 反对

使用道具 举报

发表于 2017-5-11 20:27:28 | 显示全部楼层
可能是栈溢出,函数你调我我调你的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-12 09:41:28 | 显示全部楼层

我的主要意思是,两个功能互相调用。比如两个人,小明和小红。当小明打开游戏并判断游戏开始时,叫一下小红,小红开始工作,小红工作完成之后结束掉游戏,然后叫一下小明。小明判断游戏的确结束了,然后判断现在是第几次 次数没有小于我设置的值时再次打开游戏,判断游戏开始然后在叫小红起来工作了。就是这样,虽然和遍历有些像,但我不知道这种情况遍历该怎么写,所以就这样凑合着。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-12 09:54:00 | 显示全部楼层
言术 发表于 2017-5-11 20:27
可能是栈溢出,函数你调我我调你的。

我一开始也感觉是这样,两个功能像是小明,小红,小明调用小红,然后小红又调用小明,刚开始的第一次调用小红的还在运行 等待着第一次调用小红的结果。然后又被小红调用了一次。第一次的结果还没反馈呢。所以就留下一个污点,当这种污点累积到27次的时候,软件崩溃了。这只是我的想法不知道对不对。
但是 ,好象是没有 go to 这种语法啊。比如代码运行到155行的时候,有什么方法让代码返回到同一功能的152行啊? 不然的话,吧代码比作是一直往下流的水,只能在下面继续写上面写过的代码的话那不是很麻烦麻。循环和遍历都是可以回到正在运行代码行数上面的。但就没有一个可以单独的方法吗?跳出的话是要和上面两个共同使用的啊
难道没有这样一种方法?比如满足某个条件时,代码从152行开始运行什么的。 代码运行(152)这样的,当然这是我胡编乱造的.tc应该没有这种封装
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-3 18:40:21 | 显示全部楼层
好了 解决了 的确是栈溢出。虽然不知道究竟是什么原理。但问题肯定出在 函数互相调用上面。感谢大家的帮忙。的确是思路与代码的不对 现在我的想法是这样的,贡大家参考

先用一个遍历做主体  然后在遍历里写代码 代码运行完了之后 到遍历结束时会自动判断是否符合遍历结束条件 不符合的话就继续从遍历开始运行遍历里的代码

功能 运行代码()
    编辑框设置文本("编辑框1", 99999)
    遍历(变量 i = 0; i < 编辑框获取文本("编辑框1"); i++)  
        
        循环(循环开关)
            找第一个条件()
            如果(第一个条件 == 真)
                找第二个条件()
            否则
                跳出
            结束
        结束
        
        循环(循环开关)
            如果(第二个条件 == 真)
                跳出
            否则
                退出游戏()
                重新开始()
            结束
        结束
        
    结束
结束





虽然,,,,,用选择语法好象更容易的说.汗汗汗汗汗汗汗汗汗汗汗汗汗汗汗汗汗
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-19 07:18 , Processed in 0.045821 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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