Bonjour
En C#, on préfère séparer "le métier" et l'IHM.
Dans cet esprit, ce serait au formulaire de s'occuper d'afficher la picturebox en fonction de l'état du joueur.
Ça permet par exemple de pouvoir tout changer l'IHM sans compromettre le code métier.
Mais bon, rien n'interdit de faire comme tu l'as pensé.
As-tu déjà ajouté un contrôle sur un formulaire par le code ?
Si oui, comment coderais-tu ça pour une picturebox au niveau du formulaire ? (Auquel cas, tu devrais trouver ce qui ne va pas).
Si non, je t'expliquerai.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Bonjour Whismeril et merci de ton aide.
je débute en windows Form, je n'avais fait que des programme console avant et me lance dans mon premier gros projet fenêtrer.
J'ai compris que mon erreur est de ne pas avoir ajouter mon picturebox a mes contrôleur comme ce ci :
"this.Controls.Add(joueur1.pb_joueur);"
Je comprend que c'est pas clean de faire ma pictureBox dans ma classe, mais je ne sait pas comment attacher a une pictureBox une classe.
Donc j'ai pris le partie de les déclarer dedans, mais ci c'est pas une bonne pratique je vais changer.
encore merci pour ton aide
Bonjour
je débute en windows Form, je n'avais fait que des programme console avant et me lance dans mon premier gros projet fenêtrer.
On a tous été débutants un jour, tu n'as pas a t'en justifier. Surtout que tu n'as pas fait l'erreur de beaucoup (moi y compris à mon époque) d'attaquer de suite un projet fenêtré.
La progression que tu as choisie, les bases en console puis winform est un bon choix.
Je ne voulais pas sembler hautain mais bien constructif en essayant d'expliquer le principe de séparation des couches.
J'ai compris que mon erreur est de ne pas avoir ajouter mon picturebox a mes contrôleur comme ce ci :
Exactement, c'est de là que vient le problème et le code de correction que tu proposes est une des options possibles.
mais je ne sait pas comment attacher a une pictureBox une classe.
L'idée serait plutôt que la classe joueur communique avec le formulaire. Et qu'en fonction de la communication le formulaire affiche ou déplace (tu vas avoir ça aussi à faire) la picturebox.
Dans tes projets console as tu utilisé des interactions entre classes ?
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Bonjour et désoler pour le temps de réponse un peux long (semaine charger ^^).
Tout d'abord non je ne cherchais pas a me justifier, mais plutôt a t'expliquer où en était mon niveaux en développement car je pense qu'il est important de savoir pour pouvoir mieux conseiller.
Sinon pour la question des interactions entre classe
Ci c'est le faite d'utiliser des classes dans une classe ? genre on a une classe banque qui va contenir une liste de type client par exemple ?
Ci c'est ça oui plusieurs fois.
Donc si je comprend bien se que tu veux dire ce serait de créer une PictureBox et une classe joueur avec par exemple une variable va_a_droite et va_a_gauche de type booleen et que en fonction de si elle sont a true on déplace la PictureBox dans la direction souhaiter.
donc la PictureBox n'est pas vraiment attacher a joueur directement ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBonjour
Pour les interactions, on va rester avec la classe Banque, Client et FDE (Fournisseur D'Électricité).
Le client utilise les méthodes Depot et Retrait de la classe Banque. Ces méthodes prennent en paramètre un montant et retournent le solde après opération. Ainsi, le client peut suivre son compte.
On a là un premier type d'interaction, une action qui amène une réponse.
De son côté, FDE utilise la méthode PrelevementAutomatique de la classe banque, qui ne retourne rien. En effet, FDE n'a pas à connaitre le solde de son client.
C'est une interaction dans un seul sens.
Mais dans la vraie vie, si un prélèvement met ton compte à découvert, ton banquier va t'appeler.
On peut reproduire cet appel téléphonique grâce à un évènement.
Tu peux aller voir ce code de Bidou, qui illustre l'utilisation des évènements
Dans ton cas, que tu choisisses de laisser la picturebox dans la classe joueur ou que tu la mettes dans le formulaire, tu auras besoin d'évènements.
Dans le premier cas, il faudra que le joueur signale au formulaire qu'il a mis à jour les coordonnées de la picturebox et qu'il faut que la page soit rafraichie.
Dans le second cas, il faudra que le joueur signale au formulaire qu'il a bougé et que l'affichage doit le montrer (avec une picturebox ou autre chose).
Je te conseille aussi de te renseigner sur l'interface INotifyPropertyChanged, qui impose d'utiliser l'évènement PropertyChanged pour signaler tout changement d'état des propriétés de la classe qui l'implémente.
Ça peut être une solution pour toi, mais surtout, si par ailleurs, tu veux utiliser le binding (qui est un procédé simplifié d'affichage de données sur le formulaire), c'est un pré-requis pour les classes à afficher.
J'ai écrit un tuto à ce sujet https://codes-sources.commentcamarche.net/faq/1291-utilisation-du-binding-au-travers-de-l-objet-databindingsource
Quand j'étais petit, la mer Morte n'était que malade.
George Burns