马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册  
 
x
 
前几天有人问,如果游戏画面一次出现几种图,而这几种图每次出现的位置和顺序都是不一样的,我们应该怎么样在出现这几种图的时候鼠标都只点最下面的那一张图? 
用循环找多图是实现不了的,因为如果循环找多图中的第一张图出现在画面的最上面,无论你用什么模式,命令返回的坐标都会是这张图的坐标. 
在这里,我们就要用到大漠的扩展找多图命令了,大漠扩展找多图命令的返回值是图片序号,x坐标,y坐标!那么我们就可以对比图片的y坐标来获得最下方图片的坐标! 
//大家请根据实际情况修改代码,大漠的导入写在空间里面dm=com("dm.dmsoft") 
 
功能 大漠扩展找图() 
下标,次数,大小 
 坐标集 
 坐标 
 图片 
源串=dm.FindPicEx(0,0,2000,2000,"1.bmp|2.bmp|3.bmp|4.bmp|5.bmp","020202",1.0,0) 
分隔符="|" 
字符串.分割(源串,分隔符,坐标集) 
数组.大小(坐标集,大小) 
循环(下标<大小) 
源串=坐标集[下标] 
分隔符="," 
字符串.分割(源串,分隔符,坐标) 
图片[下标][0]=坐标[0] 
图片[下标][1]=坐标[1] 
图片[下标][2]=坐标[2] 
下标=下标+1 
循环结束 
数组.大小(坐标,大小) 
循环(次数<大小) 
    下标=0 
    循环(下标<大小-1) 
如果(图片[下标][2]>图片[下标+1][2]) 
转移0,转移1,转移2 
转移0=图片[下标][0] 
转移1=图片[下标][1] 
转移2=图片[下标][2] 
图片[下标][2]=图片[下标+1][2] 
图片[下标+1][0]=转移0 
图片[下标+1][1]=转移1 
图片[下标+1][2]=转移2 
如果结束 
下标=下标+1 
    循环结束 
    次数=次数+1 
循环结束 
鼠标.移动(图片[下标][1],图片[下标][2])   //鼠标移动到最下一张图片点击 
辅助.等待(500) 
鼠标.左键单击(1) 
返回 0 
功能结束 
 
//以上排序是y坐标对应图片数组下标从小到大排序的,如果要点击最上面的图片那么就是鼠标.移动(图片[0][1],图片[0][2]) 
//如果要点击指定图片我们可以用图像序号来判断: 
下标=0 
循环(下标<大小) 
如果(图片[下标][0]==0)//点击1.bmp,图片[下标][0]==1点击2.bmp,......以此类推 
鼠标.移动(图片[下标][1],图片[下标][2]) 
辅助.等待(500) 
鼠标.左键单击(1) 
跳出 
如果结束 
循环结束 
 
用此方法要注意,如果一种图片同时出现多张的话,只能根据找图模式和排序方向点击同样图片的第一张 
 
另: 
在这里我们只用找出最大或最小数值,本来想秀一下"快速排序法"的,想想还是留给我们的TC导师们上课时讲吧! 
要不他们都不知道下一堂课要讲什么了:P  
冷月尽量把导师们讲课的内容做成实例发到论坛上来,希望大家多多支持!大家有什么要求也可以直接提出来,冷月会竭尽全力满足大家! 
又另: 
可千万别直接叫冷月写个某某游戏的脚本源码发出来,实在是精力能力都有限! 
再另: 
本篇采用了著名的"冒泡排序法"找最大值,看不懂代码的童鞋可以去下载2012.03.02的YY教学视频,是由我们的ABin导师主讲的,内容除了"冒泡排序法"好像还有解决解绑窗口程序崩溃问题的方法! 
最后一另: 
什么你不知道2012.03.02的YY教学视频在哪下载?动起你的手来回复吧,回复就有网盘地址啦!:D 
 
 
 
 
 
 
 
 
 
 
 
 |