UN PTI PROGRAMME AMUSANT POUR LE SAUT ET LE TERRAIN
cs_neria
Messages postés319Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention16 février 2009
-
27 mars 2004 à 09:22
vlad2i
Messages postés285Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention13 février 2005
-
16 avril 2004 à 16:16
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
J'ai matté ta source, elle est vraiment bien, mais la methode que tu utilisais est vraiment lourde au niveau chargement... alors j'ai optimisé :)
Voilà le code :
Private Function GetY(a As Double, b As Integer, x As Integer) As Integer
GetY = a * x + b
End Function
Private Function LoadTerrain()
'On charge dans un tableau la hauteur
'de chaque colonne de pixel. Cette méthode
'barbare peut etre évitée en utilisant un tableau
'préparé a l'avance
Dim i As Integer
Dim j As Integer
Dim a As Double
Dim b As Integer
Erase HeightMap
For i = 0 To Terrain.Count - 1
If i > 0 Then
' On va vérifier la continualitée du terrain
If Terrain(i).X1 <> Terrain(i - 1).X2 Then
Terrain(i).X1 = Terrain(i - 1).X2
End If
End If
If Terrain(i).X2 - Terrain(i).X1 <> 0 Then
a = (Terrain(i).Y2 - Terrain(i).Y1) / (Terrain(i).X2 - Terrain(i).X1)
Else
a = 0
End If
b = Terrain(i).Y1 - (a * Terrain(i).X1)
For j = Terrain(i).X1 To Terrain(i).X2
HeightMap(j) = GetY(a, b, j)
Next j
Next i
End Function
Alors le principe c'est de faire des Line sur la form, et tu les appelles Terrain, en les indexant au cours du chemin ... et maintenant LoadTerrain analyse les coordonées X1 Y1 - X2 Y2 de chaque ligne et définit leur équation, puis va donc chercher directement la hauteur pour les points compris entre X1 et X2.
Le résultat est meuilleur, car sur un P3 500Mhz, il est casi instantané en chargement.
Bonne prog, et bonne continuation, j'm bien tes sources, akh
cs_o_be_one
Messages postés13Date d'inscriptiondimanche 28 mars 2004StatutMembreDernière intervention23 mars 2005 30 mars 2004 à 18:50
Moi je dis: pas mal :D je mets un 9 aussi :)
J'y connais pas grand chose en VB sous windows, le seul endroit ou je fais énormément de basic c'est sur ma calculette TI lol :p
Je vais commencer à m'y interesser :)
Je prends la source pour voir si il y a des ressemblances car si j'ai bien compris c'est simple :)
Pas mal du tout.
J'avais commencé à faire un Worms, je vois que le principe est le même et que j'avais bien vu !
Il est bien fait !
BobTSMSI
Messages postés60Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention 2 mars 2007 29 mars 2004 à 16:09
Là comme ça, ça sert à rien....
Mais c'est super bien fait...
J'adore!!
vlad2i
Messages postés285Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention13 février 2005 28 mars 2004 à 17:22
Ciberrique, je te remercie pou ta note ainsique ton commentaire élogieux, mais le fait que l'on ne puise pas passer dessous est du a la technique en elle meme, pas a ma fainéantise...
Pour 1 pti point :P allez ! Merci encore de vos remarques.
ciberrique
Messages postés589Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention18 juillet 20101 28 mars 2004 à 17:19
je trouve l'exemple fort bien fait, et la source trés bien commenter, je met 9 sur 10 !!! Dommage qu'on ne puisse pas passez sous un objet ...
vlad2i
Messages postés285Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention13 février 2005 27 mars 2004 à 12:41
Neria, je te remercies sincèrement de tes encouragements, mais...
... ce code est en libre accès pour vous aider en cas de besoin ... c'est loin d'etre le mieux que je puisses faire ...
Et le but est d'aider Fitz a comprendre, pas de m'amuser avec.
Mais je n'ai rien contre cette idée de BoingBoing ScreenSaver.
Merci encore, et bonne continuation a toi.
cs_neria
Messages postés319Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention16 février 2009 27 mars 2004 à 09:22
Salut !
C'est pas mal du tout ! Tu pourrais faire un écran de veille avec ca où le perso rebondit partout !
16 avril 2004 à 16:16
Héhé je reconnais, ta méthode est meilleure. Oui mais je n'ai pas cherché a optimiser, non plus comme je l'ai dis. :P
16 avril 2004 à 09:55
Voilà le code :
Private Function GetY(a As Double, b As Integer, x As Integer) As Integer
GetY = a * x + b
End Function
Private Function LoadTerrain()
'On charge dans un tableau la hauteur
'de chaque colonne de pixel. Cette méthode
'barbare peut etre évitée en utilisant un tableau
'préparé a l'avance
Dim i As Integer
Dim j As Integer
Dim a As Double
Dim b As Integer
Erase HeightMap
For i = 0 To Terrain.Count - 1
If i > 0 Then
' On va vérifier la continualitée du terrain
If Terrain(i).X1 <> Terrain(i - 1).X2 Then
Terrain(i).X1 = Terrain(i - 1).X2
End If
End If
If Terrain(i).X2 - Terrain(i).X1 <> 0 Then
a = (Terrain(i).Y2 - Terrain(i).Y1) / (Terrain(i).X2 - Terrain(i).X1)
Else
a = 0
End If
b = Terrain(i).Y1 - (a * Terrain(i).X1)
For j = Terrain(i).X1 To Terrain(i).X2
HeightMap(j) = GetY(a, b, j)
Next j
Next i
End Function
Alors le principe c'est de faire des Line sur la form, et tu les appelles Terrain, en les indexant au cours du chemin ... et maintenant LoadTerrain analyse les coordonées X1 Y1 - X2 Y2 de chaque ligne et définit leur équation, puis va donc chercher directement la hauteur pour les points compris entre X1 et X2.
Le résultat est meuilleur, car sur un P3 500Mhz, il est casi instantané en chargement.
Bonne prog, et bonne continuation, j'm bien tes sources, akh
30 mars 2004 à 18:50
J'y connais pas grand chose en VB sous windows, le seul endroit ou je fais énormément de basic c'est sur ma calculette TI lol :p
Je vais commencer à m'y interesser :)
Je prends la source pour voir si il y a des ressemblances car si j'ai bien compris c'est simple :)
Merci bonen continuation ;)
29 mars 2004 à 17:35
J'avais commencé à faire un Worms, je vois que le principe est le même et que j'avais bien vu !
Il est bien fait !
29 mars 2004 à 16:09
Mais c'est super bien fait...
J'adore!!
28 mars 2004 à 17:22
Pour 1 pti point :P allez ! Merci encore de vos remarques.
28 mars 2004 à 17:19
27 mars 2004 à 12:41
... ce code est en libre accès pour vous aider en cas de besoin ... c'est loin d'etre le mieux que je puisses faire ...
Et le but est d'aider Fitz a comprendre, pas de m'amuser avec.
Mais je n'ai rien contre cette idée de BoingBoing ScreenSaver.
Merci encore, et bonne continuation a toi.
27 mars 2004 à 09:22
C'est pas mal du tout ! Tu pourrais faire un écran de veille avec ca où le perso rebondit partout !
Bonne continuation !!!