TC官方合作论坛

标题: 【坐标】怎样将编辑框的坐标依次输入并点击前进。 [打印本页]

作者: hongzhi725    时间: 2013-10-10 23:59
标题: 【坐标】怎样将编辑框的坐标依次输入并点击前进。
我写了一个,但是不知道为什么只在一个点了……附源码:(一部分)
  1. i=0,c1,返回串
  2.     源串=编辑框.获得文本("编辑框0")
  3.     分隔符=","
  4.     字符串.分割(源串,分隔符,返回串)
  5.     数组空间.大小(返回串,c1)
  6.     循环(真)
  7.         如果(QWER.是否到达()==真)
  8.             dm.KeyPressChar("m")
  9.             dm.delay(20)
  10.             如果(i<c1)
  11.                 dm.MoveTo(返回串[i]/4*3+45+返回串[i]%4,返回串[i+1]%4*3+48+返回串[i]%4)
  12.                 i=i+2
  13.             如果结束
  14.             dm.delay(20)
  15.             dm.LeftClick()
  16.             dm.delay(20)
  17.             dm.KeyPressChar("m")
  18.             循环(真)
  19.                 调试输出(QWER.是否到达())
  20.                 循环(QWER.是否到达())
  21.                     QWER.画圆采矿()
  22.                     跳转 A
  23.                 循环结束
  24.             循环结束
  25. A:
  26.         如果结束
  27.     循环结束
  28. 功能结束
复制代码



作者: dongyijun1979    时间: 2013-10-11 10:30

  1. 源串=编辑框.获得文本("编辑框0")
  2. 分隔符=","
  3. 字符串.分割(源串,分隔符,返回串)
  4. 数组空间.大小(返回串,c1)
复制代码

这四句该写进外循环内部吧?哥们,不然移动函数里的参数始终不变啊
作者: dongyijun1979    时间: 2013-10-11 10:32
你把要移动的位置写进一个二维数组或配置文件,然后循环读取不是更直观吗
作者: 超自然    时间: 2013-10-11 12:59
这代码首先你的M到底达成了没都没谱,QWER.是否到达()为真,按M,不管实现了没,下面小循环中又是这函数,如果你的M因为网络延迟或者卡机之类没实现,也会走到小循环中.既然外面是否到达为true,那么此时小循环中也会得true
小循环得真之后就跳转到A,跳转这玩意是一去不回头的,你还怎么读下一数组??

这玩意应该是调用,而不能goto

综上:建议趁早把按键哪套路数全丢马桶里去,接受微软的建议,除非底层的特殊场合,否则应尽量避免使用goto,尽早学会使用调用

作者: hongzhi725    时间: 2013-10-11 13:45
回复 4楼超自然的帖子

我都没看过按键的教程,更没玩过按键……
作者: hongzhi725    时间: 2013-10-11 13:46
你把要移动的位置写进一个二维数组或配置文件,然后循环读取不是更直观吗
dongyijun1979 发表于 2013-10-11 10:32:01
就是您说的这个,我不会额……
作者: hongzhi725    时间: 2013-10-11 13:47
回复 4楼超自然的帖子
  1. 功能 是否到达()
  2.     第一次,第二次
  3.     整型 x,y   
  4.     dm.SetDict(0,辅助.获取资源路径("rc:")&"dm_soft.txt")
  5.     循环(真)
  6.         第一次=dm.Ocr(875,16,979,48,"DC7338-000000",1.0)
  7.         辅助.等待(500)
  8.         //调试输出(第一次)
  9.         第二次=dm.Ocr(875,16,979,48,"DC7338-000000",1.0)   
  10.         //调试输出(第二次)
  11.         如果(第一次==第二次)
  12.             返回 真
  13.         否则
  14.             返回 假
  15.         如果结束
  16.     循环结束
  17. 功能结束
复制代码

作者: 超自然    时间: 2013-10-11 14:07
问题不是说你这是否到达函数,问题出在你最开始那段代码上,最大的问题是goto的使用,goto之后是不会再回这循环的,或者能回来,但是一切又都是重新开始,变量的值又从头来过,所以只会跑第一组坐标
其次,你的if没套好,假如卡住或者网络延迟等原因,导致M没打开地图,就会出错,因为你没考虑M没M出来时该咋办,建议优化
作者: hongzhi725    时间: 2013-10-11 21:03
回复 8楼超自然的帖子

哦,明白了!谢谢!




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1