Wie lädt man ein Sprite?
Code: Alles auswählen
c:\projekt\Source.pb
c:\projekt\gfx\bild.bmp
;----
LoadSprite(0,"gfx\bild.bmp")
Vielen Dank! Ich habe jetzt direkt zum Programm PureBasic einen Ordner mit dem Namen "Bilder" erstellt und in diesen Ordner das Bild "Fass1.bmp" hineinkopiert. Mit dem Pfad
läßt sich nun tatsächlich das Bild laden, (wenngleich das Faß zwar doppelt auf dem Bildschirm ist, aber das ist dann das nächste Problem). Jetzt meine Frage: Wie muß ich obigen Pfad umschreiben, damit das mit dem
funktioniert? Danke.
PB42
Code: Alles auswählen
LoadSprite(0,"C:\Programme\PureBasic\Bilder\Fass1.bmp",0)
läßt sich nun tatsächlich das Bild laden, (wenngleich das Faß zwar doppelt auf dem Bildschirm ist, aber das ist dann das nächste Problem). Jetzt meine Frage: Wie muß ich obigen Pfad umschreiben, damit das mit dem
Code: Alles auswählen
LoadSprite(0,"gfx\bild.bmp",0)
PB42
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)
Der Code lautet:
So, und dann wird man einfach stehen gelassen wie der Ochs vorm Berg und kann nichts damit anfangen, denn ich kriege da nur dann ein bmp.-Bild rein, wenn ich bei C:\ anfange und dann einen ganzen Pfad angebe, was natürlich den Nachteil hat, daß dann ein Spiel immer nur auf meinem eigenen Rechner laufen kann. Aber finde es super toll, daß man hier Hilfe bekommt und daß man selbst nachts um 3 Uhr noch schnell Antwort bekommt! Also dann schieß mal los! Danke.
PB42
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)
Der Code lautet:
Code: Alles auswählen
If InitSprite() = 0 ; Wenn wir die Sprite Funktion nicht initialisieren koennen,
MessageRequester("Fehler","Konnte dx nicht finden",0) ; wird ein Fehler gemeldet, der die moegliche Ursache ausgibt.
EndIf ; Ende der Abfrage
; Nun wollen wir auch die Escape Taste benutzen. Das uebernimmt nun auch DirectX (DirectInput).
If InitKeyboard()=0 ; Wenn wir die Keyboard Funktion nicht initialisieren koennen,
MessageRequester("Fehler","Konnte dx nicht finden",0) ; wird ein Fehler gemeldet, der die moegliche Ursache ausgibt.
EndIf ; Ende der Abfrage
; Jetzt wollen wir den Vollbild Modus erstellen.
If OpenScreen(800,600,32,"Vollbild") = 0 ; Wenn "Oeffne ein Vollbild" aus ist,
MessageRequester("Fehler","Konnte kein Vollbild erstellen ",0) ; wird eine Fehlermeldung ausgegeben.
EndIf ; Ende der Abfrage
LoadSprite(0,"files\sprite.bmp",0) ; Wir laden das Sprite (Bild).
position_x = 0
position_y = 0
Repeat ; In der Schleife werden die ganzen Aktionen durchgefuehrt...
FlipBuffers() ; Wir flippen den Buffer.
ClearScreen(0,255,0) ; Wir "saeubern" den Screen mit einer gruenen Farbe.
ExamineKeyboard() ; Um Keyboard Tasten funktionstuechtig zu machen, MUSS diese Funktion davor stehen.
If KeyboardPushed(#PB_Key_Right) ; Wenn die rechte Pfeiltaste gedrueckt wird,
position_x + 5 ; erhoehen wir den Wert der position_x um 5. D.h. wir verschieben unser Sprite nach rechts.
If position_x > 700 ; Wenn position_x groesser als 700 ist - also ueber den Bildschirm Rand geht,
position_x = 700 ; stoppen wir das Sprite.
EndIf ; Ende der KeyboardPushed Abfrage.
EndIf ; Ende der Abgrenzungsabfrage.
If KeyboardPushed(#PB_Key_Left) ; Wenn die linke Pfeiltaste gedrueckt wird,
position_x - 5 ; ziehen wir vom Wert der postion_x 5 ab. D.h. wir verschieben unser Sprite nach links.
If position_x < 0 ; Wenn position_x kleiner als 0 ist - also ueber den Bildschirm Rand geht,
position_x = 0 ; stoppen wir das Sprite.
EndIf ; Ende der KeyboardPushed Abfrage.
EndIf ; Ende der Abgrenzungsabfrage.
If KeyboardPushed(#PB_Key_Up) ; Wenn die obere Pfeiltaste gedrueckt wird,
position_y - 5 ; ziehen wir vom Wert der postion_y 5 ab. D.h. wir verschieben unser Sprite nach oben.
If position_y < 0 ; Wenn position_y kleiner als 0 ist - also ueber den Bildschirm Rand geht,
position_y = 0 ; stoppen wir das Sprite.
EndIf ; Ende der KeyboardPushed Abfrage.
EndIf ; Ende der Abgrenzungsabfrage.
If KeyboardPushed(#PB_Key_Down) ; Wenn die untere Pfeiltaste gedrueckt wird,
position_y + 5 ; erhoehen wir den Wert der postion_x um 5. D.h. wir verschieben unser Sprite nach unten.
If position_y > 500 ; Wenn position_x groesser als 500 ist - also ueber den Bildschirm Rand geht,
position_y = 500 ; stoppen wir das Sprite.
EndIf ; Ende der KeyboardPushed Abfrage.
EndIf ; Ende der Abgrenzungsabfrage.
DisplayTransparentSprite(0,position_x,position_y) ; Wir zeichnen ein Sprite mit der Farbe schwarz als tranparent und uebergeben ihm die beiden Bewegungsvariablen
If KeyboardPushed(#PB_Key_Escape) ; Wenn die Taste Escape gedrueckt wird,
End ; wird das Programm beendet.
EndIf ; Ende der Abfrage
ForEver ; Unendlicher Schleifendurchlauf
PB42
Zuletzt geändert von PB42 am 16.10.2005 13:39, insgesamt 1-mal geändert.
Naja du koenntest ja immer noch selber malen :PPB42 hat geschrieben:Mein Beitrag von eben zeigt nur, daß ich's immernoch nicht verstanden habe, dann kann ich eben keine Spiele programmieren.
PB42
Mal ganz von vorne .
Du startest deine IDE , tippst dort deine Zeilen ein ,
speicherst diese Datei unter C:\test.pb ab und erstellst
unter C:\ einen Ordner mit dem Namen GFX. Jetzt
kopierst du das Bild in den eben erstellten Ordner und
startest test.pb.
Speicher das mal unter
C:\Programme\PureBasic\Examples\Sources\Data
ab
dann gehts also wo ist dein problem?
C:\Programme\PureBasic\Examples\Sources\Data
ab
Code: Alles auswählen
If InitSprite() = 0 ; Wenn wir die Sprite Funktion nicht initialisieren koennen,
MessageRequester("Fehler","Konnte dx nicht finden",0) ; wird ein Fehler gemeldet, der die moegliche Ursache ausgibt.
EndIf ; Ende der Abfrage
; Nun wollen wir auch die Escape Taste benutzen. Das uebernimmt nun auch DirectX (DirectInput).
If InitKeyboard()=0 ; Wenn wir die Keyboard Funktion nicht initialisieren koennen,
MessageRequester("Fehler","Konnte dx nicht finden",0) ; wird ein Fehler gemeldet, der die moegliche Ursache ausgibt.
EndIf ; Ende der Abfrage
; Jetzt wollen wir den Vollbild Modus erstellen.
If OpenScreen(800,600,32,"Vollbild") = 0 ; Wenn "Oeffne ein Vollbild" aus ist,
MessageRequester("Fehler","Konnte kein Vollbild erstellen ",0) ; wird eine Fehlermeldung ausgegeben.
EndIf ; Ende der Abfrage
LoadSprite(0,"drive.bmp",0) ; Wir laden das Sprite (Bild).
position_x = 0
position_y = 0
Repeat ; In der Schleife werden die ganzen Aktionen durchgefuehrt...
FlipBuffers() ; Wir flippen den Buffer.
ClearScreen(0,255,0) ; Wir "saeubern" den Screen mit einer gruenen Farbe.
ExamineKeyboard() ; Um Keyboard Tasten funktionstuechtig zu machen, MUSS diese Funktion davor stehen.
If KeyboardPushed(#PB_Key_Right) ; Wenn die rechte Pfeiltaste gedrueckt wird,
position_x + 5 ; erhoehen wir den Wert der position_x um 5. D.h. wir verschieben unser Sprite nach rechts.
If position_x > 700 ; Wenn position_x groesser als 700 ist - also ueber den Bildschirm Rand geht,
position_x = 700 ; stoppen wir das Sprite.
EndIf ; Ende der KeyboardPushed Abfrage.
EndIf ; Ende der Abgrenzungsabfrage.
If KeyboardPushed(#PB_Key_Left) ; Wenn die linke Pfeiltaste gedrueckt wird,
position_x - 5 ; ziehen wir vom Wert der postion_x 5 ab. D.h. wir verschieben unser Sprite nach links.
If position_x < 0 ; Wenn position_x kleiner als 0 ist - also ueber den Bildschirm Rand geht,
position_x = 0 ; stoppen wir das Sprite.
EndIf ; Ende der KeyboardPushed Abfrage.
EndIf ; Ende der Abgrenzungsabfrage.
If KeyboardPushed(#PB_Key_Up) ; Wenn die obere Pfeiltaste gedrueckt wird,
position_y - 5 ; ziehen wir vom Wert der postion_y 5 ab. D.h. wir verschieben unser Sprite nach oben.
If position_y < 0 ; Wenn position_y kleiner als 0 ist - also ueber den Bildschirm Rand geht,
position_y = 0 ; stoppen wir das Sprite.
EndIf ; Ende der KeyboardPushed Abfrage.
EndIf ; Ende der Abgrenzungsabfrage.
If KeyboardPushed(#PB_Key_Down) ; Wenn die untere Pfeiltaste gedrueckt wird,
position_y + 5 ; erhoehen wir den Wert der postion_x um 5. D.h. wir verschieben unser Sprite nach unten.
If position_y > 500 ; Wenn position_x groesser als 500 ist - also ueber den Bildschirm Rand geht,
position_y = 500 ; stoppen wir das Sprite.
EndIf ; Ende der KeyboardPushed Abfrage.
EndIf ; Ende der Abgrenzungsabfrage.
DisplayTransparentSprite(0,position_x,position_y) ; Wir zeichnen ein Sprite mit der Farbe schwarz als tranparent und uebergeben ihm die beiden Bewegungsvariablen
If KeyboardPushed(#PB_Key_Escape) ; Wenn die Taste Escape gedrueckt wird,
End ; wird das Programm beendet.
EndIf ; Ende der Abfrage
ForEver
Purebasic 5.0 32bit und 64 bit
I'm back from hell
I'm back from hell
Das von PB mitgelieferte Beispielprogramm greift ja auf den Ordner gfx zu, wenn das Sprite "gfx\Fass1.bmp" geladen wird, dann sollte man doch meinen, daß das genauso funktioniert, wenn ich in einem eigenen Code "gfx\Fass1.bmp" laden will. Genau das geht aber nicht und dann liegt das auch nicht an mir. Trotzdem Danke für die Mühe.
Ich mache mir jetzt Mittagessen. Mahlzeit.
PB42
Ich mache mir jetzt Mittagessen. Mahlzeit.
PB42
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Nein, denn dein Code/Program ist nicht in dem Ordner ÜBER gfx\ gespeichert. Du kannst auch ganz einfach den Ordner gfx\ dorthin kopieren wo dein Code abgespeichert ist.PB42 hat geschrieben:dann sollte man doch meinen, daß das genauso funktioniert, wenn ich in einem eigenen Code "gfx\Fass1.bmp" laden will.
[EDIT]
Kaum zu glauben, aber genau das Problem hatte ich mit 12 auch.
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.