IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Une image que se promene (vb6)


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Par défaut Une image que se promene (vb6)
    Bonjour

    Avec le code ici il ya une image (img1) (sprite) que se promene vers une autre image (img2)(finalsprite) et puis s'arrete.
    Bien.

    Je voudrais maintenant que en place de 1 image-but a rejoindre, il ya par exemple 10 image-but.(finalsprite2....10)
    Alors sprite se promente jusqu'a finalsprite, puis jusqu'a finalsprite2 ....

    et une fois arrivé a le dernier finalsprite(10) on recommence par la premiere image.

    J'ai essayé de tout mais je ne parvienne pas a ajouter des finalsprite.
    Pouvez vous m'aider a changer le code?
    merci
    satriano
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Dim sprite As Image, finalSprite As Image 
    'sprite est l’image qui se promene
    ' finalSprite c’est l’image de arrive
    Private Sub MoveSprite(start As Boolean)
     
    'start c’est le premier mouvement
     
    Static iniLeft As Integer, iniTop As Integer, endLeft As Integer, endTop As Integer
    Static orizDir As Integer, vertDir As Integer, leftStep As Integer, topStep As Integer
    Static firstGo As Boolean
     
    If start Then
    ' variables initialiser
    iniLeft = sprite.Left
    iniTop = sprite.Top
    endLeft = finalSprite.Left
    endTop = finalSprite.Top
     
     
    orizDir = Sgn(endLeft - iniLeft)
    vertDir = Sgn(endTop - iniTop)
    leftStep = 100 ' stap
     
     
     
    topStep = Abs(iniTop - endTop) \ (Abs(iniLeft - endLeft) \ leftStep)
    firstGo = True ' vers finalsprite
     
    ' premier mouvement
    sprite.Left = sprite.Left + leftStep * orizDir
    sprite.Top = sprite.Top + topStep * vertDir
    ' timer on
     
     
    Else
     
    ' encore mouvement
    sprite.Left = sprite.Left + leftStep * orizDir
    sprite.Top = sprite.Top + topStep * vertDir
     
    If firstGo Then
    'si arrivé a finalsprite
    If sprite.Left = endLeft Then
     Timer1.Enabled = False
    End If
     
    End If
     
    End If
     
    End Sub
     
    Private Sub cmd_Click()
    Timer1.Enabled = True
    End Sub
     
    Private Sub Timer1_Timer()
     
    Set sprite = Img1
    Set finalSprite = Img2
     MoveSprite True
    End Sub

  2. #2
    Membre actif
    Homme Profil pro
    IT Supporter
    Inscrit en
    Juillet 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : IT Supporter
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 59
    Par défaut
    Citation Envoyé par satriano
    Je voudrais maintenant que en place de 1 image-but a rejoindre, il ya par exemple 10 image-but.(finalsprite2....10)
    Je suis dézolé car je comprend pas! Sois explicite avec ton problème !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Par défaut
    Donc, il ya a present :
    1 image (sprite) qui est en mouvement.

    1 image but (finalsprite) où la premiere image va, mais qui est fixe sur sa place.

    je voudrais ajouter encore 9 image but (finalsprite2, finasprite3, finalsprite4....finalsprite10)
    Alors la 1 image(sprite) va rejoindre finalsprite.
    De la elle continue jusqu'a finalsprite2
    De là elle va jusqu'à finalsprite3.....
    et comme ca jusqu'à finalsprite10.

    Donc sprite se promene en 'touchant' seulement les finalsprites où se trouvent mais sans se arreter.

    Avec mon code j'ai reussi a faire promener sprite jusqu'à finalsprite, mais je voudrais ajouter les autres finalsprite (2-9) et les faire rejoindre par sprite.

    j'espere que maintenant soit claire.

    merci

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    SAlut
    Alors sois indulgent j'ai fais ca sous not pad ...
    Y'aura donc peut etre quelque fautes et le resultat sera peut etre pas exactement ce que tu attend mais l'esprit est la je pense

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    Dim sprite As Image', finalSprite As Image 
    Dim FinalSprite(9) As Image                                'Modif ici declaration d'un tableau de 10 image , de 0 à 9
    Dim NFSprite as Integer
     
    Const LastFSprite As integer = 9
     
    'sprite est l’image qui se promene
    ' finalSprite c’est l’image de arrive
     
     
    Private Sub MoveSprite(start As Boolean)
     
    'start c’est le premier mouvement
     
    Static iniLeft As Integer, iniTop As Integer, endLeft As Integer, endTop As Integer
    Static orizDir As Integer, vertDir As Integer, leftStep As Integer, topStep As Integer
    Static firstGo As Boolean
     
     
     
       If start Then
          ' variables initialiser
          iniLeft = sprite.Left
          iniTop = sprite.Top
          endLeft = finalSprite(NFSprite).Left
          endTop = finalSprite(NFSprite).Top
     
     
          orizDir = Sgn(endLeft - iniLeft)
          vertDir = Sgn(endTop - iniTop)
          leftStep = 100 ' stap
     
     
     
          topStep = Abs(iniTop - endTop) \ (Abs(iniLeft - endLeft) \ leftStep)
          firstGo = True ' vers finalsprite
     
          ' premier mouvement
          sprite.Left = sprite.Left + leftStep * orizDir
          sprite.Top = sprite.Top + topStep * vertDir
          ' timer on
     
     
       Else
     
          ' encore mouvement
          sprite.Left = sprite.Left + leftStep * orizDir
          sprite.Top = sprite.Top + topStep * vertDir
     
          'If firstGo Then
          '   'si arrivé a finalsprite
          '   If sprite.Left = endLeft Then
          '      Timer1.Enabled = False
          '      End If
     
          'End If
     
          '1er mouvement effectué et Sprite final atteind
          If firstGo And (sprite.Left = endLeft) Then          'Remplace les 6 lignes precedentes
          If NFSprite <> LastFSprite Then
                 NFSprite = NFSprite + 1
             start = True
          Else
             Timer1.Enabled = False
          End If 
     
       End If
     
     
     
    End Sub
     
    Private Sub cmd_Click()
     
       Set sprite = Img1 ' Ondefini une fois pour toute l'image du sprite qui bouge
       NFSprite = 0
     
       Timer1.Enabled = True
    End Sub
     
    Private Sub Timer1_Timer()
     
       Set finalSprite(NFSprite) = Img2
       'If NFSprite > 0 Then finalSprite(NFSprite - 1) = img3 'une image vide pour effacer le sprite deja atteind    
     
       MoveSprite True
     
    End Sub
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Par défaut
    merci, Qwazerty,
    mais...

    sprite se promene bien jusqu' à finalsprite mail il va resolu jusque là,
    sans passer par les autres images !

    Je voudrais que sprite va d'abord passer par les autres images, pour terminer a finalsprite.

    merci

    satriano

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    SAlut
    Comme je te l'ai dis j'ai juste Open Office et qu'une partie de ton code je peux ton pas trop tester

    J'ai rajouter une ligne ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
          If NFSprite <> LastFSprite Then
                 NFSprite = NFSprite + 1
                  start = True
                  FirstGo = False 'Ici
          Else
    Bien que je doute qu'elle change quoi que ce soit..

    Par contre as tu fait un Pas a Pas pour voir ce qui se passe et ou j'ai fait une erreur?

    Je n'avais pas regarder plus que ca mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If firstGo And (sprite.Left = endLeft) Then
    ici tu test uniquement left pas top ca veut dire que ton sprite peut passer au dessus ou en dessous du sprite de destination


    [Edit]
    OK!! j'ai compris je suis une buse...
    c'est la que ca cloche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set finalSprite(NFSprite) = Img2
    Il fait que tu attribu a chaque finalSprite() une image differente
    Au debut j'ai cru que tu attribuais juste l'image contenu dans Img... je sais j'ai craqué

    Alors ici faut definir toute tes spriteFinal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub cmd_Click()
     
       Set sprite = Img1 ' Ondefini une fois pour toute l'image du sprite qui bouge
       Set finalSprite(0) = Img2
       Set finalSprite(1) = Img3
       Set finalSprite(2) = Img4
       Set finalSprite(3) = Img5
       Set finalSprite(4) = Img6
    ....
     
       NFSprite = 0
     
       Timer1.Enabled = True
    End Sub
    Voila comme ca ca devrait coller
    [/Edit]
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Par défaut
    Ahii...
    sprite commence bien. il va jusqu'à à la premiere image (img2) mais il s'arrete ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    topStep = Abs(iniTop - endTop) \ (Abs(iniLeft - endLeft) \ leftStep)
    avec ERROR 11
    DIVISION by ZERO.

    ??

  8. #8
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    SAlut (et au faite bienvenu sur dev.net je vient de voir ton nombre de messages)
    La seul partie de cette equation qui peut ammener a une division par zero c'est (Abs(iniLeft - endLeft)), ce qui equivaut a dire que le left du sprite de depart est egal au left du sprit d'arrivé.

    Causes possibles

    deux des spritefinal sont juste l'un en dessous de l'autre ( img2.left = img3.left) a verifier

    ou

    la valeur de NFSprite n'a pas ete incrementé (a verifier avec du pas a pas)

    Faut dire aussi que cette equation elle risque de te poser pas mal de probleme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    topStep = Abs(iniTop - endTop) \ (Abs(iniLeft - endLeft) \ leftStep)
    Par ce que cette partie (Abs(iniLeft - endLeft) \ leftStep) effectue une divion entiere, ce qui veut dire que tant que Abs(iniLeft - endLeft) est inferieur a 100 le resultat sera egal a zero, et donc erreur de division par zero.

    ce qui apporte une 3eme possibilité : Si tes img2 et img3 ont mon de 100 pixels de difference au niveau de leur position left (a verifier) ca plante

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

Discussions similaires

  1. Enregistrer une image sur Access depuis VB6
    Par hugnka dans le forum VB 6 et antérieur
    Réponses: 22
    Dernier message: 09/06/2011, 20h34
  2. afficher une image que son emplacement se trouve ds 1 base de donne
    Par tntneo dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 15/04/2008, 21h16
  3. Réponses: 3
    Dernier message: 20/06/2007, 18h40
  4. Réponses: 2
    Dernier message: 20/01/2007, 17h25
  5. Affichage d'une image que si un champ rempli
    Par divail dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/09/2006, 16h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo