Aller Retour d'un label ou autre. [Résolu]

Signaler
-
 Utilisateur anonyme -
Bonjour,
je vous contacte en espérant que vous trouverez une réponse à mon problème (ce dont je ne doute pas ^^).

Mon problème :
Lors de la conception de mon jeu, j'aimerai qu'un label (par exemple) puisse se déplacer sur une sorte de segment, de gauche à droite et de droite à gauche ( ou de haut en bas puis de bas en haut).

J'arrive déjà à déplacer des labels : label1.left += 1 ou label1.left -= 1
Mais je n'arrive pas à les faire revenir (j'ai beau chercher et essayer mais ça ne marche pas).

----------------------------------------------------------------------------------------
Cordialement,
Sorpia.

31 réponses

Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
déclares la variable sens en public, en dehors de la sub ou tu mets ton code.


If Sens = False Then
Label4.Left = Label4.Left +1
If Label4.Left >41 Then Sens True

ElseIf Sens = True Then
Label4.Left =Label4.Left - 1
If Label4.Left <0 Then Sens False
End If

ce code là marche très bien pour moi..
[] Ce qui va sans dire. va mieux en le disant.

M'est avis qu'au lieu d'un label, ce serait bien plus simple avec une barre de progression.
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
47
Salut

pas clair un label se déplace ?
comme animation avec un timer ?
une sort de segement ? ligne horizontal ou verticale imaginaire sur ta form ?
le label est dans la form ou dans un panel ?
Mais je n'arrive pas à les faire revenir

où ? à la maison

Bonjour,
Le label doit se déplacer sur un segment (imaginaire) verticale ou horizontal (le sens n'a pas d'importance) et une fois arrivé au bout du segment il doit pouvoir faire chemin inverse toujours sur le même segment et ainsi de suite.

Désoler de ne pas avoir été clair au départ, pour les prochaines fois je ferai plus attention.

-----------------------------------------------------------------------------
Cordialement,
Sorpia.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Bonjour,
Question de logique (quel que soit le langage de développement) avant d'être une question de code.
Soit ps le pas d'avancement
Signe de ps à inverser à chaque fois qu'est atteinte une borne du segment.
Toujours vrai si le pas n'est que d'une unité
Arithmétique à faire intervenir si le pas est supérieur à une unité (pour le pas dépasser les bornes.
Fais donc d'abord un algo (ultra simple). Ne passe qu'ensuite au code !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en complément et jamais en substitution de l'aide en ligne.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Bonjour,

"une fois arrivé au bout du segment il doit pouvoir faire chemin inverse.."

[code=vb]
-Définis alors les deux bouts (gauche , droite)
-Défibis ensuite un sens (vers la droite , vers la gauche)

If Sens="Vers_Doite" Then
If Label.Left>=Bout_Droite Then
Sens="Vers_Gauche"
Else
Label.Left+= 1
End If
ElseIf Sens="Vers_Gauche" Then
Si Label.Left<=Bout_Gauche Then
Sens="Vers_Droite"
Else
Label.Left-= 1
End If
End If/code [] Ce qui va sans dire. va mieux en le disant.

Bonjour,
J'ai pas très bien compris comment définir un sens... Désoler si j'ai l'air bête...

-----------------------------------------------------------------------------
Cordialement,
Sorpia.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Sens est une variable string.

Si la position de départ du label est à gauche, alors tu te déplaceras vers la droite.Tu l'initialises donc:

Sens="Vers_Droite"

If Sens="Vers_Doite" Then

etc..etc..


[] Ce qui va sans dire. va mieux en le disant.

Bonjour,

J'ai pas très bien compris comment définir un sens... Désoler si j'ai l'air bête...

Ben quoi,

Gauche-Droite
Droite-Gauche
Haut-Bas
Bas-Haut

Bonjour,

Non en fait j'ai réussi à faire ça grâce à ton aide :
Dim Sens As Boolean

        If Sens = False Then
            If Label4.Left >= 42 Then
                Sens = True
            Else
                Label4.Left += 1
            End If
        ElseIf Sens = True Then
            If Label4.Left <= 1 Then
                Sens = False
            Else
                Label4.Left -= 1
            End If
End If


Mais une fois que le label est à ma limite de droite, il s'arrête mais ne revient pas ! Alors que "Sens" passe bien à True !

-----------------------------------------------------------------------------
Cordialement,
Sorpia.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
J'ai écrit plus haut :
Soit ps le pas d'avancement
Signe de ps à inverser à chaque fois qu'est atteinte une borne du segment.
Toujours vrai si le pas n'est que d'une unité


Un vb.nettiste pour écrire en vb.net ce petit exemple/demo que je viens de bâcler sous vb6 ? ===>>
Private Sub Command1_Click()
 Static ps As Integer
 Static borne1 As Integer, borne2 As Integer
 If borne1 0 Then borne1 Label1.Left: borne2 = Label1.Left + 20
 If ps 0 Then ps 1
 Label1.Left = Label1.Left + ps
 If Label1.Left borne1 Or Label1.Left borne2 Then ps = -ps
End Sub


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en complément et jamais en substitution de l'aide en ligne.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
le pas n' est pas bien règlé.
il dépasse 42 puis revient à 42..

essaies encore avec:

If Sens = False Then
Label4.Left += 1
If Label4.Left >42 Then Sens True

ElseIf Sens = True Then
Label4.Left -= 1
If Label4.Left <1 Then Sens False
End If



[] Ce qui va sans dire. va mieux en le disant.

Bonjour,
désoler pour ma réponse si tardive, mais j'ai essayé ton code mais le label ne s'arrête pas.

J'ai essayé ça mais cela ne marche toujours pas. :(
 Dim Sens As Boolean

        If Sens = False Then
            If Label4.Left <= 41 Then Label4.Left += 1
            If Label4.Left 41 Then Sens True
        End If

        If Sens = True Then
            If Label4.Left >= 0 Then Label4.Left -= 1
            If Label4.Left 0 Then Sens False
        End If


-----------------------------------------------------------------------------
Cordialement,
Sorpia.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Ouais ...
Et tous ces messages pour un broutille à 2 sous ...
Combien en faudra-t-il pour des choses moins simples (pas forcément plus complexes) ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en complément et jamais en substitution de l'aide en ligne.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
ce n' est pas ce que j'ai dit dans mon dernier message.

If Sens = False Then
If Label4.Left <41 Then Label4.Left + 1
If Label4.Left 41 Then Sens True

ElseIf Sens = True Then
If Label4.Left >0 Then Label4.Left - 1
If Label4.Left 0 Then Sens False

End If

ucfoutu,
c' est juste qu' on veut aller jusqu'au bout de la logique.
Après on pourra trouver mille façons de faire.




[] Ce qui va sans dire. va mieux en le disant.

Bonjour,
Libre_Max cela ne marche pas, le label le ne s'arrête pas.




-----------------------------------------------------------------------------
Cordialement,
Sorpia.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
A LIBRE_MAX,
c' est juste qu' on veut aller jusqu'au bout de la logique
.
Je suis parfaitement d'accord avec toi sur ce point.
Mais la logique est probablement ce qui fait chez Sorpia le plus défaut
Rappel de ce que je lui ai dit plus haut :
Fais donc d'abord un algo (ultra simple). Ne passe qu'ensuite au code !

qui aurait forcé sa réflexion. ===>> ben non ===> il ne s'&accroche qu'à des tentatives de code, sans même cette organisation liminaire de la pensée.
Mais ma foi ... si c'est le chemin choisi ... pourquoi pas ? Il lui faudra probablement (comme pour l'une de mes secrétaires dont j'ai du me défaire assez rapidement) : un modèle pour chaque chose, même si un seul détail change (je me suis défait de ladite secrétaire pour éviter d'avoir à équiper son bureau du nombre d'armoires nécessaires pour y ranger un nombre tel de "modèles", qu'elle aurait eu besoin d'une armoire de plus pour y ranger un "plan" lui permettant de retrouver chaque modèle !)
Eh oui ...
Je ne veux décourager personne, mais insiste sur ce point fondamental : la création ne saurait être la répétition, quel que soit le domaine (informatique ou non). L'organisation de la pensée est fondamentale et ce n'est que sur ce rail-là, que l'on peut raisonnablement utiliser ensuite la syntaxe.
Mais bon ===>> je vais allez dormir ===>> cela me détendra certainement.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en complément et jamais en substitution de l'aide en ligne.

Bonsoir,
Ucfoutu tu as sûrement raison...

LIBRE_MAX j'essaye demain, la je suis mort.
-----------------------------------------------------------------------------
Cordialement,
Sorpia.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
oui ucfoutu,
tout à fait d' accord.
Sauf que parfois on est obligé d' accompager.La preuve on donne pas un code tout fait.On tente des choses à chaud et au fur et à mesure.
On se trompe parfois et on rectifie.Ce qui est une bonne chose pour l'interressé parce qu' il apprend de ses erreurs et des notres aussi.


[] Ce qui va sans dire. va mieux en le disant.

Je ne demande qu'à apprendre...
1 2