红包游戏第二弹【航海喵】
本文由按键学院提供技术支持
按键学院交流①群(1群已满):376122403
按键学院交流②群(2群):372671254
按键学院交流③群(3群):170084238
【按键学院】安卓课程(115768679)
在上一期的院刊中给大家带来了抢红包游戏中的【连连看】游戏的源码分析思路。大家对于这种抢红包的小游戏都比较刚兴趣,所以那今天给大家带来的是另外一款游戏的源码和分析思路——【航海喵】
游戏玩法
我们还是先来熟悉下这个游戏的玩法
游戏规则其实很简单,就是在猫不断下滑的过程中移动小猫的位置来躲避两旁出现的障碍物。这游戏里出现的障碍主要有一下几种:
鲨鱼:
铁矛:
漩涡:
思路分析
这游戏的障碍物出现的位置相对来说比较固定,所以我们可以把这河道划分成三段区域,把小猫的移动简化成三段区域的移动
根据这种情况,我们的思路就可以有了
先定义下初始的位置为1号位置,
对于铁矛的判断,左边出现了铁矛,就移动到2号位置,右边出现铁矛,就移动到1号位置。
对于鲨鱼的判断,有两种朝向的鲨鱼,判断如果是朝左游的鲨鱼,则移动到2号位置,反之就移动到0号位置
对于漩涡的判断,漩涡可能会出现在这三个位置,所以需要判断它的X坐标区间,从而移动小猫的位置避开
为了方便我们控制小猫的移动,我们需要编写一个移动的函数,用来快速的移动小猫到指定的位置上
Function 移位(定位)
If 定位 = 1 Then
If 位置 = 0 Then
Swipe 169, 429, 321, 424
位置 = 1
ElseIf 位置 = 2 Then
Swipe 468, 423, 321, 424
位置 = 1
End If
ElseIf 定位 = 0 Then
If 位置 = 1 Then
Swipe 321, 424, 169, 429
位置 = 0
ElseIf 位置 = 2 Then
Swipe 468, 423, 169, 429
位置 = 0
End If
ElseIf 定位 = 2 Then
If 位置 = 0 Then
Swipe 169, 429, 468, 423
位置 = 2
ElseIf 位置 = 1 Then
Swipe 321, 424, 468, 423
位置 = 2
End If
End If
End Function
复制代码
有了这样的函数,就可以快速的判断当前的位置进行相应的移动
完整代码
以下为本帖隐藏内容
==============================
Dim intx,inty
Dim 位置 = 1 '定位初始位置
Function 航海喵
Dim 右矛 = Array(252,1100,810,1500,"A38369","2|21|836A56,92|8|A38369,16|-17|5C2E16")
Dim 左矛 = Array(252,1100,810,1500,"A38369","-3|14|836A56,-18|-20|5C2E16,-144|6|A7866C")
Dim 左鲨鱼 = Array(252,1100,810,1500,"938D88","34|4|1D27A5,-5|10|1D27A5,-18|5|FFFFFF")
Dim 右鲨鱼 = Array(252,1100,810,1500,"938D88","-32|1|1D27A5,12|7|1D27A5,24|4|FFFFFF")
Dim 漩涡 = Array(252,1100,810,1500,"C5A126","-8|-42|C5A126,-37|-8|C5A126,3|12|C5A126")
Do
KeepCapture
If FindColorEx(右矛) Then
Call 移位(0)
ElseIf FindColorEx(左矛) Then
Call 移位(2)
ElseIf FindColorEx(左鲨鱼) Then
Call 移位(2) '鲨鱼朝左游,小猫移动到右边
ElseIf FindColorEx(右鲨鱼) Then
Call 移位(0) '鲨鱼朝右游,小猫移动到左边
ElseIf FindColorEx(漩涡) Then
If intx < 257 Then
Call 移位(2) '漩涡在左边,小猫移动到右边
ElseIf intx > 392
Call 移位(0) '漩涡在右边,小猫移动到左边
Else
Call 移位(0) '漩涡在中间,小猫移动到右边
End If
End If
Delay 100
Loop
End Function
Function 移位(定位)
If 定位 = 1 Then
If 位置 = 0 Then
Swipe 169, 429, 321, 424
位置 = 1
ElseIf 位置 = 2 Then
Swipe 468, 423, 321, 424
位置 = 1
End If
ElseIf 定位 = 0 Then
If 位置 = 1 Then
Swipe 321, 424, 169, 429
位置 = 0
ElseIf 位置 = 2 Then
Swipe 468, 423, 169, 429
位置 = 0
End If
ElseIf 定位 = 2 Then
If 位置 = 0 Then
Swipe 169, 429, 468, 423
位置 = 2
ElseIf 位置 = 1 Then
Swipe 321, 424, 468, 423
位置 = 2
End If
End If
End Function
Function FindColorEx(ColorArr)
FindMultiColor ColorArr(0), ColorArr(1), ColorArr(2), ColorArr(3), ColorArr(4), ColorArr(5), 0, 0.9, intX, intY
If intX > -1 Then
FindColorEx = True
Else
FindColorEx = False
End If
End Function
复制代码