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 :

Comment savoir si une image touche à une autre image ?


Sujet :

VB 6 et antérieur

  1. #41
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par OhMonBato Voir le message
    Dans le principe c'est ça.
    Là je dirais bien que par exemple le test pour savoir si la caisse atteint la cible n'est pas bien placé mais ce n'est pas trop grave pour le moment (tel que ton code est écrit il faut pousser la caisse puis appuyer encore une fois sur la fleche droite pour que la caisse qui est deja sur la cible soit bien reconnue comme telle, tu devrais t'arranger pour que quand une caisse soit poussé, tu testes tout de suite si elle a atteint une cible.)
    Il ne faut pas oublier non plus de mettre à jour le tableau Cases (Je ne saurai trop t'encourager au minimum à mettre une majuscule à Cases voir à changer de nom car il est très proche du mot réservé "Case") dès que tu déplaces quelquechose (Luigi ou une caisse) en pensant au cas ou Luigi est sur une case "Cible" (mettre la valeur de la case à 7 par exemple, 3 + 4.. mais ce n'est qu'une idée)
    D'accord, je me mets à la planche merci de ton aide.

    Pour le test de la caisse j'ai fait ceci. Est-ce que je me suis raproché ou éloigné de la bonne voie ?

    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
    If KeyCode = vbKeyRight Then
        'Si Luigi bouge vers la droite et que c'est une case vide
        If Dalle(LigLuigi, ColLuigi + 1) = 0 Then
            'Luigi peut bouger, c'est une case vide
            ColLuigi = ColLuigi + 1
        'Si Luigi bouge vers la droite et qu'il tombe sur un mur
        ElseIf Dalle(LigLuigi, ColLuigi + 1) = 1 Then
            'on ne fait pas avancer Luigi
            ColLuigi = ColLuigi
        'Si Luigi arrive devant un caisse qu'il peut pousser
        ElseIf Dalle(LigLuigi, ColLuigi + 1) = 2 And Dalle(LigCaisse, ColCaisse + 1) = 0 Then
            'On vérifie si on peut faire avancer la caisse dans une case vide
                'Si on peut alors on fait bouger vers la droite Luigi et la caisse
                ColLuigi = ColLuigi + 1
                ColCaisse = ColCaisse + 1
        'Si Luigi rencontre un mur avec sa caisse
        ElseIf Dalle(LigLuigi, ColLuigi + 1) = 2 And Dalle(LigCaisse, ColCaisse + 1) = 1 Then
            'on ne le fait pas bouger
                ColLuigi = ColLuigi
                ColCaisse = ColCaisse
        'Si Luigi pousse une caisse sur une autre caisse
        ElseIf Dalle(LigLuigi, ColLuigi + 1) = 2 And Dalle(LigCaisse, ColCaisse + 1) = 2 Then
            'On ne le fait pas avancer...
                ColLuigi = ColLuigi
                ColCaisse = ColCaisse
        'On regarde si la caisse a atteint l'objectif
        ElseIf Dalle(LigLuigi, ColLuigi + 1) = 2 And Dalle(LigCaisse, ColCaisse + 1) = 3 Then
                ColLuigi = ColLuigi + 1
                ColCaisse = ColCaisse + 1
                'on change l'image de la caisse... Et on affiche un message peut-être..
        End If
    End If
    J'ai aussi enlevé le Else de la fin... Pour mettre à jour mon tableau, je vais chercher comment faire

    ?

  2. #42
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Tu peux réduire "un peu" le code, ça ne sert à rien de traiter les cas où rien ne peut se faire

    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
     
    If KeyCode = vbKeyRight Then
      Select Case Dalle(LigLuigi, colluigi + 1)
      Case 0
        'Luigi peut bouger, c'est une case vide
        colluigi = colluigi + 1
      Case 2
        'Si Luigi arrive devant un caisse
        If colluigi + 2 = 0 Then
          'On peut pousser la caisse
          ColCaisse = ColCaisse + 1
          coluigi = coluigi + 1
          If Dalle(LigLuigi, ColCaisse) = 3 Then
            'La caisse est arrivée sur une cible
            'Tu fais ce que tu veux la dessus
          End If
        End If
      End Select
    End If
    Avec une seule caisse, facile de gérer avec LigCaise et ColCaisse mais quand il va y en avoir plusieurs comment vas tu affecter une valeur à ColCaisse et LigCaisse ? Je te laisse réfléchir à ça.
    N'oublie pas non plus de mettre à jour ton tableau Dalle() quand tu déplaces Luigi ou une caisse.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  3. #43
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Points : 9
    Points
    9
    Par défaut
    Ok, j'essai ceci

    Sinon, tu as un site où il montre toutes les fonctions d'un tableau en vb6 ? Car je cherche pour le mettre à jour, mais je ne trouve pas...

    Je trouve des tutoriels pour VBA mais pas VB6

  4. #44
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Points : 9
    Points
    9
    Par défaut
    Bon n'ayant toujours pas trouvé de site où il explique clairement comment mettre à jour un tableau en VB 6 j'ai essayer ceci :

    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
    If KeyCode = vbKeyRight Then
      Select Case Dalle(LigLuigi, ColLuigi + 1)
      Case 0
        'Luigi peut bouger, c'est une case vide
        ColLuigi = ColLuigi + 1
        Dalle() = Dalle(LigLuigi, ColLuigi)
      Case 2
        'Si Luigi arrive devant un caisse
        If ColLuigi + 2 = 0 Then
          'On peut pousser la caisse
          ColCaisse = ColCaisse + 1
          ColLuigi = ColLuigi + 1
          Dalle() = Dalle(LigLuigi, ColLuigi)
          If Dalle(LigLuigi, ColCaisse) = 3 Then
            'La caisse est arrivée sur une cible
            'Tu fais ce que tu veux la dessus
          End If
        End If
      End Select
    End If
    Sinon, pour plusieurs caisses, est-ce que fait de les indexées pourrait être la solution ?

  5. #45
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Points : 9
    Points
    9
    Par défaut
    Est-ce que la mise à jour de mon tableau est faite de la bonne façon ?

    Sinon, dans mon prochain cours de programmation jeux vidéos avec VB6 à l'école, on voit comment déplacer une image (donc mon personnage) donc si mon prof' me propose une autre solution je vais l'essayer elle aussi...

  6. #46
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Mettre à jour un tableau c'est juste mettre à jour les valeurs contenues dans le tableau, ni plus ni moins, faut pas chercher midi à quatorze heures.

    Donc quand tu as Dalle(LigLuigi, ColLuigi)=4 parce que le bonhomme est à cet emplacement sur ta grille, si tu le bouges tu dois faire quelquechose du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    'La case où se trouvait Luigi devient vide
    Dalle(LigLuigi, ColLuigi)=0
    'On déplace Luigi d'une ligne par exemple
    LigLuigi=LigLuigi +1 
    'La case où se trouve désormais Luigi change d'état
    Dalle(LigLuigi, ColLuigi)=4
    Et pour l'indexation des caisses (ce qui est finalement un tableau à une dimension) oui c'est une solution

    Sinon, dans mon prochain cours de programmation jeux vidéos avec VB6 à l'école, on voit comment déplacer une image (donc mon personnage) donc
    si mon prof' me propose une autre solution je vais l'essayer elle aussi...
    Depuis le nombre de posts où on parle tableau ici, je ne sais plus en quelle langue te dire que ça n'a rien à voir avec un déplacement d'image en particulier, c'est une méthode pour gérer les cases de ta grille. Bien sûr qu'à un moment ou un autre il faudra modifier les propriétés Left, top de ton image mais si tu l'as déjà fait avec un autre programme, celà ne me semble pas compliqué (ni le plus pasionnant à faire dans ton programme).
    N'étant pas pédagogue et de toute façon n'ayant plus trop de temps dans les jours qui viennent à consacrer à ce sujet, je crois que je vais te laisser en apprendre un peu plus sur VB et la programmation en général.

    Bonne continuation
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  7. #47
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Points : 9
    Points
    9
    Par défaut
    Daccord, merci d'avoir pris de ton temps pour m'en expliquer d'avantage

    Bon et bien je m'y remet ^^

  8. #48
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    Je viens de prendre un cas de figure simple.

    Je n'ai pas codé tous les cas de figure, je laisse le soin à notre ami de le faire.

    Ucfoutu et OhMonBato :

    que pensez-vous du code? moyen de le simplifier?


    EDIT: voir pièce jointe complétée plus bas.
    Xavier

  9. #49
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 55
    Points
    55
    Par défaut
    Il y aurait peut etre moyen de symplifier tout cela en utilisant une classe Personnage (fonction de deplacement a l'interieur), Mur ...

    Bien entendu la progration objet est très limitée avec VB 6 .

    Et si possible des constantes litterales pour une lecture plus facile :


    Const CASE_VIDE as integer = 0
    Const CASE_MUR as integer = 1

    Sinon c'est pas mal j'ai pas lu en detail j'ai regardé très grossierement.

    a plus.

  10. #50
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 55
    Points
    55
    Par défaut
    Ca me rappelle le temps ou je faisais mon pacman en Java c'etait le meme principe

  11. #51
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Asdorve Voir le message
    Je viens de prendre un cas de figure simple.

    Je n'ai pas codé tous les cas de figure, je laisse le soin à notre ami de le faire.

    Ucfoutu et OhMonBato :

    que pensez-vous du code? moyen de le simplifier?
    Bonjour, j'ai regardé votre code, mais lorsque j'essai de le faire moi aussi afin d'apprendre, lorsque j'utilise les flèches rien ne se passe, sauf si je supprime toutes mes picturebox.

    Donc avec picturebox flèche = ne se passe rien
    et sans picturebox flèche = se passe quelque chose

    Vous avez fait quoi pour qu'avec des Pct les flèches fonctionnes ?

  12. #52
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    Citation Envoyé par Daniel_P Voir le message
    Vous avez fait quoi pour qu'avec des Pct les flèches fonctionnes ?
    J'ai eu le même problème au départ.

    Pour que les flèches fonctionnent, il faut que la propriété KeyPreview de ta form soit à True...
    Xavier

  13. #53
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 55
    Points
    55
    Par défaut
    Sinon ce n'est pas un problème du au focus sur les picturebox ? a voir

  14. #54
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Asdorve Voir le message
    J'ai eu le même problème au départ.

    Pour que les flèches fonctionnent, il faut que la propriété KeyPreview de ta form soit à True...
    Merci, ça fonctionne

  15. #55
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    j'ai un peu avancé, j'ai prog tout les cas de figure, dont entre autre la possibilité de passer par dessus la cible avec le bonhomme.

    J'ai aussi utilisé des constantes (ex: CASE_HOMME)

    Voici le dernier zip....

    j'attends vos impressions!
    Fichiers attachés Fichiers attachés
    Xavier

  16. #56
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 55
    Points
    55
    Par défaut
    Je trouve cela pas mal,

    tu devrais egalement rajouter des constantes litterales pour les codes ascii des touches (HAUT, BAS...)

    de plus il serait sympa de charger le tableau a partir d'un fichier dans lequel on disporerait ainsi les données (ce que tu as écris dans ton commentaire):

    '1 1 1 1 1 1
    '1 0 0 0 3 1
    '1 4 2 0 0 1
    '1 0 0 0 0 1
    '1 0 0 0 0 1
    '1 1 1 1 1 1



    ca serait plus sympa pour creer des tableaux :=)

  17. #57
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 55
    Points
    55
    Par défaut
    J'ai oublié d'ajouter egalement de dire qu'il faudrait faire des constantes aussi et surtout pour les chemin des images pour etre qui de devoir les modifier partout si besoin est...

  18. #58
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    chaque chose en son temps...

    j'y réfléchi.

    je ferais ça petit à petit.

    A moins que tu veuilles qu'on bosse ensemble...
    Xavier

  19. #59
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 55
    Points
    55
    Par défaut
    Lol, j'aimerais bien mais en fait j'ai mon propre probleme

    a chacun son boulet

    mais personne ne trouve reponses apparement mais je regarde ce que tu fais .

    C'est quand meme dommage de faire ce type de jeu en vb, car il n'y pas d'heritage possible car une classe case aurait été super, apres des classes filles CaseVide, CaseMur ... aurait pu etre faite ... mais bon c'est pas le cas :/

    quoique je crois qu'il est possible de faire des Interfaces ? ca pourrait etre utile ...

  20. #60
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    Citation Envoyé par Pynuch Voir le message
    quoique je crois qu'il est possible de faire des Interfaces ? ca pourrait etre utile ...
    des interfaces pour quoi? créer des niveaux?
    Xavier

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  2. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  3. Réponses: 4
    Dernier message: 31/05/2009, 10h38
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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