A première vue on dirait des étoiles en 3D mais quand on déplace le poitn d'émission, ça y ressemble plus. Les commandes sont simples : touches flêchées du clavier pour déplacer le point d'émission, shift+touches flêchées pour déplacer les points, barre d'espace pour rafraichir (après un déplacement des points).
Pour l'execution, il vous faut : Une feuille (Form1) et un Timer(Timer1). Mettez la propriété borderstyle de la fenêtre à 0 et mettez-la en plein écran ohhhhhhhhh c'est joliiiiiiii.
Ah oui, il faut un module aussi (Module1)
Source / Exemple :
'A mettre dans le code de la feuille :
Option Explicit
Private Sub Form_Click()
End
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim i
'Touches pressées par l'utilisateur
Select Case KeyCode
Case vbKeyLeft ' Touche Gauche du clavier
PositionDepart.X = PositionDepart.X - 100
'le point d'émission est déplacé vers la gauche (de 100 tiwps)
Case vbKeyRight ' Touche Droite du clavier
PositionDepart.X = PositionDepart.X + 100
'le point d'émission est déplacé vers la droite (de 100 tiwps)
Case vbKeyUp ' Touche Haut du clavier
PositionDepart.Y = PositionDepart.Y - 100
Case vbKeyDown ' Touche Bas du clavier
PositionDepart.Y = PositionDepart.Y + 100
Case vbKeySpace 'Touche Espace
Me.Cls 'Rafraîchit l'écran
End Select
If Shift = 1 Then 'Si la touche shift est tenue enfoncée (le 1 signifie Shift)
'Déplacement de tous les points
Select Case KeyCode
Case vbKeyLeft
For i = 0 To MAX
Position(i).X = Position(i).X - 100 'Gauche
DoEvents
Next i
Case vbKeyRight
For i = 0 To MAX
Position(i).X = Position(i).X + 100 'Droite
DoEvents
Next i
Case vbKeyUp
For i = 0 To MAX
Position(i).Y = Position(i).Y - 100 'Haut
DoEvents
Next i
Case vbKeyDown
For i = 0 To MAX
Position(i).Y = Position(i).Y + 100 'Bas
DoEvents
Next i
End Select
End If
End Sub
Private Sub Form_Load()
Dim i
PositionDepart.X = Me.Width / 2 'Placement du point d'émission
PositionDepart.Y = Me.Height / 2 'au milieu de la feuille
For i = 0 To MAX
Vitesse(1, i) = ((VitesseMax * 2) * Rnd) - VitesseMax 'Les vitesses sont
Vitesse(2, i) = ((VitesseMax * 2) * Rnd) - VitesseMax 'générées au hasard
Position(i).X = PositionDepart.X 'les points sont placés au point d'émission
Position(i).Y = PositionDepart.Y
DoEvents
Next i
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
Private Sub Timer1_Timer()
On Error Resume Next
Dim i
For i = 0 To MAX
Me.PSet (Position(i).X, Position(i).Y), Me.BackColor 'Efface le point qui se trouvait à cet endroit à ce tour
Position(i).X = Position(i).X + Vitesse(1, i) 'Tous les points sont déplacés selon leur vitesse
Position(i).Y = Position(i).Y + Vitesse(2, i)
Me.PSet (Position(i).X - Vitesse(1, i), Position(i).Y - Vitesse(2, i)), Me.BackColor 'Efface le point qui se trouvait à cet endroit au tour d'avant (Emplacement - Vitesse)
If Position(i).X > Me.Width Or Position(i).Y > Me.Height Or Position(i).X < 0 Or Position(i).Y < 0 Then
'Si un point dépasse les limites de la feuille
Position(i).X = PositionDepart.X ' On le ramène au point d'émission
Position(i).Y = PositionDepart.Y
Vitesse(1, i) = ((VitesseMax * 2) * Rnd) - VitesseMax 'On lui attibue une
Vitesse(2, i) = ((VitesseMax * 2) * Rnd) - VitesseMax 'Nouvelle vitesse générée au hasard
End If
Me.PSet (Position(i).X, Position(i).Y), vbWhite 'Dessine les points
Next i
End Sub
'A Mettre dans un module :
Option Explicit
Public Type Point_A ' 1)
X As Single
Y As Single
End Type
Global Const MAX As Integer = 1000 '2)
Global Const VitesseMax As Integer = 80 '2)
Global PositionDepart As Point_A
Global Position(0 To MAX) As Point_A '3)
Global Vitesse(1 To 2, 0 To MAX) As Integer '3)
'########################## AIDE #########################
'
'1) l'instruction "Public Type" définit un type de variable
' Qui pourra être utilisé dans le code. Ici, on définit
' deux informations qu'il contiendra, à savoir les coordonnées
' X et Y d'un point (on aurait pu ajouter d'autres informations
' comme sa couleur ou autres...)
' Cette déclaration de type à plusieurs avantages :
' - Réduire l'utilisation de tableaux trop grands
' - Faciliter l'accés et la modification des informations.
'
'2) On définit des CONSTANTES avec "Const", c'est à dire des informations
' Qui ne pourront pas changer au cours de l'éxécution du code
' Il est nécéssaire de déclarer ces informations comme constantes pour
' pouvoir les utiliser comme maximum pour les tableaux (position et vitesse)
' Ici, on définit le nombre de points (MAX) et la vitesse maximale de
' chacun d'eux (VitesseMax)
'
'3) On définit deux tableaux de [MAX] colonnes chacun (la valeur qui sera
' mise en tant que nombre de points)
Conclusion :
Comme ce code ne présente pas d'utilité particulière, je l'ai beaucoup commenté pour les débutants, pour apprendre la gestion de tableaux, coordonnées multiples, types.......
Soyez indulgents !
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.