
Et deja ça ouvre un peu le brouillard.
Reste encore que le procedural, au moins ça avait le merite d'avoir un sens pour le lire.

Moi, comme dab, j'suis dans les seuls qui trouve pas ça super.
D'ailleur c'est peut etre aussi pour ça que j'ai aimé PB

Code : Tout sélectionner
Class Vecteur2D
x.f : y.f
endclass
Vecteur2D(x.f,y.f)
{
this->x = x
this->y = y
}
Vecteur2D operator * ( *A.Vecteur2D , *B.Vecteur2D )
{
this->x = A.x * B.x
this->y = A.y * B.y
}
MonPointA.Vecteur2D(100,50)
MonPointB.Vecteur2D(150,550)
MonPointC.Vecteur2D = MonPointA * MonPointB
Code : Tout sélectionner
Structure Vecteur2D
x.f
y.f
endstructure
etc...
Code : Tout sélectionner
MonPointC.Vecteur2D = MonPointA * MonPoint
Code : Tout sélectionner
Structure Dms
L.L
H.L
P.L
EndStructure
Structure Bureau
Dms.Dms
*Examiner
EndStructure
Structure Ecran
Dms.Dms
*HndBureau
*Initialiser
*Preparer
*Ouvrir
*Fermer
EndStructure
Structure Clavier
*Initialiser
*AttendreTouche
EndStructure
Procedure BureauExaminer(*This.Bureau)
ExamineDesktops()
With *This\Dms
\L = DesktopWidth(0)
\H = DesktopHeight(0)
\P = DesktopDepth(0)
EndWith
EndProcedure
Procedure EcranInitialiser()
InitSprite()
EndProcedure
Procedure EcranPreparer(*This.Ecran)
Protected *Bureau.Dms
*Bureau = *This\HndBureau
CopyMemory(*Bureau, *This\Dms, SizeOf(Dms) )
EndProcedure
Procedure EcranOuvrir(*This.Ecran)
With *This
OpenScreen(\Dms\L, \Dms\H, \Dms\P, "")
EndWith
EndProcedure
Procedure EcranFermer()
CloseScreen()
EndProcedure
Procedure ClavierInitialiser()
InitKeyboard()
EndProcedure
Procedure ClavierAttendreTouche()
Repeat
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
EndProcedure
Dms.Dms
Bureau.Bureau
Bureau\Examiner = @BureauExaminer()
Ecran.Ecran
Ecran\HndBureau = Bureau
Ecran\Initialiser = @EcranInitialiser()
Ecran\Preparer = @EcranPreparer()
Ecran\Ouvrir = @EcranOuvrir()
Ecran\Fermer = @EcranFermer()
Clavier.Clavier
Clavier\Initialiser = @ClavierInitialiser()
Clavier\AttendreTouche = @ClavierAttendreTouche()
CallFunctionFast(Bureau\Examiner, Bureau)
CallFunctionFast(Ecran\Initialiser, Ecran)
CallFunctionFast(Ecran\Preparer, Ecran)
CallFunctionFast(Ecran\Ouvrir, Ecran)
CallFunctionFast(Clavier\Initialiser, Clavier)
CallFunctionFast(Clavier\AttendreTouche, Clavier)
CallFunctionFast(Ecran\Fermer, Ecran)
Code : Tout sélectionner
;******************************************************************
; Object-oriented programming to Purebasic Converter
;
; Par Cpl.Bator
;
;******************************************************************
;-Constructor(s) & Destructor(s)
; ----------------------------------------------------------------
Macro New_PERSONNAGE(Pointeur)
*Pointeur_.PERSONNAGE_=AllocateMemory(SizeOf(PERSONNAGE_))
*Pointeur_\Vtable=?Vtable_PERSONNAGE
Pointeur.PERSONNAGE=@*Pointeur_\Vtable
EndMacro
; ----------------------------------------------------------------
Macro Free_PERSONNAGE(Pointeur)
Pointeur#_.Class#_=Pointeur
FreeMemory(Pointeur)
EndMacro
; ----------------------------------------------------------------
;-Interfaces
Interface PERSONNAGE
SetName(Name$)
GetName.s()
EndInterface
; ----------------------------------------------------------------
; ----------------------------------------------------------------
;-Structures
Structure PERSONNAGE_
Vtable.l
Name$
EndStructure
; ----------------------------------------------------------------
; ----------------------------------------------------------------
;-Methodes
Procedure SetName(*This.PERSONNAGE_,Name$)
*This\Name$ = Name$
EndProcedure
; ----------------------------------------------------------------
Procedure.s GetName(*This.PERSONNAGE_)
ProcedureReturn *This\Name$
EndProcedure
; ----------------------------------------------------------------
; ----------------------------------------------------------------
;-DataSections
DataSection
VTable_PERSONNAGE:
Data.l @SetName(),@GetName()
; ----------------------------------------------------------------
EndDataSection
; ----------------------------------------------------------------
Code : Tout sélectionner
Structure Dms
L.L
H.L
P.L
EndStructure
Structure Bureau
Dms.Dms
*Examiner
EndStructure
Structure Ecran
Dms.Dms
*HndBureau
*Initialiser
*Preparer
*Ouvrir
*Fermer
EndStructure
Structure Clavier
*Initialiser
*AttendreTouche
EndStructure
Procedure BureauExaminer(*This.Bureau)
ExamineDesktops()
With *This\Dms
\L = DesktopWidth(0)
\H = DesktopHeight(0)
\P = DesktopDepth(0)
EndWith
EndProcedure
Procedure EcranInitialiser()
InitSprite()
EndProcedure
Procedure EcranPreparer(*This.Ecran)
Protected *Bureau.Dms
*Bureau = *This\HndBureau
CopyMemory(*Bureau, *This\Dms, SizeOf(Dms) )
EndProcedure
Procedure EcranOuvrir(*This.Ecran)
With *This
OpenScreen(\Dms\L, \Dms\H, \Dms\P, "")
EndWith
EndProcedure
Procedure EcranFermer()
CloseScreen()
EndProcedure
Procedure ClavierInitialiser()
InitKeyboard()
EndProcedure
Procedure ClavierAttendreTouche()
Repeat
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
EndProcedure
Dms.Dms
Bureau.Bureau
Bureau\Examiner = @BureauExaminer()
Ecran.Ecran
Ecran\HndBureau = Bureau
Ecran\Initialiser = @EcranInitialiser()
Ecran\Preparer = @EcranPreparer()
Ecran\Ouvrir = @EcranOuvrir()
Ecran\Fermer = @EcranFermer()
Clavier.Clavier
Clavier\Initialiser = @ClavierInitialiser()
Clavier\AttendreTouche = @ClavierAttendreTouche()
BureauExaminer(Bureau)
EcranInitialiser()
EcranPreparer(Ecran)
EcranOuvrir(Ecran)
ClavierInitialiser()
ClavierAttendreTouche()
EcranFermer()