Ich geb dir mal einen Crashkurs in Sachen Sprite and Screen.
Sprites
Sprites sind Bilder die du auf einen Screen (Vollbild) bzw. windowedScreen (ähnlich wie Vollbild, nur eben in einem Fenster) darstellen kannst. Jedes hat ein Nummer die größer/gleich 0 ist. An dieser Nummer, auch ID genannt, kann das Sprite eindeutig erkannt werden. Ein Sprite kann beliebig häufig auf einem Bild vorkommen. Man muss nicht für jedes Haus ein neues Sprite laden, wenn alle gleich aussehen.
Sprites können übringends auch eine Transparente Farbe haben. Standardmäßig ist dies Schwarz. Das heißt immer wenn du mit DisplayTransparentSprite() ein Bild anzeigst, wird alles was im Normalfalls schwarz wäre nicht angezeigt. Bei DisplaySprite() entfällt dieser Effeckt.
Screen
Ein Screen ist, wie du sicher erkannt hast ein schwarzer Bildschirm. Das ist vollkommen richtig so, solange du noch nichts mit ihm machst. Bei Screens musst du übringends aufpassen, das die Auflösung die du verwendest auch von deinem Bildschrim unterstüzt wird.
Screens arbeitem mit einem so genannten doublebuffer System. Das heißt du hast in wahrheit zwei Bildschirme und nicht einen. Einer wird angezeigt und auf dem anderen baust du das nächste Bild auf. Man kann sich das wie zwei Tafeln vorstellen. Eine zeigst du zum Publikum und auf der anderen bereitest du das nächste Schaubild vor. Wenn du jetzt die Tafeln vertauscht, musst du sie natürlich sauber machen, sonst wäre ja noch das alte Bild drauf. In der Realität muss man mühsam mit einem Schwamm wischen, in PureBasic reicht ClearScreen().
Bei ClearScreen() musst du die Farbe angeben mit die der Bildschirm gefüllt wird. Dies geschieht häufig mit ClearScreen(rgb(Rot,Blau,Grün)). Für Rot, Blau und Grün musst du dann nurnoch die Farbwerte eingeben.
Jetzt ist die Tafel sauber und kann bemalt werden. Dies kannst du, wie du schon festgestellt hast mit DisplaySprite() bzw. DisplayTransparentSprite() machen (siehe oben). Wenn du damit fertig bist musst du die Tafeln bzw. Bildschirme (auch Buffer genannt) wieder fertauschen. Dafür ist in PureBasic FlipBuffers() zuständig. Man könnte vereinfacht sagen, das FlipBuffers() deine Bilder anzeigt.
Beispiel
Code: Alles auswählen
;Die Init... Befehle werden immer am Anfang aufgerufen.
InitSprite()
InitKeyboard()
OpenScreen(1024,768,32,"Stadt") ;Den Bildschirm öffnet man am
;besten so früh wie möglich
;Dannach lädt man für gewöhnlich seine Sprites usw. Wichtig ist
;das man die Sprites erst nach OpenScreen() ladt, da es sonst
;zu Fehlern kommt.
LoadSprite(0,"Haus.bmp")
;WICHTIG: DisplaySprite() und DisplayTransparentSprite() haben nichts
;außerhalb der Folgenden Schleife zu suchen, da sie sonst nur 1-mal
;ganz kurz angezeigt werden.
Repeat
;Diese Abfrage kannst du weglassen, sie erleichter dir aber später
;das Leben erheblich, wenn du mit 2ddrawing arbeitest.
If IsScreen()
ClearScreen(RGB(0,0,255)) ;Wir haben jetzt einen Blauen Bildschirm
ExamineKeyboard()
;WICHTIG: Baue immer eine Möglichkeit ein, dein Programm zu beenden.
;Das geht es viel leichter dein Programm zu beenden.
If KeyboardPushed(#PB_Key_Escape)
End
EndIf
;Hier zeigen wir dann das an, was später zu sehen sein soll.
DisplayTransparentSprite(0,400,500)
EndIf
;Wir vertasuchen unsere beiden Bildschirme
;Lässt du diesen Befehl weg, meinst Windows dein Programm sei abgestürzt
FlipBuffers()
ForEver