Isometrische Karten : Problem bei Erstellung

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
coMstructor
Beiträge: 130
Registriert: 04.07.2006 20:10
Kontaktdaten:

Isometrische Karten : Problem bei Erstellung

Beitrag 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
Benutzeravatar
Frogger
Beiträge: 425
Registriert: 14.03.2006 19:27
Kontaktdaten:

Beitrag von Frogger »

Hast du auch Start3D() und Stop3D() auserhalb der Schleife eingesetzt?
Siehe Hilfe!
[PB4.20]
Benutzeravatar
coMstructor
Beiträge: 130
Registriert: 04.07.2006 20:10
Kontaktdaten:

Beitrag von coMstructor »

ja hab ich , ich hab doch gesagt wenn ich nur eine zeile zeichnen will geht das :allright:
Benutzeravatar
Frogger
Beiträge: 425
Registriert: 14.03.2006 19:27
Kontaktdaten:

Beitrag von Frogger »

Poste mal den Rest des Codes.
[PB4.20]
Hellhound66
Beiträge: 476
Registriert: 23.03.2005 23:19

Beitrag von Hellhound66 »

Probiers mal mit Standard_x-62.
Optimismus ist ein Mangel an Information.
Benutzeravatar
coMstructor
Beiträge: 130
Registriert: 04.07.2006 20:10
Kontaktdaten:

Beitrag 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   
Hellhound66
Beiträge: 476
Registriert: 23.03.2005 23:19

Beitrag 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.
Optimismus ist ein Mangel an Information.
Benutzeravatar
coMstructor
Beiträge: 130
Registriert: 04.07.2006 20:10
Kontaktdaten:

Beitrag von coMstructor »

kannst du das bitte in die for schleifen packen sonst hab ich gleich wieder das gleiche prob wie vorhin ^^ ;)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
coMstructor
Beiträge: 130
Registriert: 04.07.2006 20:10
Kontaktdaten:

Beitrag von coMstructor »

stark danke :allright: würde mich aber trotzdem interessieren warum mein code nicht geklappt hat :freak:
Antworten