• 新浪微博:
  • 微信 :
按键精灵电脑版
立即下载

软件版本:2014.05
软件大小:21.6M
更新时间:07-04

按键精灵安卓版
立即下载

软件版本:3.2.9
软件大小:62.5M
更新时间:12-07

按键精灵iOS版
立即下载

软件版本:1.3.1
软件大小:29.2M
更新时间:09-29

按键精灵Mac版
立即下载

软件版本:1.1.0
软件大小:12.3M
更新时间:12-29

快捷导航

登录 后使用快捷导航
没有帐号? 注册

登录 注册
返回列表 12345678» / 24
发新话题 回复该主题

[按键精灵安卓版] 双11抢红包连连看源码分析-【201511期】 [复制链接]

1#

淘宝双11抢红包-连连看源码思路分析



本文按键学院提供技术支持



按键学院交流①群(1群已满):376122403

按键学院交流②群(2群):372671254

按键学院交流③群(3群):170084238

【按键学院】安卓课程(115768679)



又到了每年一次的双11的“剁手节”,不知道小伙伴们买买买了没?
今年的淘宝不意外的是出现了抢红包的游戏,让我们去玩各种小游戏,游戏结束后会有机会获得红包现金劵,可以用现金劵继续买买买。
因为好多游戏都死比较枯燥,万恶的淘宝又把中奖率设定的比较低,可运气差的可能玩个十几次才能抽到一个,所以我们按键精灵论坛上是及时的推出了PC版本和安卓版本的抢红包脚本。
今天的院刊就给大家带来其中的连连看游戏的脚本制作思路和源码,以供小伙伴们学习参考。

游戏玩法

我们在制作脚本之前需要先熟悉游戏的玩法,这样才能有效率的去制作这款游戏的脚本。


游戏的主界面是这样的:



有玩过连连看的人都能明白它的玩法,就是找出图中的两个相同的图形点击消除即可。同时还有一定的消除规则,比如两个图形中间如果有障碍遮挡就不能消除,两个图形之间如果需要转折大于2次也是不能消除。


在这个游戏中只要在规定的15秒内把全部的图形消除,就可以获得胜利。明白了游戏的玩法,接下来我们就需要对这个游戏进行细节上的分析了。

游戏思路分析


在这个游戏中是4*4大小的范围内进行找相同的图形,在实际的连连看的游戏中因为涉及到的范围比较大,图形数量也是较多,所以需要对找到的两个相同图形之间是否可连接进行一系列的判断。但是这个游戏总共的图形数量才16个,所以难度相比正式的连连看游戏要小了非常多。
从上述的分析中就可以获得出这个游戏的制作整体思路:
直接获取到游戏中的每个图形的样式,然后通过循环来遍历每个位置上的图形,当找到相同的图形的时候,就直接对这两个图形进行点击即可

获取图形数据

因为总共有4*4的数量,所以我们需要用到二维数组,把每个位置上的图形存储到二维数组当中用来记录

我们需要先收集到所有类型的图色数据,这个游戏中总共会有14种图片,需要先全部收集到14种数据。

然后我们需要通过遍历每个格子,找到每个格子里对应的是哪个图形,可以把每种图形进行一个编号,然后记录下来



通过上面的图形可以看出,两个格子之间的距离是111个像素,同样的高度距离也是111个像素,所以我们可以只取第一个格子的范围,然后通过循环遍历的方式,来逐个的获取到每个格子的内容
采集数据:
  1. Dim 问号白 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"D5D5D5","-17|21|000000,0|50|B7BBC2")
  2. Dim 歪头白 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"D5D5D5","-24|-14|000000,-44|42|000000")
  3. Dim 惊讶蓝 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"DABE72","29|12|000000,-16|27|FFFFFF")
  4. Dim 香蕉绿 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"6AC25E","28|18|030206,17|26|FFFFFF")
  5. Dim 面膜橙 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"4E81E8","34|2|000000,21|47|000000")
  6. Dim 呕吐灰 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"517792","-31|18|000000,1|55|02D8F2")
  7. Dim 开心黄 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"4DC2E8","19|13|000000,39|22|1C23DF")
  8. Dim 生日红 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"9D60E2","38|28|FFFFFF,42|16|000000")
  9. Dim 倒哭蓝 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"D8595C","-37|-1|000000,-11|57|E5C69E")
  10. Dim 哭泣蓝 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"E28662","33|21|000000,-19|28|000000")
  11. Dim 鼻血黄 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"B0F1F3","20|18|1C23DF,13|40|000000")
  12. Dim 跳跃绿 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"54D5CD","-43|17|000000,2|65|54D5CD")
  13. Dim 礼物红 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"5757E0","35|-5|000000,17|43|B0D9EB")
  14. Dim 睡觉紫 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"E2778B","8|28|7700D5,17|50|000000")
复制代码
(我这里是为了能够直接通过名称来区别不同的图形,所以把图形的内容和颜色结合起来命名,可能略显诡异,请无视


编写一个函数用来获取到每个格子内对应的图形,然后让函数返回一个对应的编号,方便之后的对比
获取图形编号:
  1. Function 特征(x, y)
  2. If FindColorEx(问号白, 0) Then
  3. 特征 = 1
  4. ElseIf FindColorEx(歪头白) Then
  5. 特征 = 2
  6. ElseIf FindColorEx(惊讶蓝) Then
  7. 特征 = 3
  8. ElseIf FindColorEx(香蕉绿) Then
  9. 特征 = 4
  10. ElseIf FindColorEx(面膜橙) Then
  11. 特征 = 5
  12. ElseIf FindColorEx(呕吐灰) Then
  13. 特征 = 6
  14. ElseIf FindColorEx(开心黄) Then
  15. 特征 = 7
  16. ElseIf FindColorEx(生日红) Then
  17. 特征 = 8
  18. ElseIf FindColorEx(倒哭蓝) Then
  19. 特征 = 9
  20. ElseIf FindColorEx(哭泣蓝) Then
  21. 特征 = 10
  22. ElseIf FindColorEx(鼻血黄) Then
  23. 特征 = 11
  24. ElseIf FindColorEx(跳跃绿) Then
  25. 特征 = 12
  26. ElseIf FindColorEx(礼物红) Then
  27. 特征 = 13
  28. ElseIf FindColorEx(睡觉紫) Then
  29. 特征 = 14
  30. Else
  31. 特征 = 0
  32. End If
  33. End Function

  34. Function FindColorEx(ColorArr)
  35. FindMultiColor ColorArr(0), ColorArr(1), ColorArr(2), ColorArr(3), ColorArr(4), ColorArr(5), Fdir, sim, intX, intY
  36. If intX > -1 Then
  37. FindColorEx = True
  38. Else
  39. FindColorEx = False
  40. End If
  41. End Function
复制代码
完整代码
  1. Function 连连看
  2. Dim colarr(3,3)
  3. //采集颜色数据并进行二维数组赋值
  4. KeepCapture
  5. For i = 0 To 3
  6. For j = 0 To 3
  7. colarr(i,j) = 特征(i,j)
  8. Next
  9. Next
  10. ReleaseCapture
  11. //遍历二维数组进行对比
  12. Do
  13. For z = 1 To 14 '遍历编号
  14. For i = 0 To 3
  15. For j = 0 To 3
  16. If colarr(i, j) = z Then
  17. //第一个格子中心点坐标 147,424
  18. Tap 147 + 111 * i, 424 + 111 * j
  19. Delay 300
  20. End If
  21. Next
  22. Next
  23. Next
  24. Delay 200
  25. Loop
  26. End Function

  27. Function 特征(x, y)
  28. Dim 问号白 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"D5D5D5","-17|21|000000,0|50|B7BBC2")
  29. Dim 歪头白 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"D5D5D5","-24|-14|000000,-44|42|000000")
  30. Dim 惊讶蓝 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"DABE72","29|12|000000,-16|27|FFFFFF")
  31. Dim 香蕉绿 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"6AC25E","28|18|030206,17|26|FFFFFF")
  32. Dim 面膜橙 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"4E81E8","34|2|000000,21|47|000000")
  33. Dim 呕吐灰 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"517792","-31|18|000000,1|55|02D8F2")
  34. Dim 开心黄 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"4DC2E8","19|13|000000,39|22|1C23DF")
  35. Dim 生日红 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"9D60E2","38|28|FFFFFF,42|16|000000")
  36. Dim 倒哭蓝 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"D8595C","-37|-1|000000,-11|57|E5C69E")
  37. Dim 哭泣蓝 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"E28662","33|21|000000,-19|28|000000")
  38. Dim 鼻血黄 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"B0F1F3","20|18|1C23DF,13|40|000000")
  39. Dim 跳跃绿 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"54D5CD","-43|17|000000,2|65|54D5CD")
  40. Dim 礼物红 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"5757E0","35|-5|000000,17|43|B0D9EB")
  41. Dim 睡觉紫 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"E2778B","8|28|7700D5,17|50|000000")
  42. If FindColorEx(问号白, 0) Then
  43. 特征 = 1
  44. ElseIf FindColorEx(歪头白) Then
  45. 特征 = 2
  46. ElseIf FindColorEx(惊讶蓝) Then
  47. 特征 = 3
  48. ElseIf FindColorEx(香蕉绿) Then
  49. 特征 = 4
  50. ElseIf FindColorEx(面膜橙) Then
  51. 特征 = 5
  52. ElseIf FindColorEx(呕吐灰) Then
  53. 特征 = 6
  54. ElseIf FindColorEx(开心黄) Then
  55. 特征 = 7
  56. ElseIf FindColorEx(生日红) Then
  57. 特征 = 8
  58. ElseIf FindColorEx(倒哭蓝) Then
  59. 特征 = 9
  60. ElseIf FindColorEx(哭泣蓝) Then
  61. 特征 = 10
  62. ElseIf FindColorEx(鼻血黄) Then
  63. 特征 = 11
  64. ElseIf FindColorEx(跳跃绿) Then
  65. 特征 = 12
  66. ElseIf FindColorEx(礼物红) Then
  67. 特征 = 13
  68. ElseIf FindColorEx(睡觉紫) Then
  69. 特征 = 14
  70. Else
  71. 特征 = 0
  72. End If
  73. End Function

  74. Function FindColorEx(ColorArr)
  75. FindMultiColor ColorArr(0), ColorArr(1), ColorArr(2), ColorArr(3), ColorArr(4), ColorArr(5), Fdir, sim, intX, intY
  76. If intX > -1 Then
  77. FindColorEx = True
  78. Else
  79. FindColorEx = False
  80. End If
  81. End Function
复制代码






本主题由 副管理员 quitout 于 2015/11/3 16:50:54 执行 移动主题 操作
2#

来膜拜

3#

路过学习一下,多谢大大~

4#

ddddddddddddddd

5#

vvhasnkks

6#


7#

支持支持

8#

看看,学习下

9#

感谢分享

10#

咳咳咳咳咳咳咳咳咳咳

11#


12#

有意思的代码

13#

看看,来学习了

承接或合作开发脚本 QQ 170885196<a href="http://wpa.qq.com/msgrd?v=3&amp;uin=170885196&amp;site=qq&amp;menu=yes" target="_blank"><img id="aimg_s6Fu3" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" src="http://wpa.qq.com/pa?p=2:170885196:41" onmouseover="img_onmouseoverfunc(this)" onload="thumbImg(this)" border="0" alt="" /></a>
14#


15#


16#

连连看源码分析-【

17#

燃气热水器

18#

感謝分享......................

19#

lai观摩

20#

22568552569

发新话题 回复该主题