Pseudo Klasse

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

DeadMatt

Betreff: Pseudo Klasse

BeitragFr, Sep 08, 2006 16:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ^^

Ich bin noch recht neu was BlitzBasic angeht doch hab ich schon Erfahrung mit C++, Java usw. gemacht und vermisse etwas die Klassen und Methoden.... nun dachte ich mir bau ich mir sowas selber ^^'

Code: [AUSKLAPPEN]


Type Spieler
   Field name$
   Field pic
   Field where_pic
   Field frame_x#
   Field frame_y#
   Field punkte
   Field x#
   Field y#
   Field frame
End Type

;Eine Art Konstruktor, in dieser Funktion werden die ersten Werte gesetzt!
Function C_SpielerKonst(C_instanz, C_name$, C_where_pic, C_pic, C_frame_x#, C_frame_y#, C_punkte, C_x#, C_y#, C_frame)

   C_instanz\name$       = C_name$         ;wird der Name des Spielers gesetzt
   C_instanz\where_pic      = C_where_pic      ;Wo liegt das pic :)
   C_instanz\pic          = C_pic            ;wie heisst das Bild im code
   C_instanz\frame_x#      = C_frame_x         ;Breite eines Frames
   C_instanz\frame_y#      = C_frame_y         ;Hoehe eines Frames
   C_instanz\punkte       = C_punkte         ;hier die Punkte
   C_instanz\x#          = C_x#            ;Position X
   C_instanz\y#          = C_y#            ;Position Y
   C_instanz\frame         = C_frame         ;Frame Position

   
   C_pic = LoadAnimImage (C_where_pic, C_frame_x, C_frame_y, 0, 12)
   


End Function


Die "Methode" soll eine art Konstruktor sein ^^ doch will er C_instanz nicht als typ ansehen.....gibts da ne moeglichkeit? oder muss ich das alles per hand machen?

PowerProgrammer

BeitragFr, Sep 08, 2006 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du denn C_instanz erstellt? Also mit:
Code: [AUSKLAPPEN]

C_instanz.Spieler = New Spieler

bevor du es an die Funktion übergibst?

~EDIT~
doch nicht Crying or Very sad
Hab den Code ohne irgendwas getestet, "Variable must be a Type".

Guck dir den Befehl Handle und Object an,damit gehts!

Hubsi

BeitragFr, Sep 08, 2006 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Function bla(c_instanz.spieler,c_...)

Handle und Object haben damit rein gar nichts zu schaffen Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Willi die Rübe

BeitragFr, Sep 08, 2006 16:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst die C_Instanz Variable auch als Type Variable im Funktionsheader deklarieren:

Code: [AUSKLAPPEN]
Function C_SpielerKonst(C_instanz.spieler, C_name$, C_where_pic, C_pic, C_frame_x#, C_frame_y#, C_punkte, C_x#, C_y#, C_frame)


Und für den Falle das das TypeHandle noch nicht erstellt wurde:
Code: [AUSKLAPPEN]
If Handle(C_Instanz)=0 Then C_instanz = New Spieler

Code: [AUSKLAPPEN]


Type Spieler
   Field name$
   Field pic
   Field where_pic
   Field frame_x#
   Field frame_y#
   Field punkte
   Field x#
   Field y#
   Field frame
End Type

Function C_SpielerKonst(C_instanz.spieler, C_name$, C_where_pic, C_pic, C_frame_x#, C_frame_y#, C_punkte, C_x#, C_y#, C_frame)

    If Handle(C_Instanz)=0 Then C_instanz = New Spieler

   C_instanz\name$       = C_name$         ;wird der Name des Spielers gesetzt
   C_instanz\where_pic      = C_where_pic      ;Wo liegt das pic :)
   C_instanz\pic          = C_pic            ;wie heisst das Bild im code
   C_instanz\frame_x#      = C_frame_x         ;Breite eines Frames
   C_instanz\frame_y#      = C_frame_y         ;Hoehe eines Frames
   C_instanz\punkte       = C_punkte         ;hier die Punkte
   C_instanz\x#          = C_x#            ;Position X
   C_instanz\y#          = C_y#            ;Position Y
   C_instanz\frame         = C_frame         ;Frame Position

   
   C_pic = LoadAnimImage (C_where_pic, C_frame_x, C_frame_y, 0, 12)
   


End Function


Greets
Willi
Ich habe keine Lösung, aber ich bewundere das Problem.
Tehadon
Q6600, MSI Neo2-FR, 4GB Ram, nVidia 7800 GTX

At the Farewell Party visit: MySpace | Homepage
 

DeadMatt

BeitragFr, Sep 08, 2006 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke fuer die Antworten ^^ waren beide gut nur habe ich bei beiden Loesungen ein und das selbe Problem: Der findet das Bild nich!
Main.bb
Code: [AUSKLAPPEN]
Graphics 800, 600, 32, 0
SetBuffer BackBuffer()
;---

;Spieler 1 Deklarieren
Spieler1.Spieler = New Spieler
C_SpielerKonst(Spieler1.Spieler ,"One", "sprite\char.bmp", "Char", 43, 41, 0, 100, 5, 0)

Include "player_class.bb"
;---

Repeat
   DrawImage Spieler1\pic, Spieler1\x#, Spieler1\y#, Spieler1\frame

   
   

   Flip
Until KeyHit(1)

Der Parameter "Spieler1.Spieler" hab ich auch schon nen String versucht einzugeben ^^ da bin ich mir nich so sicher was da hin muss, klappt beides jedenfalls nich

player_class.bb:
Code: [AUSKLAPPEN]
Type Spieler
   Field name$
   Field where_pic
   Field pic
   Field frame_x#
   Field frame_y#
   Field punkte
   Field x#
   Field y#
   Field frame
End Type

;Eine Art Konstruktor, in dieser Funktion werden die ersten Werte gesetzt!
Function C_SpielerKonst(C_instanz.Spieler ,C_name$, C_where_pic, C_pic, C_frame_x#, C_frame_y#, C_punkte, C_x#, C_y#, C_frame)

   ;If Handle(C_instanz)=0 Then C_instanz = New Spieler
   
   C_instanz\name$       = C_name$         ;wird der Name des Spielers gesetzt
   C_instanz\where_pic      = C_where_pic      ;Wo liegt das pic :)
   C_instanz\pic          = C_pic            ;wie heisst das Bild im code
   C_instanz\frame_x#      = C_frame_x         ;Breite eines Frames
   C_instanz\frame_y#      = C_frame_y         ;Hoehe eines Frames
   C_instanz\punkte       = C_punkte         ;hier die Punkte
   C_instanz\x#          = C_x#            ;Position X
   C_instanz\y#          = C_y#            ;Position Y
   C_instanz\frame         = C_frame         ;Frame Position
   
   C_pic = LoadAnimImage (C_where_pic, C_frame_x, C_frame_y, 0, 12)



   End Function

es kommt immer image does not exist

Willi die Rübe

BeitragFr, Sep 08, 2006 16:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst im Header C_where_pic als String deklarieren:

Function C_SpielerKonst(C_instanz.Spieler ,C_name$, C_where_pic$, C_pic, C_frame_x#, C_frame_y#, C_punkte, C_x#, C_y#, C_frame)
Ich habe keine Lösung, aber ich bewundere das Problem.
Tehadon
Q6600, MSI Neo2-FR, 4GB Ram, nVidia 7800 GTX

At the Farewell Party visit: MySpace | Homepage
 

DeadMatt

BeitragFr, Sep 08, 2006 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
genau das hab ich auch gerade gedacht geht aber trotzdem nicht....

hab schon versucht Spieler1\pic als string zu machen aber dann koennte der da wohl kaum noch ordentlich ne grafik reinladen...denke da hakt das
 

DeadMatt

BeitragFr, Sep 08, 2006 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
*g* habs gefunden *peinlich*

Code: [AUSKLAPPEN]
C_instanz\pic         = C_pic            
   
   C_instanz\pic = LoadAnimImage (C_where_pic$, C_frame_x, C_frame_y, 0, 12)

*g* hab immer versucht nen string reinzuschreiben Wink

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group