ManuAntibes
Messages postés491Date d'inscriptionmardi 24 octobre 2000StatutMembreDernière intervention18 novembre 2021
-
Modifié par ManuAntibes le 1/08/2016 à 16:32
ManuAntibes
Messages postés491Date d'inscriptionmardi 24 octobre 2000StatutMembreDernière intervention18 novembre 2021
-
4 août 2016 à 13:42
Bonjour, à tous
j'essai de faire un petit jeu, d'élevage de Hamster. ;)
Par contre je n'arrive pas à sélectionner la cage par programmation directement, je suis obligé de lui faire faire une boucle sur toutes les cages pour savoir ou mettre les Hamsters.
et je vais avoir le même problème plus tard pour faire des actions sur les hamsters (ex: manger, dormir, bouger ...)
voici mon code:
Private Sub ChargementHamster()
For x = 0 To Me.Table_HamsterBindingSource.Count - 1
Dim ValRow As DataRowView = Me.Table_HamsterBindingSource.Item(x)
Hamster = New Class_Hamster(ValRow("NomHamster"), ValRow("SexeHamster"), ValRow("AgeHamster"))
Hamster.Size = New Size(60, 80)
Hamster.SizeMode = PictureBoxSizeMode.Zoom
Hamster.Action = Class_Hamster.Actions.Normal
Hamster.Mange = 50
Hamster.VérifierEtatHamster()
AddHandler Hamster.Click, AddressOf Click_Hamster
Dim Trouvé As Boolean = False
For Each ctlPanel In Me.FlowLayoutPanel_FondJeux.Controls 'les cages sont rangées à cote à cote.
If TypeOf ctlPanel Is Panel Then
Dim st As String = ctlPanel.name
For Each ctlCage In ctlPanel.controls
If TypeOf ctlCage Is FlowLayoutPanel Then
If ctlCage.cage_nom = ValRow.Row("CageHamster") Then
ctlCage.Controls.Add(Hamster)
Trouvé = True
Exit For
End If
End If
Next ctlCage
End If
If Trouvé = True Then
Exit For
End If
Next ctlPanel
Next x
End Sub
a savoir que ma class_Hamster et inherit Picturebox, et la class_Cage et Inherit FlowLayoutPanel.
Est se un problème ?
Merci
NHenry
Messages postés15083Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention19 septembre 2023159 1 août 2016 à 17:57
Tu peux peut être essayer en utilisant un
Dictionary(Of TKey, TValue)
où TKey est le nom de ta cage et TValue la cage en question.
(Renseignes-toi sur le programmation générique)
comment faire une recherche dans ma class_cage pour interroger le nombre de Cage_Nom, et voir le niveau des carottes et autres aliments.
exemple:
"Cage1", Carotte 50, Fromage 10, eau 100.
"Cage2", Carotte 20, Fromage 30, eau 50.
etc
je n'arrive pas à faire une recherche dans la class_Cage, je suis obligé de faire une recherche sur la fenêtre par panel puis par FlowLayoutPanel etc...
et du coup cela finir par faire trop lourd en boucle et Timer.
ne peut on pas interroger ma class_cage plus simplement.
Merci
Whismeril
Messages postés18622Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention28 septembre 2023629 Modifié par Whismeril le 2/08/2016 à 12:34
Déjà tu te sers des contrôles comme de collections, même si cette possibilité est restée, ça n'est pas la meilleure façon de faire.
En .Net, l'idée est de gérer les données dans des collections de données (List pour la plus courante) et de se servir des contrôles juste pour l'affichage et l'interaction avec l'utilisateur.
Et après vérification ControlCollection ne permet de recherche Linq, donc ma proposition de ce matin ne marche pas.
Cependant, elle possède la méthode Find
donc si tu veux trouver le contrôle dont le nom est Cage1