2 votes

Créer un objet WPF Canvas

Je utilise WPF et C# et j'ai un canvas avec des rectangles dessus (comme un labyrinthe). Maintenant je veux créer un personnage qui se déplace (avec l'aide d'un algorithme) à travers ce labyrinthe. Donc j'ai créé une nouvelle classe appelée personnage, mais mon problème commence ici: Comment créer un objet sur le canvas qui a une image, une position et qui peut accéder aux méthodes et attributs de la classe personnage? Donc la chose finale devrait ressembler à ceci:

private class MainWindow
{

   // Ici le canvas est rendu visible et les rectangles sont dessinés sur le canvas

   // Puis une méthode devrait commencer à créer le personnage et le faire se déplacer à travers le labyrinthe

   // cela devrait ressembler à (personnage.move(1) donc le personnage avance d'un pas etc.)

}

private class Character
{
//ici se trouvent les méthodes et attributs que le personnage devrait avoir
}

Merci d'avance et désolé pour mon mauvais anglais :)

3voto

ianschol Points 391

Si vous regardez le problème dans la direction opposée, il est beaucoup plus facile à résoudre.

Créez votre objet de personnage, connectez-le de manière à ce que tout fonctionne comme vous le souhaitez dans vos données (modèle). Ensuite, vous voudrez ajouter des propriétés qui représentent l'emplacement du personnage, telles que

public int XCoordinate { get; set; }
public int YCoordinate { get; set; }

Assurez-vous que le mouvement est effectué du côté du modèle. Si vous essayez de déplacer en fonction de l'affichage visuel, cela compliquera trop le programme.

Ensuite, définissez la vue du personnage dans votre canevas, quelque chose comme ceci:

Enfin, assurez-vous que votre syntaxe de liaison est correcte (avez-vous défini le DataContext ?) et assurez-vous de configurer NotifyPropertyChanged selon vos préférences (tout cela est bien couvert ailleurs). Ensuite, vous serez prêt avec un modèle et une vue soigneusement divisés, et il devrait être beaucoup plus facile de se concentrer sur la logique de mouvement ou tout autre chose que vous pourriez désirer.

1voto

Devendra D. Chavan Points 4707

La première étape serait de définir les propriétés et les méthodes de la classe Character. Cela inclurait (comme vous l'avez indiqué dans la question) une méthode Move(NouvellePosition). NouvellePosition peut être un wrapper sur la structure Point. La classe Character doit également contenir une référence au Canvas dans lequel le personnage est présent. Cela est nécessaire car lorsque vous appelez 'character.Move(position)', le personnage peut être déplacé dans le canevas avec lequel le personnage est actuellement associé.

De plus, la classe MainWindow peut contenir une référence au personnage ou à une collection de personnages (dans le cas où vous avez besoin de plusieurs personnages). La création réelle peut se faire lors de l'initialisation de la MainWindow ou peut être décalée. Après l'initialisation, votre algorithme peut travailler sur l'instance du personnage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X