
上QQ阅读APP看书,第一时间看更新
Time for action — letting the enemy paddles fight back
It isn't fair that only the player can push the ball back. The enemy needs this ability too. For sure, you can imagine it already; we will build a method first that will check and report back a collision of the ball with the enemy paddles:
- Create a new method with the name
CheckPaddleCollE
, but this time with the return type of an integer.Method CheckPaddleCollE:Int()
- Again, we first want to check if the ball is close to the paddles. As there are two of them, we will do this inside a
FOR
loop and set the index for the paddle arrays.For Local ep:Int = 0 To 1 If (bX > (eX[ep]-5)) And (bX < (eX[ep]+5)) Then
- Next, we check again if the ball's Y position is within +25/-25 pixels of the paddle's Y position. If it is, then return the index of the paddle.
If ((bY >= eY[ep]-25.0) And (bY <= eY[ep]+25.0)) Then Return ep Endif
- Now, close off the first
If
check and theFOR
loop. Then, return-1
, so we can see that no paddle was hit if the check was negative. Then close the method.Endif Next Return -1 End
- Again, we will modify the
UpdateGame
method to check and react to the enemy paddles and a possible collision with the ball.If ((bY -pY) <= 7) And ((bY -pY) >= -7 Then bdY = 0 Endif 'Next assign the possible index Local ep:Int = CheckPaddleCollE()
- If there was a collision,
ep
contains the enemy paddle index now. So we check ifep
is greater than-1
and also if the ball moves from right to left.If ep >=0 And bdX < 0 Then
- We know now that a collision happened. We will determine where the ball hit the enemy paddle and change its Y speed accordingly. Of course, we will inverse its X speed first.
If ((bY - eY[ep]) > 7) Then bdY = 1.5 If ((bY - eY[ep]) < -7) Then bdY = -1.5 If ((bY - eY[ep]) <= 7) And ((bY - eY[ep])>= -7 Then bdY= 0
- All we need to do now is close off the
IF
check.Endif
Cool, we now have enemy paddles that play the ball back. If they hit the ball.
Save again, under a name that you choose, and test your code. For the next step, you might load up Pongo_09.Monkey
, which reflects all the coding we have done so far.