Seite 1 von 2

Grafik ohne externe Dateien aus einer DataSection lesen

Verfasst: 06.03.2005 11:49
von Leo
Für einen Wettbewerb von der PureBasic-Lounge, wo man keine externen Dateien verwenden darf hab ich mir folgende Procedure geschrieben

Code: Alles auswählen

	

;############################################################################# 
;############################################################################# 
;Procedure!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
;############################################################################# 
;############################################################################# 
Procedure GetSpriteFromData(id,*ptr,Zoom) 
    *a.LONG = *ptr 
    Breite = *a\l 
    *a + 4 
    Hoehe = *a\l 
    *a + 4 
    ; Zoom = *a\l 
    ; *a + 4 
    ret = CreateSprite(id,Breite*Zoom+Zoom,Hoehe*Zoom+Zoom) 
    StartDrawing(SpriteOutput(id)) 
    For Y = 0 To Hoehe 
        For X = 0 To Breite 
            Select *a\l 
                Case 0 : Color = RGB(0,0,0)       ;Schwarz 
                Case 1 : Color = RGB(0,0,255)     ;Blau 
                Case 2 : Color = RGB(0,255,0)     ;Grün 
                Case 3 : Color = RGB(255,0,0)     ;Rot 
                Case 4 : Color = RGB(128,128,128) ;Grau 
                ;Farben müssen noch erweitert werden...
            EndSelect 
            Box(X*Zoom,Y*Zoom,Zoom,Zoom,Color) 
            *a + 4 
        Next 
    Next 
    StopDrawing() 
    ProcedureReturn ret 
EndProcedure 

;############################################################################# 
;############################################################################# 
;Beispiel!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
;############################################################################# 
;############################################################################# 
InitSprite() 
InitKeyboard()
#ScrWidth=1024:#ScrHeight=768 
OpenScreen(#ScrWidth,#ScrHeight,32,"Bild ohne externe Dateien!") 

GetSpriteFromData(0,?Bild1,5) 
GetSpriteFromData(1,?Bild2,30) 

Repeat 
    ExamineKeyboard() 
    ClearScreen(0,0,0) 
    
    If KeyboardPushed(1) 
        Quit = #True 
    EndIf 
    
    For X = 0 To #ScrWidth/SpriteWidth(0) 
        For Y = 0 To #ScrHeight/SpriteHeight(0) 
            DisplaySprite(0,X*SpriteWidth(0),Y*SpriteHeight(0)) 
        Next 
    Next 
    DisplaySprite(1,#ScrWidth/2-SpriteWidth(1)/2,#ScrHeight/2-SpriteHeight(1)/2) 
    
    FlipBuffers() 
Until Quit = #True 

DataSection 
Bild1: 
Data.l 9,8 ;Breite,Hoehe 
Data.l 1,1,1,1,1,1,1,1,1,1 
Data.l 1,1,1,1,0,0,1,1,1,1 
Data.l 1,1,1,0,0,0,0,1,1,1 
Data.l 1,1,0,0,0,0,0,0,1,1 
Data.l 1,0,0,0,2,2,0,0,0,1 
Data.l 1,1,0,0,0,0,0,0,1,1 
Data.l 1,1,1,0,0,0,0,1,1,1 
Data.l 1,1,1,1,0,0,1,1,1,1 
Data.l 1,1,1,1,1,1,1,1,1,1 
Bild2: 
Data.l 9,8 ;Breite,Hoehe 
Data.l 4,4,4,4,4,4,4,4,4,4 
Data.l 4,1,1,1,1,1,1,1,1,4 
Data.l 4,1,1,0,3,3,0,1,1,4 
Data.l 4,1,0,0,3,3,0,0,1,4 
Data.l 4,1,3,3,3,3,3,3,1,4 
Data.l 4,1,0,0,3,3,0,0,1,4 
Data.l 4,1,1,0,3,3,0,1,1,4 
Data.l 4,1,1,1,1,1,1,1,1,4 
Data.l 4,4,4,4,4,4,4,4,4,4 
EndDataSection

Verfasst: 06.03.2005 14:40
von CNESM
Hi,

bei mir pasiert da nichts :cry:

Verfasst: 06.03.2005 14:50
von Leo
Wie? Es öffnet sich nicht mal ein Screen?

Verfasst: 06.03.2005 17:31
von Andre
Bei mir läufts, d.h. die Muster und das Logo in der Bildschirmmitte werden angezeigt.

Verfasst: 07.03.2005 21:48
von CNESM
Hi,

habs jetzt mal zu Hause getestet:

Fehlermeldung:

"Error at line 54: InitKeyboard() must be called before use keyboard commands."

Kommt die bei euch nicht?

Verfasst: 07.03.2005 22:17
von SoS
läuft problemlos

CNESM hat geschrieben:Hi,

habs jetzt mal zu Hause getestet:

Fehlermeldung:

"Error at line 54: InitKeyboard() must be called before use keyboard commands."

Kommt die bei euch nicht?
in zeile 47 steht InitKeyboard()

vermutlich schlägt das bei dir fehl ;)

Verfasst: 07.03.2005 23:16
von Hroudtwolf
Saubere Arbeit.
Das erinnert mich an die 80ziger. Als sowas mit DATAs Gang und Gebe war.

Verfasst: 08.03.2005 14:50
von Leo
SoS hat geschrieben:läuft problemlos

CNESM hat geschrieben:Hi,

habs jetzt mal zu Hause getestet:

Fehlermeldung:

"Error at line 54: InitKeyboard() must be called before use keyboard commands."

Kommt die bei euch nicht?
in zeile 47 steht InitKeyboard()

vermutlich schlägt das bei dir fehl ;)
Hehe nein, ich habs vor einem Tag schnell reineditiert, hab gemerkt, dass es fehlt.. komischerweise gehen bei mir die Keyboard Befehle ohne ein Init.

Verfasst: 08.03.2005 18:59
von AndyX
Sehr gut, habs schon auf 100 Farben erweitert. :D Für was sind die #BLA #BLU undsoweiter Konstanten?

Mfg,
AndyX

Verfasst: 08.03.2005 19:08
von Leo
AndyX hat geschrieben:Sehr gut, habs schon auf 100 Farben erweitert. :D Für was sind die #BLA #BLU undsoweiter Konstanten?

Mfg,
AndyX
Thx, Die Konstanten hab ich gemacht, damit man nich 0 sondern #BLA schreiben kann, manchmal vergisst man ja welche Zahl für was steht .. ich fands halt einfach übersichtlicher^^