Seite 1 von 1

Point, Plot, Array und Sprite

Verfasst: 19.12.2008 00:37
von spider84
Huhu - kann mir mal wer verraten warum das so nicht klappt?
Das Bild soll 1024x768 groß sein. Wollte Freundin damit Arrays näher bringen...

Code: Alles auswählen

Global x,y
Dim Bildschirm(1023,767)

InitSprite()
InitKeyboard()
OpenScreen(1024,768,16,"blub")

UseJPEGImageDecoder()

LoadSprite(0,"003.jpg")

DisplaySprite(0,0,0)

FlipBuffers()
ClearScreen(0)
StartDrawing(ScreenOutput())
For x=0 To 1023
  For y=0 To 767
    Bildschirm(x,y)=Blue(Point(x,y))
  Next y
Next x
Beep_(440,50)
Repeat
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_All)

For x=0 To 1023
  For y=0 To 767
    Plot(x,y,Bildschirm(x,y))
  Next y
Next x
StopDrawing()
FlipBuffers()
Beep_(440,50)
Repeat
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_All)

Verfasst: 19.12.2008 00:44
von THEEX
Davon ab, das einiges an Deinem Code zu ändern ist, solltest vielleicht mal schreiben, was damit erreichen möchtest...

Verfasst: 19.12.2008 00:50
von Kaeru Gaman
dein erstes flipbuffers ist unnütz, und vor der ersten warteschleife fehlt eins.

deine Point() schleife liest nix aus, weil du direkt vorher den screen löscht.

Verfasst: 19.12.2008 00:52
von STARGÅTE
du stellst das Bild erst da, und löschst aber danach den ganzen Screen

das heißt alle Points die du dann abfragst sind schwarz, also auch das Array, also auch das endbild was du plottest.

also ClearScreen() weg, oder das Drawing auf dem Sprite direkt (SpriteOutput) und nicht auf dem Screen lesen

Verfasst: 19.12.2008 00:56
von Kaeru Gaman
und vor dem plotten solltest du dann vielleicht auch noch mal löschen...

und außerdem bringt das auch nich viel, weil wenn's klappt sieht man auch keinen unterschied.

Verfasst: 19.12.2008 01:02
von THEEX
Ich nehm mal an, Du willst sowas machen, ist aber extrem langsam...

Code: Alles auswählen

If InitSprite() And InitKeyboard() And OpenScreen(1024, 768, 32, "")
  Dim Bildschirm(1027, 767)
  
  UseJPEGImageDecoder()
  If LoadSprite(0, "003.jpg")
    StartDrawing(SpriteOutput(0))
      For x=0 To 1023
        For y=0 To 767
          Bildschirm(x, y) = Blue(Point(x, y))
        Next y
      Next x
    StopDrawing()
  EndIf
    
  Repeat
    ExamineKeyboard()
    
    ClearScreen(0)
      StartDrawing(ScreenOutput())
        For x=0 To 1023
          For y=0 To 767
            Plot(x, y, Bildschirm(x, y))
          Next y
        Next x
      StopDrawing()
    FlipBuffers()
  Until KeyboardPushed(#PB_Key_Escape)
EndIf

Verfasst: 19.12.2008 02:07
von spider84
danke erstmal an die ganzen Beiträge. Das mit dem ClearScreen hatte ich nachträglich (dummerweise an der falschen Stelle) eingefügt, nachdem er mir oft genug einen schwarzen Bildschirm geplottet hat und ich schon überlegt habe ob man Sprites überhaupt vom Bildschirm ablesen kann.
Sollte nur quick&dirty arrays demonstrieren.
So wie es THEEX dann gemacht hat... danke!