Auteur de questions
Avoir le choix d'un contrôle par rapport à un autre.

Discussion générale
-
Bonjour,
C'est encore et toujours moi, grâce à moi les gens qui se posent telle ou telle question n'auront plus à vous embêter, je me charge de ça :)
Plus sérieusement j'ai un problème pour ne pas changer mes habitudes.
Voici un Screenshots de mon Pattern PassCode :
Voici ce que je souhaite réaliser. Pouvoir de 0 aller à 8 puis à 9 sans pouvoir revenir sur le 7 par contre pouvoir aller de 0 à 7 puis de 7 à 8 et de 8 à 9 sans problème, en gros lorsque le trait rouge qui va de 0 à 8 et celui allant de 8 à 9 sont visibles comme sur le Screenshots alors, on ne peut pas revenir sur le 7 via le trait vert qui va de 8 à 7. Pour le trait rouge allant de 0 à 8 et ce lui allant de 0 à 7, je sais comment faire pour n'avoir qu'un seul choix possible, mais lorsque j'ai deux choix possible ou plus, je ne parviens pas à définir un système qui aurait pour but de dire, si tel ou tel trait est visible, alors le trait à l'opposé ou dans une diagonale ne doit pas être visible. C'est le même système que sur les portables, sauf qu'ici je peine à mettre ce système en place.
Merci pour vos futurs réponses.
JPR
- Type modifié Aurel Bera jeudi 27 février 2014 08:00 discussion
Toutes les réponses
-
Bonjour
Ici c'est ce qu'on appelle an théorie des graphes.
Si j’ai bien compris votre soucie vous devez avoir pour chaque buttons les connexions possibles.
De l’autre cote, vous devez avoir tous les connexions déjà effectuées. Et évidement quand vous êtes sur un buttons, vous devez afficher les connexions possibles pour le nœud mais éliminer ceux qui sont déjà faites.
Si par exemple pour le nœud #8 vous avez connexions possibles = {4,5,6,7,9,0}. Maintenant si vous venez 0 -> 7 ->8 vous avez disponibles {4,5,6,9,0}
Cordialement,
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution. -
-
Bonjour
Je voius propose ce code :
Imports System.Collections.Generic Public Class Form1 Public Class Transitions : Implements IEquatable(Of Transitions) Private pStart As Integer Private pStop As Integer Private WasVisited As Boolean = False Public Sub New(xStart As Integer, xStop As Integer) pStart = xStart pStop = xStop WasVisited = False End Sub Public Property StartElem As Integer Get Return pStart End Get Set(value As Integer) pStart = value End Set End Property Public Property StopElem As Integer Get Return pStop End Get Set(value As Integer) pStop = value End Set End Property Public Property ElemVisited As Boolean Get Return WasVisited End Get Set(value As Boolean) WasVisited = value End Set End Property Public Overloads Function Equals(c As Transitions) As Boolean _ Implements IEquatable(Of Transitions).Equals If c Is Nothing Then Return False End If Return ((Me.pStart = c.pStart And Me.pStop = c.pStop) Or (Me.pStart = c.pStop And Me.pStop = c.pStart)) End Function ' Function CompareTo(ByVal obj As Object) As Integer Implements IComparable.CompareTo ' Dim c As Transitions = CType(obj, Transitions) ' If (Me.pStart = c.pStart And Me.pStop = c.pStop) Or (Me.pStart = c.pStop And Me.pStop = c.pStart) Then ' Return 0 ' Else ' Return 1 ' End If ' End Function End Class Public Class TheList Private pTrans As New List(Of Transitions) Public Sub New() pTrans.Add(New Transitions(1, 2)) pTrans.Add(New Transitions(1, 4)) pTrans.Add(New Transitions(1, 5)) pTrans.Add(New Transitions(2, 3)) pTrans.Add(New Transitions(2, 4)) pTrans.Add(New Transitions(2, 5)) pTrans.Add(New Transitions(2, 6)) pTrans.Add(New Transitions(3, 5)) pTrans.Add(New Transitions(3, 6)) pTrans.Add(New Transitions(4, 5)) pTrans.Add(New Transitions(4, 7)) pTrans.Add(New Transitions(4, 8)) pTrans.Add(New Transitions(5, 6)) pTrans.Add(New Transitions(5, 7)) pTrans.Add(New Transitions(5, 8)) pTrans.Add(New Transitions(5, 9)) pTrans.Add(New Transitions(6, 8)) pTrans.Add(New Transitions(6, 9)) pTrans.Add(New Transitions(7, 8)) pTrans.Add(New Transitions(7, 0)) pTrans.Add(New Transitions(8, 0)) pTrans.Add(New Transitions(8, 9)) pTrans.Add(New Transitions(9, 0)) End Sub Public Function findFreeNodes(ByVal cNode As Integer) As List(Of Integer) Dim ret As New List(Of Integer) For Each tr As Transitions In pTrans If tr.StartElem = cNode And tr.ElemVisited = False Then ret.Add(tr.StopElem) End If If tr.StopElem = cNode And tr.ElemVisited = False Then ret.Add(tr.StartElem) End If Next Return ret End Function Public Sub setNodeVisited(ByVal nodeVisited As Transitions) For Each tr As Transitions In pTrans If (tr.StartElem = nodeVisited.StartElem And tr.StopElem = nodeVisited.StopElem) Or (tr.StartElem = nodeVisited.StopElem And tr.StopElem = nodeVisited.StartElem) Then tr.ElemVisited = True End If Next End Sub End Class Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' pTrans.Remove(New Transitions(0, 7)) ' pTrans.Remove(New Transitions(8, 7)) Dim laListe As New TheList laListe.setNodeVisited(New Transitions(0, 7)) laListe.setNodeVisited(New Transitions(7, 8)) laListe.setNodeVisited(New Transitions(9, 8)) laListe.setNodeVisited(New Transitions(9, 5)) Dim CurrentElement As Integer = 5 For Each x As Integer In laListe.findFreeNodes(CurrentElement) Console.WriteLine("Available node " + x.ToString) Next End Sub End Class
On ajoute tous les transitions possibles une seule fois (7- 8 et pas 7 - 8 et 8 - 7) et on déclare les chemins utilisés une fois avec "setNodeVisited".
Dans cette exemple on s'est déplacé de 0 - 7, 7- 8, 8- 9 et 9- 5 .
Je ne suis pas sûr que c’est 100% ce que vous voulez, mais sera facile à modifier.
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.
- Modifié Aurel Bera lundi 24 février 2014 15:47
-
Bonjour
Un petit retour SVP?
Merci!
Cordialement,
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.