Seite 2 von 3
Verfasst: 16.10.2005 11:44
von PB42
Kann mir bitte mal jemand ein Beispiel aus seinen eigenen Programmen nennen mit genauen Pfadangaben, damit ich weiß, WOOOO ich das Bild speichern muß und WIEEE ich das dann hinterher im Programm aufrufe? Sonst komme ich nicht weiter. Danke für weitere Hilfe.
PB42
Verfasst: 16.10.2005 12:01
von edel
Code: Alles auswählen
c:\projekt\Source.pb
c:\projekt\gfx\bild.bmp
;----
LoadSprite(0,"gfx\bild.bmp")
Source.pb ist die Datei in der du das Bild laden moechtest.
Verfasst: 16.10.2005 12:22
von PB42
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
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
funktioniert? Danke.
PB42
Verfasst: 16.10.2005 12:47
von PB42
Mein Beitrag von eben zeigt nur, daß ich's immernoch nicht verstanden habe, dann kann ich eben keine Spiele programmieren.
PB42
Verfasst: 16.10.2005 13:03
von roherter
wie wärs wenn du mal deinen code veröffentlichst,vieleicht kann dir ja jemand weiterhelfen und sagen wo der fehler ist!
Verfasst: 16.10.2005 13:36
von 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:
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
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
Verfasst: 16.10.2005 13:37
von edel
PB42 hat geschrieben:Mein Beitrag von eben zeigt nur, daß ich's immernoch nicht verstanden habe, dann kann ich eben keine Spiele programmieren.
PB42
Naja du koenntest ja immer noch selber malen :P
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.
Verfasst: 16.10.2005 13:50
von roherter
Speicher das mal unter
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
dann gehts also wo ist dein problem?
Verfasst: 16.10.2005 14:45
von PB42
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
Verfasst: 16.10.2005 14:49
von DarkDragon
PB42 hat geschrieben:dann sollte man doch meinen, daß das genauso funktioniert, wenn ich in einem eigenen Code "gfx\Fass1.bmp" laden will.
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.
[EDIT]
Kaum zu glauben, aber genau das Problem hatte ich mit 12 auch.