Encore plus petite matrix

Soyez le premier à donner votre avis sur cette source.

Vue 4 898 fois - Téléchargée 235 fois

Description

Basé sur le code de kilomaster voila encore un effet matrice en un minimum de ligne, et un minimum de boucles.

J'ai enlevé les variables qui ne servent à rien, le code d'initialisation, 3 des 4 timer, quelques fonctions que je ne trouvait pas 'utiles' :) des boucles inutiles, le type dont la moitié des variables ne servait à rien. et voici un effet matrix en une vingtaine de lignes de code.

aucune utilité, donc :)

Vous prener une nouvelle form, vous mettez un timer, l'autoredraw a true, la couleur de fond à noir et ce code :

Source / Exemple :


Dim XYTab(1 To 60, 1) As Integer, CTab(1 To 420) As String * 1

Private Sub Form_Click() 'on clique pour quitter
    End
End Sub

Private Sub Timer1_Timer()
    Dim i As Integer
    For i = 1 To 60
        If XYTab(i, 1) > Height Or XYTab(i, 1) = 0 Then 'initialisation ou bordure
            XYTab(i, 0) = Int(Rnd * Width)
            XYTab(i, 1) = Int(Rnd * Height)
        End If
    Next i
    Cls
    For i = 1 To 420
        If Rnd > 0.8 Then CTab(i) = Chr(Rnd * 255)
        CurrentX = XYTab(i - 60 * Int(i / 60) + 1, 0)
        CurrentY = XYTab(i - 60 * Int(i / 60) + 1, 1) - i * 3
        XYTab(i - 60 * Int(i / 60) + 1, 1) = XYTab(i - 60 * Int(i / 60) + 1, 1) + 10
        ForeColor = RGB(0, 255 - 10 * (Int(i / 30)), 0)
        Print CTab(i) 'on affiche
    Next i
End Sub

Conclusion :


et le tour est joué. si non y'a un zip, aussi :)
A+, et comme d'hab
http://www.rature.com

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_orisa
Messages postés
38
Date d'inscription
lundi 18 mars 2002
Statut
Membre
Dernière intervention
29 octobre 2003
-
Pour yoman64 : dans le principe tu as raison, mais ton code me donne un dépassement de capacité au bout d'un certain temps. J'avais essayé de ne faire qu'une seule boucle, mais j'ai toujours eu de petits problèmes qui m'on empéché de réussir :)
Pour WhiteDwarf : tu as raison : il n'y en a aucun. En fait si : il y en a un, je pense que tu n'as pas regardé le code de kilomaster ! Mon code donne le même effet (certes avec quelques fonctionnalités de moins) mais en 5 fois moins de lignes de code... l'obtimisation est à mes yeux un 'interret' comme tu dis...
WhiteDwarf
Messages postés
510
Date d'inscription
samedi 29 décembre 2001
Statut
Membre
Dernière intervention
23 mai 2008
-
je ne vois pas l'interet de dévelloper des trucs qui ont déja été fait en mieu sur le site... sinon, je ne critique pas, c'est pas mal... et c'est simple comme code mais puissant.
yoman64
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
-
Tu ne crois pas qu'on gagnerais en vitesse si on fesais plutot:

Dim XTab(1 To 60) As Integer,YTab(1 To 60) As Integer , CTab(1 To 420) As String * 1

Private Sub Form_Load()
For i = 1 To 60
If YTab(i) > Height Or YTab(i) = 0 Then 'initialisation ou bordure
XTab(i) = Int(Rnd * Width)
YTab(i) = Int(Rnd * Height)
End If
Next i
End Sub

Private Sub Timer1_Timer()
Dim i As Integer
Cls
For i = 1 To 420
if i<60 then
If YTab(i) > Height Or YTab(i) = 0 Then
XTab(i) = Int(Rnd * Width)
YTab(i) = Int(Rnd * Height)
End If
End if
If Rnd > 0.8 Then CTab(i) = Chr(Rnd * 255)
CurrentX = XTab(i - 60 * Int(i / 60) + 1)
CurrentY = YTab(i - 60 * Int(i / 60) + 1) - i * 3
YTab(i - 60 * Int(i / 60) + 1) = YTab(i - 60 * Int(i / 60) + 1) + 10
ForeColor = RGB(0, 255 - 10 * (Int(i / 30)), 0)
Print CTab(i) 'on affiche
Next i
End Sub



Je dit sa dememe mais de cet maniere on execute seulement un for dans le timer ce qui fait que l'execution est plus rapide
dans le timer et sa ne fait pas laguer le reste du prog...
@++
anduril22
Messages postés
75
Date d'inscription
mardi 5 mars 2002
Statut
Membre
Dernière intervention
5 octobre 2005
-
Weado, j'ai vu animatix, c'est vrai que c'est pas mal fait. Mais on est pas pret d'en voir ici lol :)
mathieumg
Messages postés
558
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
18 février 2006
-
Je suis exactement du même avis que yoman64 !

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.