Seite 3 von 3

Verfasst: 16.10.2005 15:02
von Danilo
PB42 hat geschrieben:Gerne! Ich habe vor mir ein Tutorial namens Tutorial4 von Bluespeed. Der Pfad lautet:

C:\Dokumente und Einstellungen\Eigene Dateien\PureBasic\PB Tutorial

"PureBasic" ist in dem Pfad nicht das Programm PureBasic, sondern ein Ordner, wo dann wiederum Tutorials drin sind. Im Tutorial4 wird gezeigt, wie man ein Sprite lädt. (Denkste). Da steht dann nach der üblichen Programmeröffnung die Zeile

LoadSprite(0,"files\sprite.bmp",0)
Dein Tutorial heißt also zum Beispiel:

Code: Alles auswählen

C:\Dokumente und Einstellungen\Eigene Dateien\PureBasic\PB Tutorial\Tutorial_4.pb
Der Path "files\sprite.bmp" in LoadSprite ist ein relativer Path,
daß heißt er geht vom Ort der Quellcodedatei aus.

Das Bild für das Sprite muß also den folgenden Pfad haben:

Code: Alles auswählen

C:\Dokumente und Einstellungen\Eigene Dateien\PureBasic\PB Tutorial\files\sprite.bmp
Wenn Du dann den Ordner "PB Tutorials" komplett an eine
andere Stelle verschiebst, funktioniert der Code immernoch,
da Du mit einem relativem Pfad gearbeitet hast.

Relative Pfadangaben gehen vom aktuellen Verzeichniss aus,
und bei Doppelklick Deiner EXE ist das aktuelle Verzeichniss
gleichzeitig das Verzeichniss worin sich die EXE befindet.

Startest Du das Programm allerdings von der Console aus,
und Du bist dort nicht im gleichen Verzeichniss wie die EXE,
dann funktioniert das nicht mehr.

Verfasst: 16.10.2005 15:22
von PB42
Das geht!!! Danke Daniel!!! :allright: :allright: :allright: Ich hab's gleich mehrmals ausprobiert, um das glauben zu können. Und hier ist der Code aus dem Tutorial ab der Stelle, wo ich das Bild eingefügt habe (wo das Programm nach der üblichen Einleitung losgeht):

Code: Alles auswählen

LoadSprite(0,"GFX\Fass1.bmp",0)                                ; Wir laden das Sprite (Bild).

[code]Repeat                                                  ; In der Schleife werden die ganzen Aktionen durchgefuehrt...
  FlipBuffers()                                         ; Wir flippen den Buffer.
  ClearScreen(255,0,0)                                  ; Wir "Saeubern" den Screen mit einer roten Farbe.
  ExamineKeyboard()                                     ; Um Keyboard Tasten funktionstuechtig zu machen, MUSS diese Funktion davor stehen.
  DisplaySprite(0,100,100)                              ; Wir zeichnen ein ganz normales Sprite.
  DisplayTransparentSprite(0,400,100)                   ; Wir zeichnen ein Sprite, das die Farbe schwarz als transparent anerkennt.
  If KeyboardPushed(#PB_Key_Escape)                     ; Wenn die Taste Escape gedrueckt wird,
    End                                                 ; wird das Programm beendet.
  EndIf                                                 ; Ende der Abfrage
ForEver   
[/code]

Wozu der Flipbuffer ist, weiß ich noch nicht, aber kommt deshalb das geladene Bild zweimal nebeneinander auf den Bildschirm?

PB42

Verfasst: 16.10.2005 15:31
von MVXA
Für den Screen gibt es 2 Buffer. Einmal der Buffer, auf dem gerade ge-
zeichnet wird und einmal der Buffer, der gerade auf dem Screen an-
gezeigt wird. Mit FlipBuffer werden diese beiden Buffer vertauscht.

Das ganze verfolgt den Sinn, dass wenn du etwas zeichnest oder eine
Sprite anzeigst, dies nicht sofort passiert, sondern erst, wenn du den
Befehl ausführst. Damit wird das Flakern unterbunden.

Verfasst: 16.10.2005 15:34
von ts-soft
2 Sprites kommen vielleicht deswegen:

Code: Alles auswählen

DisplaySprite(0,100,100)                              ; Wir zeichnen ein ganz normales Sprite.
DisplayTransparentSprite(0,400,100)                   ; Wir zeichnen ein Sprite, das die Farbe schwarz als transparent anerkennt.

Verfasst: 16.10.2005 15:36
von freedimension
Das Bild wird übrigens zweimal dargestellt weil du es zweimal zeichnest, zwar mit unterschiedlichen Funktionen, aber das ist im Endeffekt unerheblich.

Code: Alles auswählen

  DisplaySprite(0,100,100)                              ; Wir zeichnen ein ganz normales Sprite. 
  DisplayTransparentSprite(0,400,100)                   ; Wir zeichnen ein Sprite, das die Farbe schwarz als transparent anerkennt.

Verfasst: 16.10.2005 15:40
von PB42
Vielen Dank für für die Erklärung des Flipbuffers und überhaupt für alle Beiträge in diesem Thread!
PB42 :)