TC官方合作论坛

 找回密码
 立即注册
查看: 3463|回复: 7
打印 上一主题 下一主题

[安卓教程] 安卓教程——找图完成雷霆*战机*无尽版

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-17 13:41:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 TC兔子 于 2015-4-17 13:54 编辑

由于身体原因,有很久一段时间没有写代码,更顾不上写教程。趁着这次5.0发布,写点简单的教程,给想学习的朋友。刚开始用的是我自己的手机,过两天再说怎么连接模拟器来写。靠谱助手,海马玩,天天,自己百度吧。
仅限新手朋友观看,老鸟们就绕道吧,我这水平已经跟不上你们的节奏了!

请注意:代码没有进行复杂处理,只支持480*720分辨率的手机。如有不适,请自行截图。
免责声明:本文章仅仅个人娱乐,请勿用于商业用途,如有游戏封号等一切不良后果,请自负!


首先,简单说下几个找图的api
findpic:就是按顺序找图,找到了就返回。如果你有好几个图片“rc:pic1.bmp|rc:pic2.bmp|......”,假如屏幕中有pic2, pic3,那么,当他找到pic2的时候,他就返回了,不再去找pic3。所以,如果仅仅只需要找一张图,用这个函数比较好。
他的返回值是:图片的索引号。
findpics:这个是findpic的双胞胎兄弟,他也是只找一张图片,第一张找到的图片。但是他的区别是,他的返回值是:图片的名称。
findpicex:这个函数就不一样了,他能找多个图片,并且把所有找到的图片都返回给你。
这里就有问题了,他返回的都是什么信息?如何处理?
    他的返回值是:图片的索引号,x坐标,y坐标。这个图片索引号就是你给他的图片的顺序,不过他是从0开始计数的。
    还有需要注意的就是,如果找图界面中同时出现几个要找的图片,那么他都会把这些坐标信息反馈在返回值里,区别就是他们的坐标不同。
findpicexs:这还用讲么,就是把索引号换成文件名了。
第二,实用找图api
新建一个安卓项目
双击项目就可以看到
  1. function floatwinrun()
  2. //浮动窗口运行按钮执行的事件,如果不需要可去掉
  3. messagebox("你好世界")
  4. end
复制代码

这个函数,就是你在手机上点击运行按钮时执行的内容
点击以后会出现
需要注意的是:这个函数本身就是一个线程函数,如果需要加入while,for不需要再重新开线程了。可以直接使用。
想找图得有工具吧,TC自带图色助手:
打开以后就可以看到以下界面


如果向知道具体啥用,自己去点点吧,反正坏不了你的电脑。

说正经的,用图色助手截图吧

                  
这是我截取的几个图片,没有全部列出来。


上代码

  1. var winh, winw
  2. var picnamearray = array("rc:endless.bmp", "rc:friend.bmp", "rc:buyitem.bmp", "rc:attack.bmp", "rc:dead.bmp", "rc:rewoard.bmp", "rc:continue.bmp")

  3. function floatwinrun()
  4.         //浮动窗口运行按钮执行的事件,如果不需要可去掉
  5.         //        messagebox("你好世界")
  6.         sysgetscreen(winw, winh)
  7.         main()
  8.         
  9. end

  10. function main()
  11.         var totalstring = picnamearray[0]
  12.         var totallen = arraysize(picnamearray)
  13.         for(var i = 1; i < totallen; i++)
  14.                 totalstring = totalstring & "|" & picnamearray[i]
  15.         end
  16.         
  17.         var retstr, retstrarraylen
  18.         var retstrarray //定义变量
  19.         var retx = 0, rety = 0
  20.         while(true)
  21.                 retstr = findpicex(0, 0, winw, winh, totalstring, "151515", 0.9, 0) //使用了找多图的函数
  22.                 if(strlen(retstr) > 0)
  23.                         retstrarraylen = strsplit(retstr, "|", retstrarray) //获得数组的长度,并且进行分割
  24.                         traceprint(retstrarraylen)
  25.                         if(retstrarraylen == 1) //如果数组长度为1,则意味着只找到了一个图片,没有选择性,只需要进行点击
  26.                                 var picpos
  27.                                 traceprint(retstrarray[0])
  28.                                 strsplit(retstrarray[0], ",", picpos) //再次分割找到图片的位置
  29.                                 retx = cint(picpos[1])
  30.                                 rety = cint(picpos[2])//这里方便新手看,多加了两步
  31.                                 tap(retx, rety)
  32.                                 waitcondition(picnamearray[cint(picpos[0])], false) //这个是一个等待点击结果,具体后面再解释
  33.                         elseif(retstrarraylen == 2)
  34.                                 var picpos
  35.                                 
  36.                                 for(var i = 0; i < 2; i++)
  37.                                         strsplit(retstrarray[i], ",", picpos)
  38.                                         if(picpos[0] == "3")
  39.                                                 retx = cint(picpos[1])
  40.                                                 rety = cint(picpos[2])//这里方便新手看,多加了两步
  41.                                                 tap(retx, rety)
  42.                                                 waitcondition(picnamearray[cint(picpos[0])], false)
  43.                                         end
  44.                                 end
  45.                         end
  46.                 else
  47.                         traceprint(retstr)
  48.                 end
  49.                
  50.                 sleep(300) //例行等待,不用占用太多资源
  51.         end
  52. end

  53. ////////////////////////////////////
  54. //等待状态,判断是否继续
  55. //参数:1.图片名字;2.是否存在;3.等待时长
  56. ///////////////////////////////////
  57. function waitcondition(name, trueorfalse, longtime=50)
  58.         var  rets=-1, retx = 0, rety = 0
  59.         for(var i = 0; i < longtime; i++)
  60.                 rets = findpic(0, 0, winw, winh, name, "102030", 0.9, 0, retx, rety)
  61.                 if(trueorfalse)
  62.                         if(rets >=0 )
  63.                                 break
  64.                         end
  65.                 else
  66.                         if(rets < 0)
  67.                                 break
  68.                         end
  69.                 end
  70.                 sleep(100)
  71.         end
  72. end
复制代码






本帖子中包含更多资源

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

x

评分

参与人数 2威望 +10 金币 +11 收起 理由
x348235234 + 1 有找字的教程吗 稳定吗
kevinqq + 10 + 10 欢迎兔爷 回来

查看全部评分

回复

使用道具 举报

沙发
发表于 2015-4-17 13:45:43 | 只看该作者
:-oTC:-oTC:-oTC
回复 支持 反对

使用道具 举报

板凳
发表于 2015-4-17 16:30:34 | 只看该作者
支持
回复

使用道具 举报

地板
发表于 2015-4-17 17:18:20 | 只看该作者
支持一下
回复

使用道具 举报

5#
发表于 2015-7-15 14:21:59 | 只看该作者
菜鸟一个没看懂
有视频教程没
回复 支持 反对

使用道具 举报

6#
发表于 2015-11-23 13:17:35 | 只看该作者
哥,能否写得仔细一点?
回复 支持 反对

使用道具 举报

7#
发表于 2016-5-8 13:21:52 | 只看该作者
MARK~~~~~~~
回复

使用道具 举报

8#
发表于 2017-3-25 09:54:05 来自手机 | 只看该作者
TC安卓版,手指点击无效,怎么办?
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

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

GMT+8, 2025-9-17 15:51 , Processed in 0.278883 second(s), 24 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

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