DimFeld mit Debuglog ausgeben...?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Jamagin

Betreff: DimFeld mit Debuglog ausgeben...?

BeitragSa, März 12, 2011 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Ich habe ein kleines Denkproblem und komm einfach nicht dahinter!

Folgende Situation:

Dim map.Stein(8, 8)

Diese Variable wird im Spiel verwendet und Werte zugewiesen, jedoch wenn ich zB. den Inhalt des Feldes map(2,2) ausgeben möchte bekomme ich immer eine "ILLEGAL TYPE CONVERSION"

Es scheitert auch wenn ich sage, nr = map.Stein(2,2)

Wie kann man so eine Variable eigentlich auslesen (mit Debuglog)? Das brauch ich um ein Spielfeld abzuspeichern!

Würde mich für einen Lichtblitz sehr freuen!! Danke


lg. Jamagin Embarassed
Bevor du etwas neues beginnst, erledige das alte
 

Sterbendes Lüftlein

BeitragSa, März 12, 2011 13:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

Jamagin

BeitragSa, März 12, 2011 13:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Totensturm,

ja klar, ich habe eine lokale Type liste und definiere das dann so

lokal stein.TStein
blabla

map(x,y) = stein

aber ich kann das nicht auslesen???

lg. Jamagin

NB: Was meinst mit Unterstrich (_)
Bevor du etwas neues beginnst, erledige das alte
 

Sterbendes Lüftlein

BeitragSa, März 12, 2011 13:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

darth

BeitragSa, März 12, 2011 13:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

du kannst keine Typeinstanzen als Text ausgeben. Würdest du sowas wie Java benutzen, wäre das möglich, dann gibt er dir die Adresse der Instanz als String aus. Geht in BB allerdings nicht.
Was du machen kannst ist, Felder des Types ausgeben lassen. Zur Identifikation könntest du z.b eine ID-Nummer o.ä. reinspeichern, die du dir dann ausgeben lassen kannst.

Siehe dieses Beispiel (inkl. den tollen Codetags, bei denen es sicher nicht schlecht wäre, wenn du sie dir angewöhnst :>):

BlitzBasic: [AUSKLAPPEN]
Type TStein
Field ID

;...
End Type

Dim Map.TStein(10, 10)

Map(2, 3) = New TStein
Map(2, 3)\ID = 1

DebugLog Map(2, 3)\ID


TL/DR: Type -> String geht nicht, Debug über Type-Feld

MfG,
Darth
Diese Signatur ist leer.

Der Eisvogel

BeitragSa, März 12, 2011 13:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, was du versuchts ist quasi "Debuglog stein". Du kannst keinen Type in dem Sinne ausgeben, du musst auf ein Feld zugreifen. also "stein.feld" und so sollte es dann auch in deinem Array funktionieren.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Jamagin

BeitragSa, März 12, 2011 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Aha!

Ja so hab ich es ja auch versucht, doch da wird mir nix angezeigt obwohl die Objekte im Spielfeld sind.

Code: [AUSKLAPPEN]

Funktion Spielfeld()
   Local brick.TBrick
   For y = map_minY To map_maxY
      For x = map_minX To map_maxX
         brick.TBrick = New TBrick
         brick\x = x * tile_width + 12
         brick\y = y * tile_height + 12
         brick\art = Rand(1, 7)
         brick\objectID = HUD_CreateImage ...
         map(x, y) = brick
      Next
   Next
End Function


Codeausschnitt und wie man sieht ist die Typeliste lokal und ich möchte dann außerhalb der Funktion zB. auslesen was im Feld map(2,2) gespeichert ist!

lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

Xeres

Moderator

BeitragSa, März 12, 2011 14:01
Antworten mit Zitat
Benutzer-Profile anzeigen
darth hat Folgendes geschrieben:
du kannst keine Typeinstanzen als Text ausgeben.
Das ist nicht vollkommen richtig.
Man kann einen Type explizit zu String casten:

BlitzBasic: [AUSKLAPPEN]
Type TStein
Field ID
Field w$

;...
End Type

Dim Map.TStein(10, 10)

Map(2, 3) = New TStein
Map(2, 3)\ID = 1
Map(2, 3)\w = "woa"

DebugLog Str(Map(2, 3))
Stop
End


Ergibt im Debuglog:
Code: [AUSKLAPPEN]
[1,"woa"]

Alle Felder werden in Code-Reihenfolge aufgelistet.

Nachtrag:
Jamagin hat Folgendes geschrieben:
wie man sieht ist die Typeliste lokal
Ist sie nicht. In BlitzBasic ist sie immer Global zugänglich.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Jamagin

BeitragSa, März 12, 2011 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Xeres,

danke, aber da bekomm ich nur ein [NULL] heraus.

Code: [AUSKLAPPEN]

Dim map.Stein(8,8)


normalerweise müßte ich mit dieser Variable überall Zugriff haben auch auslesen können und das tut es nicht!
Denn wenn ich Debuglog map.Stein(1,1) schreibe, bekomme ich schon die erste Fehlermeldung. Da aber die Typeliste lokal ist und die Werte da in die Variable map(x,y)=stein geschrieben werden, müßte ich diese auslesen können oder irre ich mich da nun? Denn auch DIM sagt ja aus das die Variable dann gloabl ist!

Steh da voll am Schlauch, denn während des Spieles greife ich ja auch auf map(x,y) zu und da bekomm ich keine Fehlermeldung...!

Ojeoje...!

lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

Xeres

Moderator

BeitragSa, März 12, 2011 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Du machst irgendwas falsch Wink
Läuft, wie man es erwartet darf:
BlitzBasic: [AUSKLAPPEN]
Type TBrick 
Field ID

;...
End Type

Dim map.TBrick(8,8)
Fill()
DebugLog(Str(map(2, 3)))
Local B.TBrick = map(2, 3)
DebugLog(B\ID)
DebugLog(map(2, 3)\ID)

Stop
End

Function Fill()
Local brick.TBrick, x, y
For y = 0 To 8
For x = 0 To 8
brick.TBrick = New TBrick
brick\ID = x*y
map(x, y) = brick
Next
Next
End Function


Sind map_minY und map_maxY usw. ordentlich Global deklariert? Was machst du sonst noch zwischendurch? Was steht in der Fehlermeldung?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Jamagin

BeitragSa, März 12, 2011 14:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Xeres,

habe deinen Ausschnitt jetzt kopiert und dann gestartet und es läuft bis zum Stop. Debugger ist an aber keine Anzeige, auch keine Fehlermeldung!

Ich bei mir erhalte ein Object does not exist ...
Und das ist komisch, denn das Spielfeld ist ja gefüllt!

mal weitertüfteln...!

Die Variablen map_minX und so weiter sind global


lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

Jamagin

BeitragSa, März 12, 2011 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Dieser Thread kann bitte geschlossen werden!

@Xeres,

ich habe das über eine zweite Variable ausgelesen, die ich sowieso für die Feldkontrolle hatte! Manchmal sieht man echt nix! Kein Wunder wenn das Programm schon über 5000 Zeilen hat! *gg*

Danke


lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group