Explication sur une classe d'objet s'il vous plaît. [Résolu]

Messages postés
89
Date d'inscription
samedi 17 mai 2014
Dernière intervention
16 juin 2017
- 6 juin 2014 à 19:30 - Dernière réponse :
Messages postés
89
Date d'inscription
samedi 17 mai 2014
Dernière intervention
16 juin 2017
- 6 juin 2014 à 23:55
Bonjour à tous,

Je tente petit à petit de me mettre à la POO....pas simple tout de même.
Pour ce faire, j'ai tenté de faire fonctionner un petit programme que j'ai recopié à l'adresse suivante (histoire de la faire tourner et de comprendre comment il fonctionne) :http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-vb-net/notre-premiere-classe-2



Public Class Mario1
    Private _CoordonneesActuelles As Point
    Private _Taille As Size

    Sub New(ByVal PositionOriginelle As Point, ByVal tailleMario As Size)
        _CoordonneesActuelles = New Point(PositionOriginelle)
        _Taille = New Size(tailleMario)

    End Sub

    Public Sub avance()
        _CoordonneesActuelles.X = _CoordonneesActuelles.X + _PasX()
    End Sub

    Public Property Position() As Point
        Get
            Return _CoordonneesActuelles
        End Get
        Set(ByVal value As Point)
            _CoordonneesActuelles = value
        End Set
    End Property

#Region "Fonctions privées"
    Private Function _PasX()
        Return _Taille.Width
    End Function

    Private Function _PasY()
        Return _Taille.Height
    End Function

#End Region
End Class

pour la classe Mario1, dans la fenêtre Mario1.vb



et


Public Class PlateauDeJeu
    'Mario déclaré en global

    Dim MonMario As Mario1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' un nouveau mario
        MonMario = New Mario1(Me.PAN_MARIO.Location, Me.PAN_MARIO.Size)
    End Sub

    Private Sub BT_AVANCE_CLICK(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_AVANCE.Click
        'On le fait avancer
        MonMario.avance()
        ' on récupère la nouvelle position
        Me.PAN_MARIO.Location = MonMario.Position
    End Sub
End Class
pour la classe PlateauDeJeu dans Form1.vb

Mais j'ai 2 problèmes:
1) déjà, je ne comprends pas pourquoi mon 'panel' ne s'affiche pas dans ma Form1. C'est une question accessoire mais assez énervante.
2) Le programmateur a introduit deux variables : PAN_MARIO.Location et PAN_MARIO.Size, qu'il n'a pas défini au préalable. VB me renvoie dès lors un message d'erreur :PAN_MARIO n'est pas un membre de 'mario.PlateauDeJeu'

Pourriez-vous m'aider svp ?

Merci, Greg
Afficher la suite 

Votre réponse

3 réponses

Messages postés
23317
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2018
6 juin 2014 à 19:45
0
Merci
c'est du VB.net... pourquoi poster ta question en VBA ?
=> je déplace le sujet
Commenter la réponse de jordane45
Messages postés
23317
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2018
6 juin 2014 à 19:55
0
Merci
je pense que tu n'as pas nommé le panel :PAN_MARIO
Donc j'ai juste ajouté un petit panel dans lequel j'ai spécifié une taille de 20 x 20, ainsi qu'une couleur de fond rouge.


Pour ce qui est de "voir" ton panel... tu lui as mis une couleur de fond (backcolor) ?
Son attribut visible est à true ?
Commenter la réponse de jordane45
Messages postés
89
Date d'inscription
samedi 17 mai 2014
Dernière intervention
16 juin 2017
6 juin 2014 à 21:53
0
Merci
Merci Jordane45, toujours prompt à répondre à tous les problèmes ! Merci

Quasiment toutes les erreurs ont disparu, le panel est visible (j'ai honte). Par contre, il reste une erreur, VB me souligne le BT_AVANCE après le Handles ????Private Sub BT_AVANCE_CLICK(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_AVANCE.Click
de la classe PlateuadeJeu

et inscrit 'La clause Handles requiert une variable WithEvents définie dans le conteneur ou l'un de ses types.

C'est assez obscur pour moi...

Merci, Grég
Messages postés
23317
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2018
- 6 juin 2014 à 22:24
Tu as mis un Bouton pour faire avancer ton panel ?
Si oui... tu doubles cliques dessus et tu y colles le code

 'On le fait avancer
        MonMario.avance()
        ' on récupère la nouvelle position
        Me.PAN_MARIO.Location = MonMario.Position



et tu supprime celui là :
    Private Sub BT_AVANCE_CLICK(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_AVANCE.Click
        'On le fait avancer
        MonMario.avance()
        ' on récupère la nouvelle position
        Me.PAN_MARIO.Location = MonMario.Position
    End Sub
Messages postés
89
Date d'inscription
samedi 17 mai 2014
Dernière intervention
16 juin 2017
- 6 juin 2014 à 23:55
Salut,
Effectivement ça ne bugue plus. Ca ne marche pas super bien. Mais désormais, je vais pouvoir vraiment décortiquer ce bout de code.

Merci mille fois,
Greg
Commenter la réponse de gregml

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.