ControlC ControlC · Pastebin

VBA Pong Code

Pasted: Dec 19, 2023, 1:02:22 am · Views: 299
'I added this to a module
Public Type POINTAPI
X As Long
Y As Long
End Type

Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public ballDirectionX As Integer
Public ballDirectionY As Integer
Public ballSpeed As Integer

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


' I added everything below to my form - performance will depend on your machine, just try to tweak it
Private Sub Form_Load()
' Initialize ball direction and speed
ballDirectionX = 12
ballDirectionY = 3
ballSpeed = 8250

' Initialize the starting positions of the paddles
' Place the left paddle (paddle1) towards the left side of the form
paddle1.Top = 222
paddle1.Left = 310 ' Adjust this value to move paddle1 more to the left as needed

' Place the ball towards the left side, near the left paddle
ball.Top = 0
ball.Left = 0 ' Adjust this value to position the ball more to the left as needed

' Initialize the position of the right paddle (paddle2)
paddle2.Top = Me.InsideHeight / 2 - paddle2.Height / 2

' Set the Timer Interval for continuous movement
Me.TimerInterval = 2

End Sub

Private Sub Form_Resize()
' If you need to reposition elements on form resize
ball.Left = (Me.InsideWidth - ball.Width) / 22
ball.Top = (Me.InsideHeight - ball.Height) / 220
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
' Move paddle1 with the mouse (Optional)
If Y > 4 And Y < Me.InsideHeight - paddle1.Height Then
paddle1.Top = Y
End If

If Y < Box7.Top Then
paddle1.Top = Box7.Top
ElseIf Y + paddle1.Height > Box7.Top + Box7.Height Then
paddle1.Top = Box7.Top + Box7.Height - paddle1.Height
Else
paddle1.Top = Y
End If

End Sub

Private Sub Form_Timer()
' Ball movement logic
ball.Left = ball.Left + ballDirectionX
ball.Top = ball.Top + ballDirectionY

' Collision detection with the top and bottom of Box7
If ball.Top < Box7.Top Then
ball.Top = Box7.Top ' Position the ball at the top boundary of Box7
ballDirectionY = -ballDirectionY ' Reverse the vertical direction
ElseIf ball.Top + ball.Height > Box7.Top + Box7.Height Then
ball.Top = Box7.Top + Box7.Height - ball.Height ' Position the ball at the bottom boundary of Box7
ballDirectionY = -ballDirectionY ' Reverse the vertical direction
End If

' Collision detection with the paddles
If (ball.Left <= paddle1.Left + paddle1.Width And ball.Top + ball.Height >= paddle1.Top And ball.Top <= paddle1.Top + paddle1.Height) _
Or (ball.Left + ball.Width >= paddle2.Left And ball.Top + ball.Height >= paddle2.Top And ball.Top <= paddle2.Top + paddle2.Height) Then
ballDirectionX = -ballDirectionX
End If

' Check for collision with the right side of Box7
If ball.Left + ball.Width > Box7.Left + Box7.Width Then
If ball.Top + ball.Height < paddle2.Top Or ball.Top > paddle2.Top + paddle2.Height Then
Me.decision.Caption = "Player 1 Wins!"
Me.TimerInterval = 0 ' Stop the game
Else
ballDirectionX = -ballDirectionX ' Reflect the ball
End If
End If

' Check for collision with the left side of Box7
If ball.Left < Box7.Left Then
If ball.Top + ball.Height < paddle1.Top Or ball.Top > paddle1.Top + paddle1.Height Then
Me.decision.Caption = "Player 2 Wins!"
Me.TimerInterval = 0 ' Stop the game
Else
ballDirectionX = -ballDirectionX ' Reflect the ball
End If
End If

' Refresh the form to update the positions of the controls
Me.Repaint
End Sub


Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Const KEY_UP As Integer = 38 ' Up Arrow Key for paddle1
Const KEY_DOWN As Integer = 40 ' Down Arrow Key for paddle1
Const KEY_P As Integer = 80 ' P key for paddle2
Const KEY_L As Integer = 76 ' L key for paddle2
Const PaddleMoveSpeed As Integer = 40 ' Increase this value to make paddle1 move faster
Const PaddleMoveSpeed2 As Integer = 40 ' Increase this value to make paddle2 move faster

Select Case KeyCode
Case KEY_UP
' Move paddle1 up faster
If paddle1.Top > Box7.Top Then
paddle1.Top = paddle1.Top - PaddleMoveSpeed
End If
KeyCode = 0 ' Prevent further processing of the key

Case KEY_DOWN
' Move paddle1 down faster
If paddle1.Top + paddle1.Height < Box7.Top + Box7.Height Then
paddle1.Top = paddle1.Top + PaddleMoveSpeed
End If
KeyCode = 0 ' Prevent further processing of the key

Case KEY_P
' Move paddle2 up
If paddle2.Top > Box7.Top Then
paddle2.Top = paddle2.Top - PaddleMoveSpeed2
End If
KeyCode = 0 ' Prevent further processing of the key

Case KEY_L
' Move paddle2 down
If paddle2.Top + paddle2.Height < Box7.Top + Box7.Height Then
paddle2.Top = paddle2.Top + PaddleMoveSpeed2
End If
KeyCode = 0 ' Prevent further processing of the key
End Select
End Sub