TC官方合作论坛
标题:
我写的循环到了第27次就会卡死 然后win7提示重新启动 怎么办
[打印本页]
作者:
锃少
时间:
2017-5-10 17:09
标题:
我写的循环到了第27次就会卡死 然后win7提示重新启动 怎么办
本帖最后由 锃少 于 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-11 08:55
没人吗?
作者:
2576605471
时间:
2017-5-11 15:52
什么鬼,直接看晕
作者:
言术
时间:
2017-5-11 20:27
可能是栈溢出,函数你调我我调你的。
作者:
锃少
时间:
2017-5-12 09:41
2576605471 发表于 2017-5-11 15:52
什么鬼,直接看晕
我的主要意思是,两个功能互相调用。比如两个人,小明和小红。当小明打开游戏并判断游戏开始时,叫一下小红,小红开始工作,小红工作完成之后结束掉游戏,然后叫一下小明。小明判断游戏的确结束了,然后判断现在是第几次 次数没有小于我设置的值时再次打开游戏,判断游戏开始然后在叫小红起来工作了。就是这样,虽然和遍历有些像,但我不知道这种情况遍历该怎么写,所以就这样凑合着。
作者:
锃少
时间:
2017-5-12 09:54
言术 发表于 2017-5-11 20:27
可能是栈溢出,函数你调我我调你的。
我一开始也感觉是这样,两个功能像是小明,小红,小明调用小红,然后小红又调用小明,刚开始的第一次调用小红的还在运行 等待着第一次调用小红的结果。然后又被小红调用了一次。第一次的结果还没反馈呢。所以就留下一个污点,当这种污点累积到27次的时候,软件崩溃了。这只是我的想法不知道对不对。
但是 ,好象是没有 go to 这种语法啊。比如代码运行到155行的时候,有什么方法让代码返回到同一功能的152行啊? 不然的话,吧代码比作是一直往下流的水,只能在下面继续写上面写过的代码的话那不是很麻烦麻。循环和遍历都是可以回到正在运行代码行数上面的。但就没有一个可以单独的方法吗?跳出的话是要和上面两个共同使用的啊
难道没有这样一种方法?比如满足某个条件时,代码从152行开始运行什么的。 代码运行(152)这样的,当然这是我胡编乱造的.tc应该没有这种封装
作者:
jianqiumy
时间:
2017-5-23 23:31
思路不对,代码问题
作者:
锃少
时间:
2017-6-3 18:40
好了 解决了 的确是栈溢出。虽然不知道究竟是什么原理。但问题肯定出在 函数互相调用上面。感谢大家的帮忙。的确是思路与代码的不对 现在我的想法是这样的,贡大家参考
先用一个遍历做主体 然后在遍历里写代码 代码运行完了之后 到遍历结束时会自动判断是否符合遍历结束条件 不符合的话就继续从遍历开始运行遍历里的代码
功能 运行代码()
编辑框设置文本("编辑框1", 99999)
遍历(变量 i = 0; i < 编辑框获取文本("编辑框1"); i++)
循环(循环开关)
找第一个条件()
如果(第一个条件 == 真)
找第二个条件()
否则
跳出
结束
结束
循环(循环开关)
如果(第二个条件 == 真)
跳出
否则
退出游戏()
重新开始()
结束
结束
结束
结束
虽然,,,,,用选择语法好象更容易的说.汗汗汗汗汗汗汗汗汗汗汗汗汗汗汗汗汗
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1