Gravité (sur un balle)

Description

- Applique sur une balle les effets de la gravité : acceleration en chute descceleration en monté, et rebond sur la base du systeme.
- Utilise le dragdrop pour relancer la balle
- Les réalisme est limité : pas de rebons sur les bords etc ...

Source / Exemple :


'=======================================================
'=======================================================

'code      : par fki | icq 104358060 | aim : fkiaim
'
'Composant : sur une form ajouter 3 picturebox (picture1 = obj en mvnt / picture2 = limites du systeme /
'            picture3 = ico pour dragdrop) ; un timer : timer1 (interval = 10) ; 2 label : label1 et label2
'            (pour un afficher les vitesses en pixel/s et m/s ; 1 boutou command1 (pour quitter)
'
'com.      : ceci n'est qu'un simple code de remplacement
'            j'ai concience que ceului-ci est inutile puisque peu réaliste
'            (entre autre : pas de rebonds sur les cotés) et n'utilisant pas directx ou opengl
'            En esperant que vous puissiez trouver un interret quelquonque a cette source
'
'Ps        : J'emerde royalement les connards prétancieux qui ne pencent qu'a critiquer sans aucun apport
'            de solution et je remercie les tt les gens pret à aider et à critiquer de façon positive. @+.

'=======================================================
'=======================================================

'============= Variables ============='

Dim Y As String  ' vitesse horizontale
Dim v As String  ' vitesse verticale
Dim w As Boolean ' Perdiode : accélération / deccélération
Dim z As Boolean ' Pr stoper la balle si elle touche un cote du sys.

Private Sub Command1_Click()
End
End Sub

Private Sub Form_Load()
'assignation des var
Y = 5
v = 2
w = True
z = True
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'dragdrop
'ont arreter le timer et ont cache l'image
Timer1.Enabled = False
Picture1.Visible = False
'ont remplace l'image par l'ico de dragdrop
Picture1.Drag
Picture1.DragIcon = Form1.Picture3
End Sub

Private Sub Picture2_DragDrop(Source As Control, X As Single, Y As Single)
'un fois le dragdrop terminer ont depalce l'objet
Picture1.Top = Y
Picture1.Left = X
'ont réassigne les var
Y = 5
v = 2
w = True
z = True
'et ont afficher l'image puis ont lance le timer
Picture1.Visible = True
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
      
    'etat_a = balle en acceleration
    'verif que la balle sera bien dans le systeme apres le prochaine mvnt
    If ((Picture1.Top + v) < Picture2.Height And (Picture1.Left + Y) < Picture2.Width And w = True And z = True) Then
            'incrementation de la vitesse
            v = v + 1
            'mvnt de l'objet
            Picture1.Top = Picture1.Top + v
            Picture1.Left = Picture1.Left + Y
            'si il arrive aux limites du systeme (verticalement)
            ElseIf ((Picture1.Top + v) > Picture2.Height And w = True And z = True) Then
                 Picture1.Top = Picture2.Height
                 w = False
                 v = v - 10
                     'si il arrive aux limites du systeme (verticalement)
                     ElseIf ((Picture1.Left + Y) > Picture2.Width And w = True And z = True) Then
                     Picture1.Left = Picture2.Width
                     z = False
                     End If
        
        
    'etat_a = balle en descceleration
    If (v > 0 And (Picture1.Left + Y) < Picture2.Width And w = False And z = True) Then
        v = v - 1
        Picture1.Top = Picture1.Top - v
        Picture1.Left = Picture1.Left + Y
        ElseIf (v = 0 And w = False And z = True) Then
                w = True
                    ElseIf ((Picture1.Left + Y) > Picture2.Width And w = False And z = True) Then
                    Picture1.Left = Picture2.Width
                    z = True
                    End If
        

    'Affichage de la vitesse de l'objet
    Label2.Caption = "Vitesse : " & (v * (1000 / Timer1.Interval)) & " Pixels /s"
    Label3.Caption = "Vitesse : " & ((v * (1000 / Timer1.Interval)) * 0.04) & " Cm /s"
    
End Sub

Conclusion :


En esperant que vous pourrez trouver une utilitée quelquonque à cette source.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.