Explication sur une classe d'objet s'il vous plaît.

Résolu
gregml
Messages postés
89
Date d'inscription
samedi 17 mai 2014
Statut
Membre
Dernière intervention
16 juin 2017
- 6 juin 2014 à 19:30
gregml
Messages postés
89
Date d'inscription
samedi 17 mai 2014
Statut
Membre
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

3 réponses

jordane45
Messages postés
35830
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 juillet 2022
358
6 juin 2014 à 19:45
c'est du VB.net... pourquoi poster ta question en VBA ?
=> je déplace le sujet
0
jordane45
Messages postés
35830
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 juillet 2022
358
6 juin 2014 à 19:55
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 ?
0
gregml
Messages postés
89
Date d'inscription
samedi 17 mai 2014
Statut
Membre
Dernière intervention
16 juin 2017

6 juin 2014 à 21:53
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
0
jordane45
Messages postés
35830
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 juillet 2022
358
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
0
gregml
Messages postés
89
Date d'inscription
samedi 17 mai 2014
Statut
Membre
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
0