Data Sections

Anfängerfragen zum Programmieren mit PureBasic.
seggl
Beiträge: 17
Registriert: 25.08.2005 16:57

Beitrag 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 
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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?
Bild
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
seggl
Beiträge: 17
Registriert: 25.08.2005 16:57

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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)
a²+b²=mc²
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Beitrag 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
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Benutzeravatar
Eric
Beiträge: 303
Registriert: 05.09.2004 09:50
Wohnort: Göttingen

Beitrag 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 
El_Choni_work: cant't you just spit the binary data to sqlite, as you would spit a hamster into a microwave oven?
* Fangles falls off the chair laughing
Bild
seggl
Beiträge: 17
Registriert: 25.08.2005 16:57

Beitrag 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 
Benutzeravatar
Eric
Beiträge: 303
Registriert: 05.09.2004 09:50
Wohnort: Göttingen

Beitrag von Eric »

seggl hat geschrieben:nur funzt es ebe nicht ganz.
Was funktioniert denn nicht ganz?
Ich habs ja wie gesagt nicht getestet.
El_Choni_work: cant't you just spit the binary data to sqlite, as you would spit a hamster into a microwave oven?
* Fangles falls off the chair laughing
Bild
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Beitrag 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
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Antworten