Seite 2 von 2

Verfasst: 06.09.2005 14:45
von seggl
mann kann mir den nieman einfach sage wie man für die 1en ein sprite hineinsetzt, so das wände entstehen??? nochmal ich will NUR wissen wie man hin bekommt das überall wo ein 1 ist z.B. ein kleines blaues quadrat ist, wenn
mann das programm startet??!!

Code: Alles auswählen

DataSection
Data.l 1,1,1,1,1,1,1
Data.l 1,2,2,2,2,2,1
Data.l 1,2,1,2,1,2,1               ;1 = wand
Data.l 1,2,2,2,2,2,1               ;2 = freier platz
Data.l 1,2,1,2,1,2,1     
Data.l 1,2,2,2,2,2,1   
Data.l 1,1,1,1,1,1,1
EndDataSection 

Verfasst: 06.09.2005 15:17
von MVXA
AndyX hat geschrieben:

Code: Alles auswählen

Restore levelData

For i 0 to weißichnich
  Read blabla
  if blabla = 1
    DisplaySprite(das,dort,dadrüben,usw.)
  endif
  usw....
Next i

DataSection:
levelData:
Data.l 1,2,1
EndDataSection
Was ist damit?

Verfasst: 06.09.2005 15:18
von DarkDragon
MVXA hat geschrieben:
AndyX hat geschrieben:

Code: Alles auswählen

Restore levelData

For i 0 to weißichnich
  Read blabla
  if blabla = 1
    DisplaySprite(das,dort,dadrüben,usw.)
  endif
  usw....
Next i

DataSection:
levelData:
Data.l 1,2,1
EndDataSection
Was ist damit?
Das ist die Lösung :lol:

[EDIT]
Aso das war an den gerichtet, der das Problem hat.

Verfasst: 06.09.2005 17:00
von seggl
könnte mir jetzt bitte noch jemand sagen, was ich für weissnich, blabla und das,dort,dadrüben,usw. einsetzen muss??!!

Code: Alles auswählen


Restore levelData

For i 0 to weißichnich
  Read blabla
  if blabla = 1
    DisplaySprite(das,dort,dadrüben,usw.)
  endif
  usw....
Next i

DataSection:
levelData:
Data.l 1,2,1
EndDataSection

Verfasst: 06.09.2005 17:05
von Kiffi
seggl hat geschrieben:könnte mir jetzt bitte noch jemand sagen, was ich für weissnich, blabla und das,dort,dadrüben,usw. einsetzen muss??!!
PB-Hilfe hat geschrieben:DisplaySprite(#Sprite, x, y)

Verfasst: 06.09.2005 19:41
von PAMKKKKK
@DarkDragon
Danke für den [Ironie]dezenten[/Ironie] Hinweis, das ich die nicht sehr gut gestellte Frage, nicht richtig gedeutet habe :(

@ALL
Eine Erklärung wird nicht besser, wenn man den selben Kot immer wieder Postet. Wir sind hier im Anfängerforum!

@seggl
Ich interpretiere deine Frage nun so, das du eine Map erstellen willst.
Gib dir bitte mehr mühe dich verständlich auszudrücken!

Code: Alles auswählen

; Beispiel eine Map aus einer Datasection erstellen
; Autor PAMKKKKK September 6. 2005
; PB 3.93


  Width=90
  Height=90
  If OpenWindow(0, 0, 0, Width, Height, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "Simple Map")
    If StartDrawing(WindowOutput())
    
      X = 20 ; start länge 
      Y = 0 ; start breite
      Restore levelData
      Repeat
        Read levelData
        If levelData = 5
          Break ; Wenn Ende der  Daten erreicht dann raus aus der Schleife.
        EndIf
        
        If levelData = 4 ; Zeilenvorschub 
          Y = 0 ; An den Zeilenanfang zurücksetzen
          X = X + 10  ; Eine Zeile Weiter nach unten
        Else
          Y = Y + 10 ; An den Zeilenanfang zurücksetzen
        EndIf          
        
        If levelData = 1
          Box(X, Y, 10, 10, RGB(90,90,255)) ; Blaue Box 
        EndIf
 
      ForEver
      
      StopDrawing()   ; Dies ist nach Abschluss der Zeichenoperationen immer nötig!!! 
    EndIf
    Repeat : EventID = WaitWindowEvent() : Until  EventID = #PB_Event_CloseWindow
  EndIf

DataSection:
levelData:
Data.l 1,1,1,1,1,1,1,4
Data.l 1,2,2,2,2,2,1,4
Data.l 1,2,1,2,1,2,1,4               
Data.l 1,2,2,2,2,2,1,4               
Data.l 1,2,1,2,1,2,1,4     
Data.l 1,2,2,2,2,2,1,4   
Data.l 1,1,1,1,1,1,1,5  ; 5 um das das Ende der Daten zu erkennen
EndDataSection

Verfasst: 06.09.2005 19:57
von Eric
Ich hab mal was zusammengebastelt, ist nicht getestet, sollte aber mit ein paar kleinen Anpassungen funktionieren.

Code: Alles auswählen

InitSprite()
InitKeyboard()
If OpenScreen(800,600,32,"")
  LoadSprite(1,"wand.bmp")
  LoadSprite(2,"frei.bmp")
  Repeat
    For x=0 To 6
      For y=0 To 6
        Read levelData
        DisplaySprite(levelData,x*32,y*32) ; die Höhe und Breite an die Sprites anpassen
      Next
    Next
    FlipBuffers()
    Delay(10)
    ExamineKeyboard()
  Until KeyboardPushed(#PB_Key_All)  
EndIf

DataSection
Data.l 1,1,1,1,1,1,1
Data.l 1,2,2,2,2,2,1
Data.l 1,2,1,2,1,2,1               ;1 = wand
Data.l 1,2,2,2,2,2,1               ;2 = freier platz
Data.l 1,2,1,2,1,2,1     
Data.l 1,2,2,2,2,2,1   
Data.l 1,1,1,1,1,1,1
EndDataSection 

Verfasst: 07.09.2005 13:35
von seggl
danke für eure hilfe das von Eric würde mir besonders gut helfen, wenn es denn tatsächlich funktionieren würde. Danke Eric du bist der einzige der es richtig verstanden hat nur funzt es ebe nicht ganz. ich habe alle daran ausprobiert doch nicht hingekriegt kann mir jemand plz weiter helfen mit folgendem ansatz:

Code: Alles auswählen

InitSprite()
InitKeyboard()
If OpenScreen(800,600,32,"")
  LoadSprite(1,"wand.bmp")
  LoadSprite(2,"frei.bmp")
  Repeat
    For x=0 To 6
      For y=0 To 6
        Read levelData
        DisplaySprite(levelData,x*32,y*32) ; die Höhe und Breite an die Sprites anpassen
      Next
    Next
    FlipBuffers()
    Delay(10)
    ExamineKeyboard()
  Until KeyboardPushed(#PB_Key_All) 
EndIf

DataSection
Data.l 1,1,1,1,1,1,1
Data.l 1,2,2,2,2,2,1
Data.l 1,2,1,2,1,2,1               ;1 = wand
Data.l 1,2,2,2,2,2,1               ;2 = freier platz
Data.l 1,2,1,2,1,2,1     
Data.l 1,2,2,2,2,2,1   
Data.l 1,1,1,1,1,1,1
EndDataSection 

Verfasst: 07.09.2005 19:26
von Eric
seggl hat geschrieben:nur funzt es ebe nicht ganz.
Was funktioniert denn nicht ganz?
Ich habs ja wie gesagt nicht getestet.

Verfasst: 07.09.2005 20:56
von PAMKKKKK
@seggl
Hier nochmal der ganze Käse als Screen.

Es ist das selbe wie das Fensterbeispiel, glaube mir!

Code: Alles auswählen

#SPRITE_W = 32
#SPRITE_H = 32

#SCREEN_W = 1024 
#SCREEN_H = 768 

If InitSprite() = 0 Or InitKeyboard() = 0 
  MessageRequester("ERROR","Cant init DirectX",0):End 
EndIf 

If OpenScreen(#SCREEN_W,#SCREEN_H,32,"MyScreen")
  
  CreateSprite(1,#SPRITE_W,#SPRITE_H) 
  StartDrawing(SpriteOutput(1)) 
  Box(0, 0, #SPRITE_W, #SPRITE_H, RGB(90,90,255)) ; Blaue Box 
  StopDrawing() 
  
  CreateSprite(2,#SPRITE_W,#SPRITE_H) 
  StartDrawing(SpriteOutput(2)) 
  Box(0, 0, #SPRITE_W, #SPRITE_H, RGB(255,255,255)) ; Weisse Box 
  StopDrawing()
  
  #Start_X = 300 ; start länge
  #Start_Y = 300 ; start breite
  x = #Start_X
  y = #Start_Y
  
  Restore levelData
  Repeat
    Read levelData
    
      Select levelData 
        Case 1
          DisplaySprite(1,x, y)
          x = x + #SPRITE_W ; Nächstes Sprite in der Zeile 
        Case 2
          DisplaySprite(2,x, y)
          x = x + #SPRITE_W ; Nächstes Sprite in der Zeile
        Case 4
          x = #Start_X ; An den Zeilenanfang zurücksetzen
          y = y + #SPRITE_H  ; Eine Zeile Weiter nach unten
        Case 5
          Break ; Wenn Ende der  Daten erreicht dann raus aus der Schleife.
      EndSelect

  ForEver
    FlipBuffers()
  
  Repeat
    ExamineKeyboard()
  Until KeyboardPushed(#PB_Key_Escape) ; ESC = Ende

EndIf

DataSection:
levelData:
Data.l 1,1,1,1,1,1,1,4
Data.l 1,2,2,2,2,2,1,4
Data.l 1,2,1,2,1,2,1,4               
Data.l 1,2,2,2,2,2,1,4               
Data.l 1,2,1,2,1,2,1,4     
Data.l 1,2,2,2,2,2,1,4   
Data.l 1,1,1,1,1,1,1,5  ; 5 um das das Ende der Daten zu erkennen
EndDataSection