Bonjour! Je viens quérir votre aide car j'ai un curieux souci avec une instruction "Select case" que j'utilise régulièrement.
Voila, j'ai développé un mémori pour mon fils de 4 ans (pour l'occuper pendant le confinement). Je m'arrache depuis deux jours les cheveux sur un improbable problème. J'ai inséré un select case, mais le programme ne lance aucune instruction dans aucun cas.
Il a 4 ans, il adore Sam Sam et la Patpatrouille, je lui ai fait plaisir en créant un jeu avec ses héros préférés (Chase, Stella...). Au début, je lui avais mis 9 personnages fixes. Et puis, comme rien n'est trop beau pour lui, je lui ai aussi permis de faire une partie "personnalisée" dans laquelle il choisit lui même des 9 héros sur une liste de 65 (ce que j'appelle sa "liste personnalisée").
J'ai 18 boutons pour mes 18 cartes. Le programme génère un ordre aléatoire pour mes 9 paires de cartes et stocke donc l'ordre de sortie des cartes dans une list (of strings) appelée ListeNoms.
Ensuite, il associe à chaque bouton/carte le héros qui lui correspond (en fonction du tirage qui a été fait (bouton 1: 1ere carte tirée, bouton 2: deuxième carte tirée, etc.) bref.
Pour ne pas me retrouver avec un code à rallonge, j'ai créé une liste avec ses neuf héros choisis. En cas de partie personnalisée, le programme fait un tirage normal et remplace juste l'image de Chase par l'image de tel autre héros.
Mon problème est tout bête: quel que soit le "Personnage" définit comme "String" (car je stocke son nom), la partie Select Case ne semble reconnaitre aucun cas de figure. J'ai testé en mettant des points d'arrêt un peu partout pour vérifier telle ou telle variable (avant la partie select case, dans la partie select case, après...). tout ce qui est avant s'execute, tout ce qui est après s'execute, mais ce qui est dedans... rien du tout
toutes les variables renvoient toujours quelquechose: j'ai 9 héros dans ma ListeHéros (qui stocke les images des héros), le programme reconnait bien si c'est une partie personnalisée ou pas, j'ai bien 18 noms dans ma liste de noms (100% identiques à ceux que j'utilise dans mon select case), et pourtant... Walou...
Voici mon code
Code VB.NET : 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
33
34
35
36
37
38
39
40
41 Sub AffichageBoutons() Dim ListePersonnalisée = 0 If Me.CheckBox5.Checked = True And ListeHéros.Count = 9 Then ListePersonnalisée = 1 For i = 1 To 18 Personnage = ListeNoms(i - 1) Select Case Personnage Case "Chase" If ListePersonnalisée = 1 Then DirectCast(Me.Controls("Button" & i), Button).BackgroundImage = ListeHéros(0) Else DirectCast(Me.Controls("Button" & i), Button).BackgroundImage = WindowsApplication1.My.Resources.Chase End If Case "Stella" If ListePersonnalisée = 1 Then DirectCast(Me.Controls("Button" & i), Button).BackgroundImage = ListeHéros(1) Else DirectCast(Me.Controls("Button" & i), Button).BackgroundImage = WindowsApplication1.My.Resources.Stella End If End If Case "Samsam" If ListePersonnalisée = 1 Then DirectCast(Me.Controls("Button" & i), Button).BackgroundImage = ListeHéros(2) Else DirectCast(Me.Controls("Button" & i), Button).BackgroundImage = WindowsApplication1.My.Resources.SamSam End If '............. etc .................. End Select Next End Sub
En fait, le code se lit quand même car quand je met un Case Else, il "lit" ce qu'il y a dedans.
Je n'y comprends plus rien. Help! j'utilise cette fonction très régulièrement, ça ne m'est jamais arrivé. Qu'est-ce qui peut bloquer?
J'ai joint 2 screenshots avec deux points d'arret, pardonnez moi la familiarité, mais là, pour le coup, je me sens "teubé"Ici, un exemple avec "Chase". Il ne m'exécute absolument pas ce qui est dans le Cas Chase juste en dessous...
Merci de votre aide. Je sèche!
Bonne journée!
Partager