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 :

Mettre en mouvement un personnage


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier Avatar de Ramdoulou
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 286
    Points : 107
    Points
    107
    Par défaut Mettre en mouvement un personnage
    Bonjour

    Alors voilà, je commence à faire un petit peu de 2D.
    Je sais que Vb c'pas le top...mais j'aimerai apprendre à faire une action de base, et primordiale.

    Alors voilà, par exemple j'ai une image .png du même format et style que celles du site Charas (exemple : http://www.charas-project.net/charas...t_t_t_t&texts= )

    Donc voilà, comment effectuer des déplacements avec celle-ci, par exemple si j'appuis sur la touche directionnelle droite, que ça ne prenne pas l'image .png entiere, mais le personnage en question allant donc vers la droite (2eme ligne) ?

    Voilà, je ne sais pas si c'est bien clair...

    Merci d'avance =)

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    bah y'a toujours 2 images, le fond et le sprite du bonhomme non ?

  3. #3
    Membre régulier Avatar de Ramdoulou
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 286
    Points : 107
    Points
    107
    Par défaut
    Euh tu parles du .png ?

  4. #4
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    PictureClip, F1

    Pour le format png, je ne sais pas si les composants VB6 les prennent... I check it out... je vérifie.

    [Edition : après vérificaiton]
    Heu... non! En tous cas, pas avec un PictureBox

  5. #5
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    PictureClip se trouve dans les composants supplémentaires (Ctrl+T). C'est un composant graphique non visuel (en exécution). Tu peux utiliser Ms Paint pour convertir ton .png en .bmp utilisable par les composants graphiques de VB6. Sous WinXP, Paint permet d'enregistrer en Bitmap de différentes définitions (ou résolution... sais plus, l'un pour le nombre de pixels, l'autre pour le nombre de couleurs), soit en noir et blanc (ou monochrome), en 16 couleurs, en 256 couleurs ou en couleurs 24 bits (true colors).

    Pour ton image exemple, je l'ai copié-collé dans Paint et enregistré d'abord en png, puis en bmp 256 couleurs. Il n'y a pas de changement de couleurs en 24 bits, un peu en 256 couleurs et c'est affreux en 16 couleurs...

    J'ai ici un petit exemple impliquant un PictureBox, un CheckBox, un PictureClip et un Timer.

    Le CheckBox a ces valeurs de propriétés:
    Caption: "Arrêter"
    Style: 1 - Graphical

    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
    Option Explicit
    Private indice As Integer
     
    Private Sub Check1_Click()
        Check1.Caption = IIf(Check1, "Reprendre", "Arrêter")
        Timer1.Enabled = Not CBool(Check1)
    End Sub
     
    Private Sub Form_Activate()
        indice = 0
        With PictureClip1
            .Picture = LoadPicture("C:\Documents and Settings\zaza\Bureau\res_viewer_256.bmp")
            .Rows = 4
            .Cols = 3
        End With
        With Timer1
            .Interval = 100     ' un dixième de seconde (100 millisecondes)
            .Enabled = True
        End With
    End Sub
     
    Private Sub Timer1_Timer()
        Picture1.Picture = PictureClip1.GraphicCell(indice)
        Picture1.Refresh
        indice = indice + 1
        If indice = PictureClip1.Cols * PictureClip1.Rows Then indice = 0
    End Sub
    [Edit : ajout d'infos]
    Je remarque que le nom de l'image commence par rs_viewer. Il est donc question, sur ton site de référence, d'un exemple utilisant un fichier de ressource. Il existe bien en VB6 une technique utilisant un fichier de ressource (.res) avec laquelle je suis moins familière. Mais c'est possible, même très faisable, et même plus: la technique la plus utilisée s'il y a beaucoup de petites animations dans une application. Du moins, c'est ce que j'ai cru comprendre au fil de mes lectures.

  6. #6
    Membre régulier Avatar de Ramdoulou
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 286
    Points : 107
    Points
    107
    Par défaut
    Super ! Exactement ce que je voulais ! =D

    Merci beaucoup pour ton aide et pour le temps que tu m'as accordé !

  7. #7
    Membre régulier Avatar de Ramdoulou
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 286
    Points : 107
    Points
    107
    Par défaut
    Désolé de réouvrire le sujet mais j'ai un ptit probleme.

    Enfaite sous forme d'un jeu par exemple, comment récupérer que le mouvemment par exemple du personnage marchant vers la droite (exemple, si on appuis sur la touche directionnelle droite, le perso marche vers la droite etc...) ?

    Merci =)

    J'ai essayé certains trucs mais je n'ai pas obtenu les bons resultats =x

    [edit]
    J'ai remplacé la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Picture1.Picture = PictureClip1.GraphicCell(indice)
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Picture1.Picture = PictureClip1.GraphicCell(3)
    pour obtenir par exemple la position du personnage pret à marcher vers la droite.
    Seulement, ce n'est pas en mouvement, d'où vient le probleme ?

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour Ramdoulou,

    Un mouvement est rendu par :

    - la modification d'une image (il semble que tu y sois parvenu)
    - le déplacement de l'image (et pour celà : regarde Move dans ton aide en ligne)

    Le déplacement (utilisation de Move) correspond à un pas qui peut être assuré de deux manières différentes :
    - appuis répétés d'une touche ===>> chaque appui provoquant le déplacement (un seul pas)
    _ utilisation d'un Timer (avec un pas à chaque interval du timer)

    Voilà ...

    EDIT : va voir le zip se trouvant joint au message n° 10 de la discussion suivante :
    http://www.developpez.net/forums/d18...-pictureboxes/

    Ne t'intresse pas au reste (transparences de contrôles) mais aux seuls déplacements d'image.
    Le but du zip n'étant pas le rendu d'un déplacement, mais tout autre, les images de l'animal en déplacement ont été bâclées...
    La seule différence, c'est que tu te sers de portions d'un PictureClip et que dans cet exemple, on utilise directement des icônes. Cette différence n'a donc rien à voir avec ton problème, dès lors que tu as également tes images successives, issues de ton PictureClip.

  9. #9
    Membre régulier Avatar de Ramdoulou
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 286
    Points : 107
    Points
    107
    Par défaut
    Merci de vos réponses.

    Ok donc j'ai analysé un peu le code contenu dans le zip étant donc evidemment interessé par une sub :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub frame_transparent(cadre As Frame, f As Form, imaj As Image)
     
    .Move -cadre.Left * Screen.TwipsPerPixelX, -cadre.Top * Screen.TwipsPerPixelY
    Donc je vois à peu pres comment cette fonction s'utilise, mais j'ai pas réussi à l'utiliser =s

    Et j'ai pensé à autre chose, décomposer les mouvements, par exemple le code source de Zazaraignée execute tous les mouvements, mais si dans la boucle on peut obtenir une valeur de dépard par exemple le moment où le perso tourne pour la premiere fois à droite, et ensuite la fin de ce mouvement (donc quand il n'est plus vers la droite), et qu'on prend ensuite toutes les valeurs quand le perso est à droite (donc quand il marche), et qu'on en fait une boucle ?
    Enfin c'est un peu vague, mais vous voyez ce que je veux dire ?

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Je t'avais dit de ne t'intéresser qu'à la gestion des déplacements de l'animal ...
    La transperence des autres contrôles n'a rien à voir avec ton étude du moment...

    Pour ton autre question, c'est simple :
    Dans ton timer, un compteur... que tu incrémentes de 1 à chaque pas
    Admettons que tu aies trois images (indices 1, 2 et 3)
    Lorsque ton compteur dépasse 3 tu le remets à 1
    Et à chaque fois, tu te réfères à l'image d'indice compteur ...

  11. #11
    Membre régulier Avatar de Ramdoulou
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 286
    Points : 107
    Points
    107
    Par défaut
    Alors j'ai essayé de me debrouiller avec mes connaissances, avec mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Dim compteur As String
     
        compteur = 3
        Picture1.Picture = PictureClip1.GraphicCell(compteur + 1) ' 3 4 5 ==> droite
        Picture1.Refresh
        If compteur > 5 Then
        compteur = 3
        End If
    Mais voilà, le personnage reste à l'indice 4 et ne bouge pas, pourquoi ?

  12. #12
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Je ne veux pas te faire ton truc...

    Je vais me contenter de te donner cet exemple :
    Un bouton de commande Command1, un label label1 et un timer timer1

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Command1_Click()
     Timer1.Enabled = True
     Timer1.Interval = 600
    End Sub
     
    Private Sub Timer1_Timer()
      Static cpt As Integer
      If cpt = 0 Then cpt = 1
      Label1.Caption = cpt
      cpt = cpt + 1
      If cpt > 3 Then cpt = 1
    End Sub
    A toi de comprendre et de t'en servir ...

  13. #13
    Membre régulier Avatar de Ramdoulou
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 286
    Points : 107
    Points
    107
    Par défaut
    Super, merci j'ai réussi =D

    Jmenmele vite les pinceaux >.<

    Merci de votre aide et de votre patience ! =D

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mouvement d'un personnage (squelette)
    Par Decleir dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 25/07/2007, 21h19
  2. Problème mouvements d'un personnage ! Petage de plomb...
    Par Franck.H dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 05/03/2006, 12h26
  3. [VB6] mettre en commentaires...
    Par nd25 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/04/2004, 15h15
  4. [langage] Problème de taille de fichier à mettre dans
    Par And_the_problem_is dans le forum Langage
    Réponses: 10
    Dernier message: 13/08/2002, 09h41
  5. Comment limiter les mouvements du curseur??
    Par scorpiwolf dans le forum C++Builder
    Réponses: 9
    Dernier message: 07/07/2002, 22h09

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