Les classes

Résolu/Fermé
Partouchefrancis Messages postés 93 Date d'inscription mercredi 2 septembre 2020 Statut Membre Dernière intervention 18 avril 2024 - Modifié le 24 sept. 2020 à 13:32
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 24 sept. 2020 à 15:02
Bonjour, voilà l'exemple dont je parlais
il propose de faire une programme avec un petit panel dont le backcolor est en rouge et qu'on se propose de déplacer avec 4 boutons avance, recule, monte, descend
je vous mets la page de code pour la classe crée et la page de code pour l'action proprement dit
son code me parait plein d'inexactitude
j'en ai corrigé un certain nombre et je vous mets en deuxième partie mon code
mais il génère toujours une erreur que je vous mets en image
désolé c'est un peu long d'où mon message précédent
je n'ai pas fait mon code moi même , je me suis contenté de reprendre le sien et de le corriger en fonction des erreurs affichées
si cà marche après j'essaierai de comprendre la création d'une classe

j'ai essayé la notion de classe dans le cours de Tahé mais ce n'est pas plus clair
A moins que quelqun puisse m'indiquer un lien ou je puisse trouver une explication plus claire
peut être est ce moi qui suis complètement bouché

désolé pour la longueur
cordialement
voici son code :

Public Class Mario
Private _CoordonneesActuelles As Point
Private _Taille As Size
Partie 3 : La programmation orientée objet 176/310
Ce PDF vous est offert par CAPGEMINI
Découv rez des métiers plein d'env ies http://www.f r.capgemini.com/carrieres/technology _serv ices www.openclassrooms.com
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 Sub Recule()
_CoordonneesActuelles.X = _CoordonneesActuelles.X - _PasX()
End Sub
Public Sub Monte()
_CoordonneesActuelles.Y = _CoordonneesActuelles.Y - _PasY()
End Sub
Public Sub Descend()
_CoordonneesActuelles.Y = _CoordonneesActuelles.Y + _PasY()
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
Et le code final avec la gestion des touches :
Code : VB.NET



Public Class PlateauDeJeu
'Mario déclaré en global
Dim MonMario As Mario
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Se met en écoute des touches
Me.KeyPreview = True
'Un nouveau Mario
MonMario = New Mario(Me.PAN_MARIO.Location,
Me.PAN_MARIO.Size)
End Sub
Sub Form1_KeyDown(ByVal sender As Object, ByVal e As
KeyEventArgs) Handles Me.KeyDown
Partie 3 : La programmation orientée objet 177/310
Ce PDF vous est offert par CAPGEMINI
Découv rez des métiers plein d'env ies http://www.f r.capgemini.com/carrieres/technology _serv ices www.openclassrooms.com
Select Case e.KeyCode
Case Keys.Z
MonMario.Monte()
Case Keys.S
MonMario.Descend()
Case Keys.Q
MonMario.Recule()
Case Keys.D
MonMario.Avance()
End Select
Me.PAN_MARIO.Location = MonMario.Position
End Sub
#Region "Boutons de l'interface"
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 recupère la nouvelle position
Me.PAN_MARIO.Location = MonMario.Position
End Sub
Private Sub BT_RECULE_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles BT_RECULE.Click
'On le fait reculer
MonMario.Recule()
'On recupère la nouvelle position
Me.PAN_MARIO.Location = MonMario.Position
End Sub
Private Sub BT_DESCEND_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles BT_DESCEND.Click
'On le fait descendre
MonMario.Descend()
'On recupère la nouvelle position
Me.PAN_MARIO.Location = MonMario.Position
End Sub
Private Sub BT_MONTE_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles BT_MONTE.Click
'On le fait monter
MonMario.Monte()
'On recupère la nouvelle position
Me.PAN_MARIO.Location = MonMario.Position
End Sub
#End Region
End Class



voici mon code


Public Class Mario
    Public CoordonneesActuelles As Point
    Public 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 Sub Recule()
        CoordonneesActuelles.X = CoordonneesActuelles.X - _PasX()
    End Sub

    Public Sub Monte()
        CoordonneesActuelles.Y = CoordonneesActuelles.Y - _PasY()
    End Sub

    Public Sub Descend()
        CoordonneesActuelles.Y = CoordonneesActuelles.Y + _PasY()
    End Sub

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


Public Class Form1


    Dim MonMario As Mario

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.KeyPreview = True
        'Un nouveau Mario
        MonMario = New Mario(Me.MonMario.CoordonneesActuelles, Me.MonMario.Taille)

    End Sub

    Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles Me.KeyDown
        Select Case e.KeyCode
            Case Keys.Z
                MonMario.Monte()
            Case Keys.S
                MonMario.Descend()
            Case Keys.Q
                MonMario.Recule()
            Case Keys.D
                MonMario.Avance()
        End Select
        Me.MonMario.Position = MonMario.Position
    End Sub


#Region "Boutons de l'interface"

    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 recupère la nouvelle position
        Me.MonMario.Position = MonMario.Position
    End Sub

    Private Sub BT_RECULE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_Recule.Click
        'On le fait reculer
        MonMario.Recule()
        'On recupère la nouvelle position
        Me.MonMario.Position = MonMario.Position
    End Sub

    Private Sub BT_DESCEND_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_Descend.Click
        'On le fait descendre
        MonMario.Descend()
        'On recupère la nouvelle position
        Me.MonMario.Position = MonMario.Position
    End Sub

    Private Sub BT_MONTE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_Monte.Click
        'On le fait monter
        MonMario.Monte()
        'On recupère la nouvelle position
        Me.MonMario.Position = MonMario.Position
    End Sub

    Private Sub Panel1_Paint(sender As Object, e As PaintEventArgs) Handles Panel1.Paint

    End Sub

#End Region


End Class







EDIT : AJout du LANGAGE dans les BALISES DE CODE pour avoir la coloration syntaxique

.

2 réponses

Partouchefrancis Messages postés 93 Date d'inscription mercredi 2 septembre 2020 Statut Membre Dernière intervention 18 avril 2024
24 sept. 2020 à 13:36
à la ligne 34 de Public Class Mario j'ai oublié le code ci dessous
#Region "Fonctions privées"

Private Function _PasX()
Return Taille.Width
End Function

Private Function _PasY()
Return Taille.Height
End Function

#End Region
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
24 sept. 2020 à 15:02
Bonjour,

J'ai suivi le code original et cela fonctionne très bien. Seul erreur il recule au lieu d'avancer!
il suffit de corriger comme cela

a mettre dans une classe nommée Mario:

Option Strict Off
Public Class Mario
    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(CType(TailleMario, Point))
    End Sub
    Public Sub Avance()
        _CoordonneesActuelles.X = _CoordonneesActuelles.X - _PasX()
    End Sub
    Public Sub Recule()
        _CoordonneesActuelles.X = _CoordonneesActuelles.X + _PasX()
    End Sub
    Public Sub Monte()
        _CoordonneesActuelles.Y = _CoordonneesActuelles.Y - _PasY()
    End Sub
    Public Sub Descend()
        _CoordonneesActuelles.Y = _CoordonneesActuelles.Y + _PasY()
    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


a mettre dans le Form avec un Panel nommé PAN_MARIO:

Option Strict On
Public Class Form1
    'Mario déclaré en global
    Dim MonMario As Mario
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Se met en écoute des touches
        Me.KeyPreview = True
        'Un nouveau Mario
        MonMario = New Mario(Me.PAN_MARIO.Location,
        Me.PAN_MARIO.Size)
    End Sub
    Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
        Select Case e.KeyCode
            Case Keys.Z
                MonMario.Monte()
            Case Keys.S
                MonMario.Descend()
            Case Keys.Q
                MonMario.Recule()
            Case Keys.D
                MonMario.Avance()
        End Select
        Me.PAN_MARIO.Location = MonMario.Position
    End Sub
#Region "Boutons de l'interface"
    Private Sub BT_AVANCE_Click_1(sender As System.Object, e As System.EventArgs) Handles BT_AVANCE.Click
        'On le fait avancer
        MonMario.Avance()
        'On recupère la nouvelle position
        Me.PAN_MARIO.Location = MonMario.Position
    End Sub
    Private Sub BT_RECULE_Click(sender As System.Object, e As System.EventArgs) Handles BT_RECULE.Click
        'On le fait reculer
        MonMario.Recule()
        'On recupère la nouvelle position
        Me.PAN_MARIO.Location = MonMario.Position
    End Sub
    Private Sub BT_DESCEND_Click(sender As System.Object, e As System.EventArgs) Handles BT_DESCEND.Click
        'On le fait descendre
        MonMario.Descend()
        'On recupère la nouvelle position
        Me.PAN_MARIO.Location = MonMario.Position
    End Sub
    Private Sub BT_MONTE_Click_1(sender As System.Object, e As System.EventArgs) Handles BT_MONTE.Click
        'On le fait monter
        MonMario.Monte()
        'On recupère la nouvelle position
        Me.PAN_MARIO.Location = MonMario.Position
    End Sub
#End Region
End Class


voilà

0