Deplacement d'une image par selection

Bonsoir à tous !

J'ai un problème que je ne sais pas contourner.

Je suis en train d'essayer de créer une sorte de petit jeux sur excel où je pourrait déplacer une image de case en case grâce aux touches directionnelles, j'ai fait une petite carte avec des couleur pour faire des obstacles et je voudrait que lorsque j’appuie sur une de mes touches directionnelles une petite image bouge aussi. (par exemple mon image est initialement en A1, lorsque j'appuie sur "bas" mon image se retrouve en A2 puis en partant de A2 si j'appuie sur "droite" mon image se trouve en B2 etc....)

et si possible, si je suis en A1 et que B1 est d'une certaine couleur la flèche droite ne fait rien.

Je ne sais pas si mon problème est clair

Merci !

38vba-prob.xlsx (10.99 Ko)

Bonjour

Juste pour le fun (je ne pense pas aller plus loin)

Bonjour,

Tiens, ça me rappelle quelque chose ...

Bon courage pour le développement de ton jeu

Salut,

Merci Banzai64 mais je n'arrive pas lancer ton programme un conflit avec ma version 64bit de windows

edit : Finalement il fallait que j'utilise la fonction "Ptrsafe" après déclare dans tes deux premières lignes. ça marche très bien en tout cas, je vais essayer de reprendre tes codes pour les adaptés à mon jeux =) !

Je vais regarder plus en détail ce que vous m'avais envoyer et le programme de Sebastien

Merci beaucoup !

Salut,

@banzai64

J'ai réutiliser ton code à ma sauce pour qu'il fasse exactement ce que je voudrait mais il y à quelque chose que j'aimerais comprendre :

Quand tu déclare les touches tu utilise ces codes :

Declare PtrSafe Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer 'declaration des touche virtuelle

Const VK_DOWN = &H28    ' Flèche curseur bas.
Const VK_RIGHT = &H27   ' Flèche curseur droit.
Const VK_UP = &H26      ' Flèche curseur haut.
Const VK_LEFT = &H25    ' Flèche curseur gauche.

Mais je n’ai pas trouver de ressource pour ajouter de nouvelles touches. par exemple si je veux utiliser la barre espace pour arrêter le déplacement ou la touche "A" pour ouvrir un UserForm !

Comment puis-je connaitre les codes affecter au touche ? car j'imagine que "&H28" est le code correspondant a la flèche directionnelle bas.

Merci de vos réponses

Bonjour

Vas voir de ce côté

http://jacxl.free.fr/cours_xl/liste_keys.html

La désignation des touches n'est pas la même que celle que j'ai utilisée, mais ce n'est pas important

@Sébastien : si tu passe par la Est-ce que tu pourrais me donner des explications pour animer ton serpent sur ton jeu ?

En fait j'aimerais bien procéder de la même manière que toi pour mon petit jeux.

C'est à dire :

Avoir ma petite carte sur mon USF et pouvoir bouger mon personnage dessus avec les flèches directionnelles. ça serait plus simple pour ce que je veux faire et plus propre que ce que j’essaie de faire depuis quelques jours.

Si tu as un tutoriel la dessus ou autre qui pourrait m'être utile ce serait vraiment super

Merci beaucoup déjà pour les réponse qui m'ont creuser les méninges et qui m'ont appris pas mal !

Bonjour,

Trouver une solution pour gérer les déplacements (<1 seconde) dans ce jeu avait été un vrai casse-tête ...

Voici une première piste pour ton projet

Pour ce jeu, j'ai utilisé le même principe qu'expliqué dans la vidéo du blog (Déplacer un objet en VBA), à la différence près qu'avec ce jeu on ne sort pas de la boucle avant la fin de la partie !

Grâce à DoEvents, les événements sont pris en compte, il est donc possible de détecter les touches pendant la boucle (j'ai utilisé l'événement UserForm_KeyDown pour ça).

Cordialement,

Merci beaucoup !

Je vais regarder tous ça en détail !

Si j'ai des questions en rapports avec cette partie, puis-je te les poser en MP plutôt que de créer un post à chaque fois ?

Pas de questions par MP sur le forum

D'accord,

J'ai a peu près compris comment déplacer les Objet avec la vidéo.

Mais j'ai une question avant que je me lance dans cette étape qui me parait difficile :

Par quel procéder est-tu arriver à créer des obstacles ?

Ce que je voudrais est moins compliqué que le jeu du serpent à mon avis car il n'y a pas de compteur, Je voudrait déplacer une image sur un décor mais que les obstacles soit déterminer par des couleurs.

Comment dois-je procéder ? est ce que je dois avoir la carte en fond et mon image par dessus ? est-ce que je doit bloqué les valeur prise par "top" et "left" à la main ?

Je me pose ces questions pour éviter d'aller droit dans le mur !

Détail peut-être utile:

(je voudrais par la suite avoir différentes cartes (de même taille) comment puis-je prévoir le coup ?)

Merci !

Par quel procéder est-tu arriver à créer des obstacles ?

J'ai fait le test suivant :

A chaque déplacement, j'ai vérifié si (le contrôle de) la tête du serpent était à la même position (left, top) que l'un des contrôles noirs qui forment les obstacles.

Si le test est positif, le serpent est rentré dans l'obstacle.

Détail peut-être utile:

(je voudrais par la suite avoir différentes cartes (de même taille) comment puis-je prévoir le coup ?)

Voila un petit aperçu de l'UserForm du jeu (j'ai utilisé des Labels carrés de taille identique pour former les éléments du jeu) :

userform

Merci pour ces réponses qui me permette de comprendre comment tu as fait, je pense réutiliser cette technique mais j'ai un petit probleme dans le déplacement des objets, je doit mal m'y prendre.

Avec ce code :

    If vbKeyDown Then
      Label1.Top = Label1.Top + 20

j'ai toujours une erreur "Objet requis" et j'ai encore un peu de mal a traduire les différentes erreur d'excel, je ne comprend pas ce qu'il faut que je modifie.

Merci

Si je remplace ta constante par sa valeur, ton code devient :

    If 40 Then
      Label1.Top = Label1.Top + 20

Tu vois ce qu'il manque maintenant ?

Effectivement ça risque de ne pas très bien marcher !

En fait j'ai du mal avec l'utilisation des touche et la boucle que je doit utiliser.

Pour le moment j'ai créer 4 boutons (haut bas droite gauche) sur mon USF pour déplacer l'image comme je le veux et ça marche.

Par contre je ne sais pas comment faire pour que : Si l'USF est activé et que j’appuie sur la flèche bas le programme exécute le bouton bas.

Je pense procéder comme ça pour me faciliter un peu la tâche =)

J'ai aussi un petit soucis avec les tests pour les label qui forme les décors je voudrait faire un vérification pour chaque label et j’essaie de faire comme ça :

(mes label s'appellent Decors_1 Decors_2 etc....)

For i = 1 To 500
Dim obj As Object

nom = "Decors_" & i

pos_deco = nom.Top

Next i

Le probleme est que nom n'est pas un objet donc je ne peut pas mettre le .Top et je ne vois pas comment faire.

Si tu as une idée je serais vraiment content !

Merci pour tout ce que tu m'as permis de faire jusque maintenant !

Liruta a écrit :

Le probleme est que nom n'est pas un objet donc je ne peut pas mettre le .Top et je ne vois pas comment faire.

Voila pour toi :

If Controls("Label" & i).Left = Label1.Left And Controls("Label" & i).Top = Label1.Top Then

Ça marche très bien maintenant !

il ne me reste plus qu'à faire tout mes décors à la main.

Il ne me reste plus qu'a regarder comment assigné une touche à un bouton !

si quelqu'un a le code déjà fait ça m’intéresse !

Merci beaucoup pour toutes ces réponses !

ps: @Sébastien : si tu repasse par la je voudrait bien une petite explication sur "Controls". comment ça marche et à quoi ça sert ?

Merci !

ps: @Sébastien : si tu repasse par la je voudrait bien une petite explication sur "Controls". comment ça marche et à quoi ça sert ?

Par exemple, si tu ajoutes Controls à ton code :

nom = "Decors_" & i

pos_deco = nom.Top

Ca donne :

nom = "Decors_" & i

pos_deco = Controls(nom).Top

Et ça te permet d'utiliser le contrôle du nom de ta variable ...

Bonjour à tous,

Depuis peu je me lance dans un petit jeu d'aventure Post-apo et vos idées mon inspiré pour le déplacement d'un personnage sur une carte. Permettre au joueur de bouger sur une carte et pour moi important en plus de l'histoire et le son d'ambiance que j'y ai mis. Malheureusement j'arrive au bout de mes capacités au jour d'aujourd'hui sur VBA. Et étant seul pour le développer je suis terriblement frustré de ne pouvoir débloquer ce détail majeur c'est pour cela que je me permet de vous solliciter.

J'ai repris le fichier de Banzai et j'y ai rajouté sur la Feuil2 et Feuil3 des flèches pour simuler le déplacement. Pour ceux que ça intéresserai. Mais attention si on clique ailleurs que la cellule cible que l'on veut voir bouger et qu'on utilise les flèches on déplace des choses qu'on ne veut pas.

Alors l'objectif serai,

Option a: Que la cellule verte se bloque au bord des cellules noir. Avec une ouverture d'Userform arrivé sur une cellule.

Option b: Que la cellule transformée en (Forme) bloque aux abords d'une cellule ayant la valeur "A", cela me permettrai de travailler l'ergonomie du jeu avec d'autre couleurs. et lancer Userform au contact des formes ou au cellule renfermant la Forme.

Option C: Trouver un moyen lorsque la Cellule ou Forme verte touche un rebord d'une cellule au format de cellule spécifique, cela la bloque.

Je privilégierai les options B ou C.

J'ai préparé les 3 cas de figure sur fichier.

Si vous avez des idées surtout n’hésitez pas!

Merci d'avance à tous

Rechercher des sujets similaires à "deplacement image selection"