Monkey Coder – Input – Arrow Keys

1. Notice:
——
I have created variables for the X position and Y position of the Ball

‘ Ball
Field bX:Float = 320.0 ‘X pos of the ball in the middle of canvas (canvas size: 640×480)
Field bY:Float = 240.0 ‘Y pos in the middle of the canvas (canvas size: 640×480)

2. Notice:
——
I have created the Method ControlPlayer to control the arrow keys, they are coded as KEY_UP, KEY_DOWN, KEY_RIGHT, KEY_LEFT

‘ Control Player Input START
Method ControlPlayer:Int()

‘ Control START
If KeyDown(KEY_UP) Then ‘Check if UP key is pressed
bY -= 5.0 ‘subtract 5 pixel from Y position

If bY < 5.0 Then bY = 5.0 'Check against top wall (canvas size: 640x480) Endif ' Control END ' Control Player Input START If KeyDown(KEY_DOWN) Then 'Check if DOWN key is pressed bY += 5.0 'Add 5 pixels to Y position If bY > 475.0 Then bY = 475.0 ‘Check against bottomwall (canvas size: 640×480)
Endif
‘ Control END

‘ Control Player Input START
If KeyDown(KEY_RIGHT) Then ‘Check if RIGHT key is pressed
bX += 5.0 ‘Add 5 pixels to X position

If bX > 635.0 Then bX = 635.0 ‘Check against rightwall (canvas size: 640×480)
Endif
‘ Control END

‘ Control Player Input START
If KeyDown(KEY_LEFT) Then ‘Check if LEFT key is pressed
bX -= 5.0 ‘substract 5 pixels to X position

If bX < 5.0 Then bX = 5.0 'Check against leftwall (canvas size: 640x480) Endif ' Control END Return True End ' Control Player Input END 3. Notice: ------ I have created a Method UpdateGame to put inside it ControlPlayer() wrote above in the point 2. ' Update Game START Method UpdateGame:Int() ControlPlayer() 'Control the player up an down Return True End ' Update Game END 4. Notice: ------ I have put inside Method OnUpdate:Int() the UpdateGame() ' OnUpdate START Method OnUpdate:Int() UpdateGame() Return True End ' OnUpdate END Flow Chart: Method OnUpdate ->call-> UpdateGame() ->call-> ControlPlayer() ->control-> arrow keys and variables

' STEP 1 All games open with this first command
Strict

#rem
Script: pong.monkey
Description: it is a remake of an old game!
Author: Andrea Tonin
#End

' STEP 2 Import framework mojo - it is a 2D framamework to support graphics, sound, input, device events
Import mojo

' STEP 3 Creation of Class - yourgame - (we can use the name of the game)

' Class yourgame START *****************************************
Class yourgame Extends App

' Ball
Field bX:Float = 320.0 'X pos of the ball in the middle of canvas (canvas size: 640x480)
Field bY:Float = 240.0 'Y pos in the middle of the canvas (canvas size: 640x480)

' STEP 4 Creation of Method OnCreate - OnUpdate - OnRender

' OnCreate START
Method OnCreate:Int()
SetUpdateRate(60)
Return True
End
' OnCreate END

' OnUpdate START
Method OnUpdate:Int()

UpdateGame()

Return True
End
' OnUpdate END

' Control Player Input START
Method ControlPlayer:Int()

' Control START
If KeyDown(KEY_UP) Then 'Check if UP key is pressed
bY -= 5.0 'subtract 5 pixel from Y position

If bY < 5.0 Then bY = 5.0 'Check against top wall (canvas size: 640x480)
Endif
' Control END

' Control Player Input START
If KeyDown(KEY_DOWN) Then 'Check if DOWN key is pressed
bY += 5.0 'Add 5 pixels to Y position

If bY > 475.0 Then bY = 475.0 'Check against bottomwall (canvas size: 640x480)
Endif
' Control END

' Control Player Input START
If KeyDown(KEY_RIGHT) Then 'Check if RIGHT key is pressed
bX += 5.0 'Add 5 pixels to X position

If bX > 635.0 Then bX = 635.0 'Check against rightwall (canvas size: 640x480)
Endif
' Control END

' Control Player Input START
If KeyDown(KEY_LEFT) Then 'Check if LEFT key is pressed
bX -= 5.0 'substract 5 pixels to X position

If bX < 5.0 Then bX = 5.0 'Check against leftwall (canvas size: 640x480)
Endif
' Control END

Return True
End
' Control Player Input END

' Update Game START
Method UpdateGame:Int()
ControlPlayer() 'Control the player up an down
Return True
End
' Update Game END

' OnRender START
Method OnRender:Int()
Cls 'Clear the canvas each frame

DrawCircle(bX, bY, 5) 'Draw the ball with a radius of 5

Return True
End
' OnRender END

End
' Class yourgame END ********************************************

' Step 5 Creation of Main function

Function Main:Int()
' Create a running istance from our class - the class - yourgame - has been created at STEP 3 
New yourgame
Return True
End