- 按键工程师
- 742060
- 2277
- 5
- 881 朵
- 10795 个
- 576 个
- 48300
- 2011-08-18
|
1#
t
T
发表于 2015-11-03 16:38
|
|只看楼主
淘宝双11抢红包-连连看源码思路分析 本文由按键学院提供技术支持 按键学院交流①群(1群已满):376122403 按键学院交流②群(2群):372671254 按键学院交流③群(3群):170084238 【按键安卓群】(23753436)
又到了每年一次的双11的“剁手节”,不知道小伙伴们买买买了没?今年的淘宝不意外的是出现了抢红包的游戏,让我们去玩各种小游戏,游戏结束后会有机会获得红包现金劵,可以用现金劵继续买买买。 因为好多游戏都死比较枯燥,万恶的淘宝又把中奖率设定的比较低,可运气差的可能玩个十几次才能抽到一个,所以我们按键精灵论坛上是及时的推出了PC版本和安卓版本的抢红包脚本。 今天的院刊就给大家带来其中的连连看游戏的脚本制作思路和源码,以供小伙伴们学习参考。 | 游戏玩法我们在制作脚本之前需要先熟悉游戏的玩法,这样才能有效率的去制作这款游戏的脚本。 游戏的主界面是这样的: - 您所在的用户组无法下载或查看附件
有玩过连连看的人都能明白它的玩法,就是找出图中的两个相同的图形点击消除即可。同时还有一定的消除规则,比如两个图形中间如果有障碍遮挡就不能消除,两个图形之间如果需要转折大于2次也是不能消除。 在这个游戏中只要在规定的15秒内把全部的图形消除,就可以获得胜利。明白了游戏的玩法,接下来我们就需要对这个游戏进行细节上的分析了。 游戏思路分析在这个游戏中是4*4大小的范围内进行找相同的图形,在实际的连连看的游戏中因为涉及到的范围比较大,图形数量也是较多,所以需要对找到的两个相同图形之间是否可连接进行一系列的判断。但是这个游戏总共的图形数量才16个,所以难度相比正式的连连看游戏要小了非常多。 从上述的分析中就可以获得出这个游戏的制作整体思路: 直接获取到游戏中的每个图形的样式,然后通过循环来遍历每个位置上的图形,当找到相同的图形的时候,就直接对这两个图形进行点击即可 | 获取图形数据因为总共有4*4的数量,所以我们需要用到二维数组,把每个位置上的图形存储到二维数组当中用来记录 我们需要先收集到所有类型的图色数据,这个游戏中总共会有14种图片,需要先全部收集到14种数据。 然后我们需要通过遍历每个格子,找到每个格子里对应的是哪个图形,可以把每种图形进行一个编号,然后记录下来  - 您所在的用户组无法下载或查看附件
通过上面的图形可以看出,两个格子之间的距离是111个像素,同样的高度距离也是111个像素,所以我们可以只取第一个格子的范围,然后通过循环遍历的方式,来逐个的获取到每个格子的内容 采集数据: - Dim 问号白 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"D5D5D5","-17|21|000000,0|50|B7BBC2")
- Dim 歪头白 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"D5D5D5","-24|-14|000000,-44|42|000000")
- Dim 惊讶蓝 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"DABE72","29|12|000000,-16|27|FFFFFF")
- Dim 香蕉绿 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"6AC25E","28|18|030206,17|26|FFFFFF")
- Dim 面膜橙 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"4E81E8","34|2|000000,21|47|000000")
- Dim 呕吐灰 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"517792","-31|18|000000,1|55|02D8F2")
- Dim 开心黄 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"4DC2E8","19|13|000000,39|22|1C23DF")
- Dim 生日红 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"9D60E2","38|28|FFFFFF,42|16|000000")
- Dim 倒哭蓝 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"D8595C","-37|-1|000000,-11|57|E5C69E")
- Dim 哭泣蓝 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"E28662","33|21|000000,-19|28|000000")
- Dim 鼻血黄 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"B0F1F3","20|18|1C23DF,13|40|000000")
- Dim 跳跃绿 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"54D5CD","-43|17|000000,2|65|54D5CD")
- Dim 礼物红 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"5757E0","35|-5|000000,17|43|B0D9EB")
- Dim 睡觉紫 = Array(100+111*x,375+111*y,197+111*x,479+111*y,"E2778B","8|28|7700D5,17|50|000000")
复制代码(我这里是为了能够直接通过名称来区别不同的图形,所以把图形的内容和颜色结合起来命名,可能略显诡异,请无视  ) 编写一个函数用来获取到每个格子内对应的图形,然后让函数返回一个对应的编号,方便之后的对比 获取图形编号: - Function 特征(x, y)
- If FindColorEx(问号白, 0) Then
- 特征 = 1
- ElseIf FindColorEx(歪头白) Then
- 特征 = 2
- ElseIf FindColorEx(惊讶蓝) Then
- 特征 = 3
- ElseIf FindColorEx(香蕉绿) Then
- 特征 = 4
- ElseIf FindColorEx(面膜橙) Then
- 特征 = 5
- ElseIf FindColorEx(呕吐灰) Then
- 特征 = 6
- ElseIf FindColorEx(开心黄) Then
- 特征 = 7
- ElseIf FindColorEx(生日红) Then
- 特征 = 8
- ElseIf FindColorEx(倒哭蓝) Then
- 特征 = 9
- ElseIf FindColorEx(哭泣蓝) Then
- 特征 = 10
- ElseIf FindColorEx(鼻血黄) Then
- 特征 = 11
- ElseIf FindColorEx(跳跃绿) Then
- 特征 = 12
- ElseIf FindColorEx(礼物红) Then
- 特征 = 13
- ElseIf FindColorEx(睡觉紫) Then
- 特征 = 14
- Else
- 特征 = 0
- End If
- End Function
- Function FindColorEx(ColorArr)
- FindMultiColor ColorArr(0), ColorArr(1), ColorArr(2), ColorArr(3), ColorArr(4), ColorArr(5), Fdir, sim, intX, intY
- If intX > -1 Then
- FindColorEx = True
- Else
- FindColorEx = False
- End If
- End Function
复制代码 完整代码 - 您所在的用户组无法下载或查看附件
|