TC官方合作论坛

 找回密码
 立即注册
查看: 1911|回复: 9

[已解决] 循环到15次左右就出现程序错误提示

[复制链接]
发表于 2016-4-18 08:07:34 | 显示全部楼层 |阅读模式

马上加入TC

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

x
本帖最后由 xlqglm 于 2016-4-18 08:09 编辑

我作了一个小程序,在NPC处完成任务,循环30次,每次只要点一键完成就可以。但是每次都会在循环到一半的时候,就会崩溃一次,大约在16次的时候,原因有可能出在什么地方。程序思路是:
//------------开始钱善出力任务----------------
功能 钱善出力出钱任务()
    找钱善()
结束
功能 找钱善()
    变量 坐标,x,y  
    等待(400)
    坐标 = 找图(0,0,1280,960,"d:\\yjwc\\钱善.bmp","000000",1,0,x,y)
    等待(200)
    如果(坐标 <0 )
        键盘按键(27,1)        
        等待(300)
        找钱善()
    否则
        等待(200)
        鼠标移动(x+5,y+55)
        等待(200)
        鼠标右键单击(1)
        等待(200)
        出力任务()
    结束
结束
功能 出力任务()
    变量 坐标,x,y
    等待(300)
    坐标 = 找图 (0,0,1280,960,"d:\\yjwc\\出力.bmp","000000",1,1,x,y)
    等待(300)   
    如果(坐标 <0 )
        等待(300)
        键盘按键(27,1)
        等待(300)
        找钱善()
    否则
        等待(100)
        鼠标移动(x+5,y+5)
        等待(100)
        鼠标左键单击(1)
        等待(100)
        一键完成出力任务()

    结束
结束
功能 一键完成出力任务()
    变量 坐标,x,y
    等待(300)
    坐标 = 找图 (0,0,1280,960,"d:\\yjwc\\一.bmp","000000",1,1,x,y)
    等待(400)
    如果(坐标<0)
        等待(500)
        找重置()
    否则
        等待(100)
        鼠标移动(x+5,y+5)
        等待(100)
        鼠标左键单击(1)
        等待(100)
        找钱善()      
    结束   
结束   
功能 找重置()
    变量 坐标,x,y   
    坐标 = 找图 (0,0,1280,960,"d:\\yjwc\\重置.bmp","000000",1,1,x,y)
    等待(400)
    如果(坐标<0)
        等待(300)
        找我知道了()
    否则
        等待(100)
        鼠标移动(x+5,y+5)
        等待(100)
        鼠标左键单击(1)
        等待(100)
        找钱善()   
    结束
结束
功能 找我知道了()
    变量 坐标,x,y   
    坐标 = 找图 (0,0,1280,960,"d:\\yjwc\\我知道了.bmp","000000",1,1,x,y)
    等待(100)
    如果(坐标<0)
        键盘按键(27,1)
        找钱善()               
    否则
        等待(100)
        鼠标移动(x+5,y+10)
        等待(100)
        鼠标左键单击(1)
        等待(100)
        鼠标移动(100,100)
        钱善出钱任务()
    结束
结束

未命名.bmp
回复

使用道具 举报

发表于 2016-4-18 10:04:56 | 显示全部楼层
建议楼主建立一个主函数,统一调用循环,这样调用来调用去太乱了。整理好就不会出错了
回复 支持 反对

使用道具 举报

发表于 2016-4-18 09:03:16 | 显示全部楼层
线程
回复

使用道具 举报

 楼主| 发表于 2016-4-18 10:37:38 | 显示全部楼层
言术 发表于 2016-4-18 10:04
建议楼主建立一个主函数,统一调用循环,这样调用来调用去太乱了。整理好就不会出错了 ...

麻烦能给举个例子吗?怎么建立一个主函数,统一调用 循环。简单写一下就可以。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-18 10:40:25 | 显示全部楼层

用了线程,没有全贴过来。完整程序是用了一个线程开始,调用了第一个功能 ,同时获取了ID,同时还有一个这个ID的线程关闭。还有一个检测ID,初始为假,防止同时开始多个线程。但是还是出现错误提示
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-18 10:42:20 | 显示全部楼层
xlqglm 发表于 2016-4-18 10:37
麻烦能给举个例子吗?怎么建立一个主函数,统一调用 循环。简单写一下就可以。 ...

简单写一个流程也行,我就是没有这个思路,不知道如何下手。谢谢了
回复 支持 反对

使用道具 举报

发表于 2016-4-18 11:07:18 | 显示全部楼层
xlqglm 发表于 2016-4-18 10:37
麻烦能给举个例子吗?怎么建立一个主函数,统一调用 循环。简单写一下就可以。 ...

每一个函数都完成一个具体功能,函数内部根据完成情况返回具体的值以方便调用的主函数判断来选择执行方向进程,意思把所有判断都放在主函数中,每个函数只做单一的功能,比如你的出力任务函数,没找到执行 找钱善(),找到执行 一键完成出力任务()  

举例:

功能 主函数()
    如果(出力任务())
        一键完成出力任务()
    否则
        找钱善()
    结束
结束

功能 出力任务()
    变量 坐标,x,y
    等待(300)
    坐标 = 找图 (0,0,1280,960,"d:\\yjwc\\出力.bmp","000000",1,1,x,y)
    等待(300)   
    如果(坐标 <0 )
        等待(300)
        键盘按键(27,1)
        等待(300)
        返回 假
    否则
        等待(100)
        鼠标移动(x+5,y+5)
        等待(100)
        鼠标左键单击(1)
        等待(100)
        返回 真
    结束
结束
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-18 11:09:34 | 显示全部楼层
楼上言术,先谢谢了,我慢慢研究一下。辛苦了。
回复 支持 反对

使用道具 举报

发表于 2016-4-21 07:21:04 | 显示全部楼层
循环也写得不对啊
回复 支持 反对

使用道具 举报

发表于 2016-4-25 12:19:07 | 显示全部楼层
功能 出力任务()
    变量 坐标,x,y
    等待(300)
    坐标 = 找图 (0,0,1280,960,"d:\\yjwc\\出力.bmp","000000",1,1,x,y)
    等待(300)   
    如果(坐标 >0 )
        等待(300)
        鼠标移动(x+5,y+5)
        等待(100)
        鼠标左键单击(1)
        等待(100)
        返回 真
    否则
        等待(100)
  等待(300)
        键盘按键(27,1)
        等待(300)
        返回 假
      
    结束


改成这样就对了
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

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

GMT+8, 2024-9-29 06:45 , Processed in 0.054458 second(s), 26 queries .

Powered by 海安简单软件服务部

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

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