De la belle neige !

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 827 fois - Téléchargée 65 fois

Contenu du snippet

Voici un petit programme dans lequel on peut apercevoir de la neige tombé sur la form, elle ne s'accumule pas encore... Si quelqu'un sait comment faire pour qu'elle s'accumulle dans le bas , faites moi le savoir s'il vous plaît. Merci.

Premièrement, la feuille doit s'appeller Form1
Deuxièmement, il doit y avoir une picture box nommé picMenu en haut de la form, dans ce picturebox , metter un bouton nommez cmdQuitter

POUR QUE LES CERCLES(LES FLOCONS DE NEIGE) SOIENT REMPLIES, DANS LES PROPRIÉTÉS DE LA FORM, METTEZ FILLCOLOR EN BLANC ET FILLSTYLE EN SOLID

Source / Exemple :


Option Explicit
'Variables
Dim i
Dim i2
Dim NeigeX(200)
Dim NeigeY(200)
Dim Mouvement(200)
Dim Vitesse(200)

Private Sub cmdQuitter_Click()
  'Termine l'application
  End
End Sub

Private Sub Form_Load()
  'Démarrage et positionnement des premiers flocons de neige
  Randomize
  ScaleMode = 3
  For i = 1 To 200
    NeigeX(i) = Int(((Me.ScaleWidth) * Rnd) + 1)
  Next

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  'Affichage du menu
  If Y < 25 Then
    picMenu.Visible = True
  Else
    picMenu.Visible = False
  End If
End Sub

Private Sub Form_Resize()
  'Ajustement selon la grandeur de la Form
  picMenu.Width = Screen.Width
  For i = 1 To 200
    NeigeX(i) = Int(((Me.ScaleWidth) * Rnd) + 1)
  Next
End Sub

Private Sub Timer1_Timer()
  Do While Not (DoEvents = 0)
  Me.Cls
    For i = 1 To 200
      'Vitesse à laquelle la neige tombe
      Vitesse(i) = Int((50 * Rnd) + 1)
      'Déplacement de la neige de gauche à droite
      Mouvement(i) = Int((-5 * Rnd) + 5)
      
      
      'Patente kié dure a comprendre
      NeigeX(i) = NeigeX(i) + Mouvement(i)
      NeigeY(i) = NeigeY(i) + Vitesse(i)
      'Si la neige dépasse le fond
      If NeigeY(i) > Me.ScaleHeight Then
        NeigeY(i) = 0
            NeigeX(i) = Int(((Me.ScaleWidth) * Rnd) + 1)
      End If
      'Si la neige dépasse les côtés
      If NeigeX(i) > Me.ScaleWidth Then
        NeigeY(i) = 0
            NeigeX(i) = Int(((Me.ScaleWidth) * Rnd) + 1)
      End If
      Circle (NeigeX(i), NeigeY(i)), 2, RGB(255, 255, 255)
    Next i
  Me.Refresh
  Loop
End Sub

Conclusion :


Copyright 2001 gui2 Entertainment

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
dimanche 2 mars 2003
Statut
Membre
Dernière intervention
5 avril 2003

Si tu veux accumuler la neige, construit un tableau a 2 dimensions (de longueur et largeur de la form) où quand un pixel de ce tableau est rempli par un chiffre 0 (0 ou 1 par ex, 0 designant qu'il est vide) alors met un point blanc sinon c'est qu'il est rempli et met un point blanc sur le pixel situé au-dessus .....
Excuse-moi si je n'ai pas été clair .....
LU,
punaise vous pourriez mettr un zip avec un exempl ki fonctionne :-(

Parce ke franchement kan sa foire et ke l'on ne trouve pas son erreur ces tres chiant

merci et @ +
Pour le programme " la neige tombé sur la form"
Pour qu'elle s'accumulle dans le bas:
1- Ajouter un PictureBox (p) et modifier ses propriétés
p.Align =2 (Align Bottom)
p.borderStyle =0 (None)
p.Appearance=0 (Flat)
p.Bakcolor=Blanc

2- Variable Global :
Dim Epesse as Variant

3- Dans Form_Load():
Epesse=0
p.Height = Epesse

'On peut reinitialiser Epesse et p.Height=0 avec un bouton
'ou lorsque p.Height=Form.Height...

4- Ajouter de ligne dans Le Timer1_Timer()
p.Height = Epesse
Epesse = Epesse + 0.03 (0.03 ou plus ou moins selon votre gout)

Private Sub Timer1_Timer()
Do While Not (DoEvents = 0)
Me.Cls
For i = 1 To 200
'Vitesse à laquelle la neige tombe
Vitesse(i) = Int((50 * Rnd) + 1)
'Déplacement de la neige de gauche à droite
Mouvement(i) = Int((-5 * Rnd) + 5)
'Patente kié dure a comprendre
NeigeX(i) = NeigeX(i) + Mouvement(i)
NeigeY(i) = NeigeY(i) + Vitesse(i)
'Si la neige dépasse le fond
If NeigeY(i) > Me.ScaleHeight Then
NeigeY(i) = 0
NeigeX(i) = Int(((Me.ScaleWidth) * Rnd) + 1)
p.Height = Epesse 'Ajouter cette ligne

End If
'Si la neige dépasse les côtés
If NeigeX(i) > Me.ScaleWidth Then
NeigeY(i) = 0
NeigeX(i) = Int(((Me.ScaleWidth) * Rnd) + 1)
End If
Circle (NeigeX(i), NeigeY(i)), 2, RGB(255, 255, 255)
Next i
Epesse = Epesse + 0.03 'Varier le 0.03 seulon la vitesse de création de la bande de neige
Me.Refresh
Loop

End Sub
Ke dire, j'pleure, pire j'm'extasie dvt tant de beauté pure!!...
Yep, cé beau! Suis juste déçu ke qqu'1 ait trouvé avt moi!!! ;-) Pô grave, par contre j'essaierai de voir pr ke la neige s'accumule au fond sans kiter!.. Ki m'offre des nuits blanches avec pizza & Badoit à gogo??? ;-))
Rooooh... Que c'est beau!

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.