Gravité (sur un balle)

Soyez le premier à donner votre avis sur cette source.

Vue 5 220 fois - Téléchargée 312 fois

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

Ajouter un commentaire Commentaires
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
55
Bien, j'ai nettoyé tous les commentaires concernant cette source.
J'espère ne plus voir de dérapage pareil; je trouve que vous êtes tous assez lamentable pour en être arriver à ce point là...
Messages postés
466
Date d'inscription
samedi 16 février 2002
Statut
Membre
Dernière intervention
20 avril 2007

je repasse par là (je détère les vieilles sources qu'on pourrait dire !) et je constate que le contenu de cette source à COMPLETEMENT changé depuis les 1eres critiques qui avaient été émises... (changé 2 ans après)

ce code là, au moins, parrait respectable ! (système repiqué en fait sur mes sources de gravités... repiqué ou alors identique en tout cas, enfin bon, au moins c'est du bon, repiqué ou pas).

Autant dire que les critiques d'antan ne s'appliquent plus !

@+
Celiphane
Messages postés
22
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
23 juillet 2004

Dire que y'a des scientifique qui se sont fait chier
a trouver des formule physique pour exprimé cette gravité :p

Conclusion

Instruction avant Programmation :p
Messages postés
3
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 mars 2004

Le code est tres simple
et devrait etre optimisé car les clauses de test comme ca c'est un peu dommage

tu pourrais programmer objet et creer un objet balle avec ses caracteristiques et ses fonctions ( acceleration , descelleration en fonction d une gravité g )

si la programmation de classe ne vous dit rien, ne programmez pas graphiquement ( en encore moins 3D par la suite )

sinon ca doit fonctionner
dommage que la gravité soit simulée et non pas exacte, il existe des formules physiques pour l'acceleration, ( dérivée de la vitesse ) et ainsi de suite en fonction de la gravité je m'en souviens vaguement, on en faisait à la fac, en mecanique ( theorique hein ) j'etais en MIAS

ces formules sont assez simple tu devrais les trouver sur le net. Et forcement, seront plus realistes qu'un simple +1 et -1 lors de la descente ou l'ascension.

Cordialement :)

LesHauSsebons
Messages postés
25
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
13 juin 2003

Sinon vous pencez koi de la MAJ / correction que j'aie apporter à la source ?
Afficher les 12 commentaires

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.