Devo aver scritto qualcosa nella WIKI, ma non riesco a ritrovarla.... :hard:
La Classe Class consente di richiamare mediante il metodo .Load() una Classe specifica, da indicarsi nell'unico parametro previsto per quel metodo.
Consente in particolare di creare un oggetto appartenente alla Classe richiamata e di gestirlo normalmente come Object.
Facciamo un esempio:
Public Sub Form_Open()
Dim s As String
Dim ob As Object
' Mostra tutte le proprietà, metodi e gli eventi che appartengono alla Classe richiamata nel metodo ".Load()":
For Each s In Class.Load("Button").Symbols
Print s
Next
' Creiamo un oggetto appartenente, ad esempio, alla Classe "Button":
ob = Class.Load("Button").New([Me])
With ob
.X = 30
.Y = 50
.W = 80
.H = 40
.Text = "Tasto"
End With
' Assegnamo la variabile di tipo "Oggetto" ad un gruppo per la sollevazione degli eventi previsti dalla Classe, alla quale l'oggetto appartiene:
Object.Attach(ob, Me, "TASTO")
End
Public Sub TASTO_Click() ' Proviamo l'evento Click()
Print "Tasto cliccato"
End
...ma ci consente, ad esempio, di sapere se su un Form è presente, ed eventualmente in che quantità, qualche oggetto appartenente alla Classe specificata dal metodo .Load().
Come esempio poniamo sul Form tre Button e due Label, poi scriviamo questo codice:
Public Sub Form_Open()
Print "Sul Form sono presenti: \n"
With Class.Load("Button")
Print " "; .Name; " n. "; .Count
Print "che appartengono al componente: "; .Component.Name
End With
With Class.Load("Label")
Print "\n "; .Name; " n. "; .Count
Print "che appartengono al componente: "; .Component.Name
End With
End
Questa comunque, è la classe base per creare i propri robot:
' Gambas class file
'questa è la classe genitrice per creare i propri robot
Export
Create Private 'non istanziabile
Property Read Nome As String 'nome del robot
Property Posx As Short 'posizione x e y nel campo di battaglia
Property Posy As Short
Property Velocita As Byte 'velocità del robot
Property Direzione As Short 'direzione di marcia del robot in gradi
Property Scansione As Short 'angolo di scansione del radar in gradi
Property Barriera As Boolean 'la barriera è alzata?
Property Cammuffo As Boolean 'l'invisibilità è attivata?
Private $Nome As String
Private $Posx As Short
Private $Posy As Short
Private $Velocita As Byte
Private $Direzione As Short
Private $Scansione As Short
Private $Barriera As Boolean
Private $Cammuffo As Boolean
Private Function Nome_Read() As String
Return $Nome
End
Private Sub Velocita_Write(Value As Byte)
$Velocita = Value
End
Private Function Velocita_Read() As Byte
Return $Velocita
End
Private Function Direzione_Read() As Short
Return $Direzione
End
Private Sub Direzione_Write(Value As Short)
$Direzione = Value
End
Private Function Scansione_Read() As Short
Return $Scansione
End
Private Sub Scansione_Write(Value As Short)
$Scansione = Value
End
Private Function Barriera_Read() As Boolean
Return $Barriera
End
Private Sub Barriera_Write(Value As Boolean)
$Barriera = Value
End
Private Function Cammuffo_Read() As Boolean
Return $Cammuffo
End
Private Sub Cammuffo_Write(Value As Boolean)
$Cammuffo = Value
End
Private Function Posx_Read() As Short
Return $Posx
End
Private Sub Posx_Write(Value As Short)
$Posx = Value
End
Private Function Posy_Read() As Short
Return $Posy
End
Private Sub Posy_Write(Value As Short)
$Posy = Value
End
Public Sub Main()
'qui va messa la strategia di combattimento
End
Piuttosto semplice, ma è solo uno "scheletro" che ognuno deve personalizzare.