erledigt - Type auf einmal Null :/

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Düsi

Betreff: erledigt - Type auf einmal Null :/

BeitragSa, Aug 23, 2008 13:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin,
ich versuche grade einen Tile-Editor...
Jetzt möchte ich ein Tile setzten, dazu habe ich folgende Funktion geschrieben:

Code: [AUSKLAPPEN]
Function SetTile()
   ;================================================================================================
   ;--> Setzt ein Tile
      
   If Mousedown1 And MouseInMap And MouseOutGui And Collision = False Then
      ;--> Ist ein Tileset ausgewählt?
      If newTileset <> Null Then
      
         ;--> Untergrund?
         If Level = 0 Then
            Map(mtX, mtY)\Underground = newTileset
            Map(mtX, mtY)\UndergroundID = newTileID
         EndIf
         
         ;--> Objekt?
         If Level = 1 Then
            Map(mtX, mtY)\Object_ = newTileset
            Map(mtX, mtY)\ObjectID = newTileID
         EndIf
         
      EndIf
   EndIf
End Function


Hier klappt alles, newTileset ist nicht Null und die Variable Level ist 0.
(newTileset ist der Type des aktuell ausgewählten Tilesets)

Jetzt verwende ich diese Funktion zum malen der Map:

Code: [AUSKLAPPEN]
Function DrawMap()
   ;================================================================================================
   ;--> Malt die Map
   
   ;--> Existiert eine Map?
   If MapX > 0 And MapY > 0 Then
   
      For X = 0 To MapX-1
         For Y = 0 To MapY-1
         
            ;--> Untergrund
            If Map(X, Y)\Underground <> Null Then
               DrawBlock Map(X, Y)\Underground\Img, X*32-ScrollX, Y*32-ScrollY, Map(X, Y)\UndergroundID
            EndIf
            
            ;--> Objekte
            If Map(X, Y)\Object_ <> Null Then
               DrawImage Map(X, Y)\Object_\Img, X*32-ScrollX, Y*32-ScrollY, Map(X, Y)\ObjectID
            EndIf
         
            ;--> Raster
            If Raster Then
               Color 255, 255, 255
               Rect X*32-ScrollX, Y*32-ScrollY, 32, 32, 0
            EndIf
         
            ;--> Feld ID
            If FieldID Then
               Color 0, 255, 0
               Text X*32-ScrollX, Y*32-ScrollY, X+"/"+Y
            EndIf
      
         Next
      Next
      
   EndIf
End Function


Hier wird das Tile des Tilesets einfach nicht gemalt, Map(X, Y)\Underground zählt als Null, obwohl ich es beim setzten eines Tiles ja einem Type zugewiesen habe. :/

Woran liegt das?
  • Zuletzt bearbeitet von Düsi am Sa, Aug 23, 2008 14:06, insgesamt einmal bearbeitet
 

da_poller

BeitragSa, Aug 23, 2008 13:32
Antworten mit Zitat
Benutzer-Profile anzeigen
für eine tilemap verwende ich erne ein 2dimensionales array siehe dim

Goodjee

BeitragSa, Aug 23, 2008 13:44
Antworten mit Zitat
Benutzer-Profile anzeigen
du wirst es nicht glauben, aber das tut er auch
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Noobody

BeitragSa, Aug 23, 2008 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Jupp, bevor man versucht zu helfen, sollte man sich zumindest die Mühe machen, den Problemcode durchzulesen.

@Topic: Im Code konnte ich jetzt keinen Fehler entdecken.
Bist du dir sicher, dass zwischen den beiden Funktionen keine Werte verändert werden und dass mtX und mtY richtig berechnet werden?
Hast du mit dem Debugger überprüft, ob Map\Underground wirklich Null ist oder siehst du einfach nichts? Bei letzterem könnte der Fehler natürlich auch woanders liegen.
Ansonsten fällt mir grade nichts mehr ein.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

DonnerBlitz

BeitragSa, Aug 23, 2008 13:51
Antworten mit Zitat
Benutzer-Profile anzeigen
? das tut er nicht !

Eingeproggt

BeitragSa, Aug 23, 2008 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn cih das richtig verstanden habe, wirst du die Werte aus "newTileset" kopieren müssen und nicht einfach eine Referenz dorthin legen. Weil wenn du jetzt irgendwo newTileset löscht, ist der Type in deiner Map auch gelöscht. (Die Map verweist ja nur darauf)

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Noobody

BeitragSa, Aug 23, 2008 13:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Macht hier eher begrenzt Sinn, da, wenn man in einem Mapeditor ein Tileset löscht, es auch nicht mehr irgendwo im Array existieren sollte, deswegen ist sein Ansatz schon richtig.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Düsi

BeitragSa, Aug 23, 2008 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, aber newTileset verweißt ja auf den Type des markierten Tileset, also verweißt dann ja im Endeffekt Map(xy, xy)\Underground auf den Type des Tilesets?! Oder hab ich da etwas falsch verstanden? :/

----
Arg, ich bin ja echt doof >.<
Schon dumm, wenn man bei der Lösch funktion ebenfalls Mousedown(1) verwendet, danns etz ich das Tile ja und lösch es in der nächsten Funktion gleich wieder >.<.

Ok, hab den Fehler.

Drodztem danke für die Hilfe Smile

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group