Hey guys!!
Here's a simple example of a 2 player Pong game, using nothing more than the core library.
Please keep in mind that this is just the frame-work for what could be a more advanced game.
Merry Xmas and happy coding!!
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
			
			Here's a simple example of a 2 player Pong game, using nothing more than the core library.
Please keep in mind that this is just the frame-work for what could be a more advanced game.
Merry Xmas and happy coding!!
			
				B4X:
			
		
		
		#Region  Project Attributes
    #ApplicationLabel: 2 Player Pong
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: Landscape
    #CanInstallToExternalStorage: False
#End Region
#Region  Activity Attributes
    #FullScreen: True
    #IncludeTitle: False
#End Region
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Dim Main_Engine As Timer
 
End Sub
Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.
    Private P1_Controls As Panel
    Private P2_Controls As Panel 
    Private P1 As Panel
    Private P2 As Panel 
    Private Ball As Panel
 
    Dim ball_speed = 10dip As Float
    Dim ball_direction_x = ball_speed As Float
    Dim ball_direction_y = ball_speed As Float
 
    Dim P1startX As Float
    Dim P1startY As Float 
    Dim P1deltaX As Float
    Dim P1deltaY As Float
 
    Dim P2startX As Float
    Dim P2startY As Float 
    Dim P2deltaX As Float
    Dim P2deltaY As Float
 
    Dim p1_score = 0 As Int
    Dim p2_score = 0 As Int
 
    Dim Pause = True As Boolean
     
    Private Player1_Score As Label
    Private Player2_Score As Label
     
End Sub
Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("Game")
    P1_Controls.Width = 50%x
    P1_Controls.Height = 100%y
    P1_Controls.Top = 0%y
    P1_Controls.Left = 0%x
    P2_Controls.Width = 50%x
    P2_Controls.Height = 100%y
    P2_Controls.Top = 0%y
    P2_Controls.Left = 50%x
 
    P1.Width = 2%x
    P1.Height = 24%y
    P1.Left = 10%x
    P1.Top = 50%y - (P1.Height / 2)
 
    P2.Width = P1.Width
    P2.Height = P1.Height
    P2.Left = 90%x - P1.Width
    P2.Top = P1.Top
 
    Ball.Width = 4%x
    Ball.Height = Ball.Width
    Ball.Left = 50%x - (Ball.Width / 2)
    Ball.Top = 50%y - (Ball.Height / 2)
 
    Player1_Score.Width = 30%x
    Player1_Score.Height = 20%y 
    Player1_Score.Left = 25%x - (Player1_Score.Width / 2)
    Player1_Score.Top = 50%y - (Player1_Score.Height / 2)
    Player2_Score.Width = 30%x
    Player2_Score.Height = 20%y 
    Player2_Score.Left = 75%x - (Player2_Score.Width / 2)
    Player2_Score.Top = 50%y - (Player2_Score.Height / 2)
    P1_Controls.BringToFront
    P2_Controls.BringToFront
    Main_Engine.Initialize("Main_Engine", 16)
    Main_Engine.Enabled = True
End Sub
Sub Main_Engine_Tick
    Player1_Score.Text = p1_score
    Player2_Score.Text = p2_score
     
        'Colision detector for Player 1
            If Ball.Left < P1.Left + P1.Width _
            AND (Ball.Top + Ball.Height < P1.Top OR Ball.top > P1.Top + P1.Height) Then
                Ball.Left = 50%x - (Ball.Width / 2)
                Ball.Top = 50%y - (Ball.Height / 2)
                p2_score = p2_score + 1
                Pause = True
            End If     
     
        'Colision detector for Player 2
            If Ball.Left + Ball.Width > P2.Left _
            AND (Ball.Top + Ball.Height < P2.Top OR Ball.top > P2.Top + P2.Height) Then
                Ball.Left = 50%x - (Ball.Width / 2)
                Ball.Top = 50%y - (Ball.Height / 2)
                p1_score = p1_score + 1
                Pause = True
            End If     
     
        'Colision detector for ball against the screen boundaries
            If (Ball.Left + Ball.Width) > P2.Left Then ball_direction_x = -ball_direction_x
            If Ball.Left < (P1.Left  + P1.Width) Then ball_direction_x = -ball_direction_x
            If (Ball.Top + Ball.Height) > 100%y Then ball_direction_y = -ball_direction_y
            If Ball.Top < 0%y Then ball_direction_y = -ball_direction_y
     
        If Pause = False Then
            Ball.Left = Ball.Left + ball_direction_x
            Ball.Top = Ball.Top + ball_direction_y
        End If
     
End Sub
Sub P1_Controls_Touch (Action As Int, X As Float, Y As Float)
        Select Action
            Case Activity.ACTION_DOWN         
                P1startX = X
                P1startY = Y
             
            Case Activity.ACTION_MOVE
                Pause = False
                P1deltaX = X - P1startX
                P1deltaY = Y - P1startY
                P1startX = X
                P1startY = Y
             
                If (P1.Top + P1deltaY) > 0%y AND (P1.Top + P1.Height + P1deltaY) < 100%y Then
                    P1.Top = P1.Top + P1deltaY * 1.5
                End If         
             
        End Select     
End Sub
Sub P2_Controls_Touch (Action As Int, X As Float, Y As Float)
        Select Action
            Case Activity.ACTION_DOWN         
                P2startX = X
                P2startY = Y
             
            Case Activity.ACTION_MOVE
                Pause = False
                P2deltaX = X - P2startX
                P2deltaY = Y - P2startY
                P2startX = X
                P2startY = Y
             
                If (P2.Top + P2deltaY) > 0%y AND (P2.Top + P2.Height + P2deltaY) < 100%y Then
                    P2.Top = P2.Top + P2deltaY * 1.5
                End If         
             
        End Select     
End Sub
Sub Activity_Resume
    Pause = True
    Main_Engine.Enabled = True
End Sub
Sub Activity_Pause (UserClosed As Boolean)
    Pause = True
    Main_Engine.Enabled = False
End Sub
	Attachments
			
				Last edited: