|
-
September 17th, 2006, 04:18 PM
#1
Timer isn't working right
.NET 2.0
I am making a simple program that deals with the physics of a ball that drops and bounces. Right now, the conditions are ideal, no energy is lost.
The problem Im having is with the timer. The timer is set to 50 milliseconds. The value of the variable vT1 goes up 0.05 every time the a tick even is handled. But the value of vT1 isn't going up fast enough to keep up with a real clock.
Code:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Timer1.Tick
'THE CEILING is 32 and the GROUND is 532
'Gravitational Acceleration is 32.1741 feet per second
ball1.vD += ball1.vV * 0.05 '(Distance = Velocity * Time)
ball1.vH = 500 - (ball1.Pos.Y - 32)
ball1.vGPE = ball1.vM * vG * ball1.vH '(GPE = mgh)
ball1.vKE = (ball1.vM * ball1.vV ^ 2) / 2 '(KE = mV^2 / 2)
ball1.vEnergy = ball1.vGPE + ball1.vKE
ball1.vT1 += 0.05
ball1.vT2 += 0.05
ShowINFO()
'COLLISION DETECTION (THE GROUND)
If ball1.vPoint + ball1.vD > 531 Then
ball1.Pos.Y = 532
ball1.vDirectionY = "up"
ball1.vD = 0
ball1.vT2 = 0
'ball1.vV += ball1.vG * 0.01
End If
'MAXIMUM GPE, TIME TO COME BACK DOWN
If ball1.vV <= 0 And ball1.vH >= 0 Then
ball1.vDirectionY = "down"
ball1.vPoint = ball1.Pos.Y
ball1.vD = 0
ball1.vT2 = 0
End If
'MOVE DOWN
If ball1.vDirectionY = "down" Then
ball1.Pos.Y = ball1.vPoint + ball1.vD
ball1.vV += vG * 0.05
End If
'MOVE UP
If ball1.vDirectionY = "up" Then
ball1.Pos.Y = 532 - ball1.vD
ball1.vV -= vG * 0.05
End If
'MAKE SURE VELOCITY IS NOT NEGATIVE
If ball1.vV < 0 Then
ball1.vV = 0
End If
'IF ENERGY IS 0 THEN STOP LOOP/TIMER
If ball1.vEnergy = 0 Then
Timer1.Enabled = False
End If
Me.Invalidate()
End Sub
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|