Seite 1 von 2

Isometrische Karten : Problem bei Erstellung

Verfasst: 08.10.2006 23:34
von coMstructor
Habe diesen code in der Repeat-Schleife , aber dabei geht bei kompilieren absolut garnix an . es sollte aber 5x5 isometrische kästen zeichnen :( wenn ich nur eine zeile zeichnen will , dann funktioniert das , kann mir da einer helfen?

Code: Alles auswählen

For z1=0 To 5
        y = standard_y
        x = standard_x
      
          For z2=0 To 5
            DisplaySprite3D(0,x,y)
            x+62
            y-31
          Next 
        standard_x+62
        standard_y+31
Next

Verfasst: 08.10.2006 23:38
von Frogger
Hast du auch Start3D() und Stop3D() auserhalb der Schleife eingesetzt?
Siehe Hilfe!

Verfasst: 08.10.2006 23:41
von coMstructor
ja hab ich , ich hab doch gesagt wenn ich nur eine zeile zeichnen will geht das :allright:

Verfasst: 08.10.2006 23:47
von Frogger
Poste mal den Rest des Codes.

Verfasst: 08.10.2006 23:52
von Hellhound66
Probiers mal mit Standard_x-62.

Verfasst: 08.10.2006 23:56
von coMstructor
was soll das denn bringen mit x-62????


hier der ganze code:

Code: Alles auswählen


standard_y=300
standard_x=3

If InitSprite() = 0 Or InitKeyboard() = 0
  MessageRequester("Error", "Can't open DirectX 7 or later", 0)
  End
EndIf

If InitSprite3D() = 0
  MessageRequester("Error", "Direct3D system can't be initialized correctly", 0)
  End
EndIf


If OpenScreen(1024, 768, 16, "Sprite")


  LoadSprite(0, "0001.bmp", #PB_Sprite_Texture)
  
  ;For bild = 0 To 100
    CreateSprite3D(0, 0)
    CreateSprite3D(1, 0)
    CreateSprite3D(2, 0)

  ;Next 
  
  TransparentSpriteColor(0, 0, 0, 0)

  Repeat
      
    FlipBuffers()
    
    ClearScreen(255,255,255)
    

    If Start3D()
    

        
    
      For z1=0 To 5
        y = standard_y
        x = standard_x
      
          For z2=0 To 5
            DisplaySprite3D(0,x,y)
            x+62
            y-31
          Next 
        standard_x+62
        standard_y+31
      Next
    
      
    

     
     
      Stop3D()
    EndIf   
    
    ExamineKeyboard()
  Until x > 500 Or KeyboardPushed(#PB_Key_Escape)
  
Else
  MessageRequester("Error", "Can't open a 640*480 - 16 bit screen !", 0)
EndIf

End   

Verfasst: 09.10.2006 00:04
von Hellhound66
Ich dachte halt, du fängst oben an (ISO-technisch gesehen links oben),
dann zeichnest du eine Reihe. dazu musst du X und Y folgendermaßen ändern:

Code: Alles auswählen

  X+#TileWidth/2
  Y+#TileHeight/2
Für die nächste Zeile, die darunterliegt musst du die Anfangswerte folgendermaßen anpassen:

Code: Alles auswählen

  X_Begin-#TileWidth/2
  Y_Begin+#TileHeight/2
Lass es wirken, setz es um, und du wirst sehen, dass es klappen wird.

Verfasst: 09.10.2006 00:06
von coMstructor
kannst du das bitte in die for schleifen packen sonst hab ich gleich wieder das gleiche prob wie vorhin ^^ ;)

Verfasst: 09.10.2006 00:22
von Kaeru Gaman
mit deinen wilden +/- bist du da aber auch ziemlich aufgeschmissen.

errechne die koordinaten direkt aus den schleifenvariablen.

Code: Alles auswählen

ZX = 400
ZY = 100
For YR = 0 To 5
  For XR = 0 To 5
    TX = ZX + 64 * XR - 64 * YR
    TY = ZY + 32 * XR + 32 * YR
    Debug "Row: "+Str(XR)+" ; Line: "+Str(YR)+" ; x: "+Str(TX)+" ; y: "+Str(TY)
  Next
Next

Verfasst: 09.10.2006 10:13
von coMstructor
stark danke :allright: würde mich aber trotzdem interessieren warum mein code nicht geklappt hat :freak: