Je tente de programmer une sorte de Jeu Tetris pour lequel je voudrais stocker les pièces dans une collection d'objet
J'ai créé une classe d'objet dans un module de classe appelé "Piece"
J'ai créé une collection dans un module appelé "Pieces", la collection comprendra l'ensemble des pièces
Le module standard instancie une collection ColP
Et ajoute un objet pièce à la collection ColP, la pièce est définie par sa Forme (tableau de booléen)
A l'execution, j'ai un message d'erreur sur la ligne .Forme = bForme de la fonction CreatePiece
Le message dit succinctement "Internal Error"
J'ai tenté de remplacer
par
Mais ça ne change rien
Voici le module standard
Le module de classe appelé "Piece" (au sigulier)
Le module de classe appelé "Pieces" (au pluriel), la collection comprendra l'ensemble des pièces
Ce qui est étonnant c'est que lorsque je crée et j'ajoute la pièce à la collection Colp directement dans le module standard je n'ai pas d'erreur:
Merci d'avance pour votre aide précieuse.
J'ai créé une classe d'objet dans un module de classe appelé "Piece"
J'ai créé une collection dans un module appelé "Pieces", la collection comprendra l'ensemble des pièces
Le module standard instancie une collection ColP
Et ajoute un objet pièce à la collection ColP, la pièce est définie par sa Forme (tableau de booléen)
A l'execution, j'ai un message d'erreur sur la ligne .Forme = bForme de la fonction CreatePiece
Le message dit succinctement "Internal Error"
J'ai tenté de remplacer
VB:
CreatePiece(ByRef bForme() As Boolean)
VB:
CreatePiece(bForme() As Boolean)
Mais ça ne change rien
Voici le module standard
VB:
Sub NouvellePartie()
Dim colP As Pieces
Dim Forme() As Boolean
'Initialisation de forme à false
ReDim Forme(0 To 5, 0 To 5)
For i = 1 To 5
For j = 1 To 5
Forme(i, j) = False
Next
Next
Set colP = New Pieces
With colP
.Add .CreatePiece(Forme)
End With
End sub
Le module de classe appelé "Piece" (au sigulier)
VB:
'---------------------
' Module de Classe Pièce de Puzzle
'---------------------
'Forme de la pièce dans un tableau de booléens
Private mbForme() As Boolean
'Forme
'--------------------------
Property Get Forme() As Boolean()
' Propriété en lecture
Forme = mbForme
End Property
Property Let Forme(ByRef MaForme() As Boolean)
' Propriété en écriture
mbForme = MaForme
End Property
Le module de classe appelé "Pieces" (au pluriel), la collection comprendra l'ensemble des pièces
VB:
Private mcolPieces As Collection
Property Get Count() As Long
Count = mcolPieces.Count
End Property
Public Sub Add(ByRef objPiece As Piece, _
Optional ByVal NumPiece As String = "")
'Si aucune clé key n'est fournit on en génère une automatiquement
If Len(NumPiece) = 0 Then
NumPiece = CStr(objPiece.ID)
End If
mcolPieces.Add objPiece, NumPiece
Set objPiece = Nothing
End Sub
Public Sub Remove(ByVal Index As Variant)
mcolPieces.Remove (Index)
End Function
Public Function Item(ByVal Index As Variant) As Piece
Set Item = mcolPieces.Item(Index)
End Function
Public Function CreatePiece(ByRef bForme() As Boolean) As Piece
Dim objPiece As Piece
Set objPiece = New Piece
With objPiece
.Forme = bForme
End With
Set CreatePiece = objPiece
If Not (objPiece Is Nothing) Then Set objPiece = Nothing
End Function
Ce qui est étonnant c'est que lorsque je crée et j'ajoute la pièce à la collection Colp directement dans le module standard je n'ai pas d'erreur:
VB:
Sub NouvellePartie()
Dim colP As Pieces
Dim objPiece As Piece
ReDim Forme(0 To 5, 0 To 5)
For i = 1 To 5
For j = 1 To 5
Forme(i, j) = False
Next
Next
Set colP = New Pieces
Set objPiece = New Piece
With objPiece
.Forme = Forme
End With
colP.Add objPiece
If Not (objPiece Is Nothing) Then Set objPiece = Nothing
end sub
Merci d'avance pour votre aide précieuse.