Code für Animationen in PB3.3

Anfängerfragen zum Programmieren mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

dieser befehl versucht ein bmp-file von der platte zu laden.
der name des files wird zusammengesetzt aus dem begriff "tmpsprite" und einer Zahl.
die Zahl ist deine schleifenvariable i plus eins dazu.
vorangestellt wird mit TempDir$ ein verzeichnisname, hier ist der leer.

also sind die namen die er versucht zu laden
"tmpsprite1.bmp", "tmpsprite2.bmp", "tmpsprite3.bmp", "tmpsprite4.bmp"

..wobei ich mich frage, wieso die fehlen können, die werden doch unmittelbar vorher gespeichert,
und wieso die überhaupt gespeichert werden sollen, wenn sie eh erzeugt werden.

werden denn die anderen sprites korrekt geladen?

dann würd ich den kram mit den on-the-fly erzeugten sprites und deren saven/laden einfach mal rausnehmen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Kann ihm nicht jemand erklären, wie er die PB 4.x DEMO zum Laufen bekommt /:->

@Pokémon-Freund, nimm dir mal ne Auszeit.

Such Beispiele in der realen Welt, die dir das Verständnis für die Thematik näher bringen.

Nimm dir einen kleinen Block mit Klebzetteln. Werbezettelchen oder so etwas.

Malste drauf einen Punkt. Nimmst die nächste Seite, schaust ein bisschen durch, und malst den Punkt etwas daneben auf das drüber liegende Blatt ... und das wiederholst du ein paar mal.

Nun hast du eine kleine Animation: Der springende Punkt

Jedes Blatt ist eine BMP-Datei mit einem Dateinamen.

Das Erste Blatt hat den Namen: Blatt_01.bmp
Das nächste Blatt_02.bmp ...

Code: Alles auswählen

OpenConsole()
Pfad$="C:\F\Sprites\"
For i=1 to 75
  Name$="Blatt_"+RSet(Str(i),2,"0")+".bmp"
  PrintN(Pfad$+Name$) 
  ; HIER SPRITES LADEN
Next
Input()
CloseConsole()
Bei Pfad$ legst du deinen Ornder fest in dem alle deine Bilder sein müssen.

Beim Laden eines Sprites heißt es dann:

LoadSprite(i, Pfad$ + Name$)

...

Natürlich musst du auch hier wieder erst

deine Grafikumgebung aufrufen. [ OpenScreen, InitSprites, Init ... ]



Die Zählervariable "i" ist gleichzusetzen mit der Seitenzahl in dem kleinen Block, wo du auf jedes Blatt etwas anderes gezeichnet hast.

Wenn jemand sagt: Öffne bitte das Buch auf Seite 214
Diese Seite wurde aber herausgerissen, oder nicht gedruckt, oder ist nur in einem anderen Buch vorhanden ... dann wirst du ja auch sagen:
Die Seite gibt es nicht.

Und um das zu verhindern, darfst du nur Seitenzahlen ansagen, die es auch gibt. Oder musst halt dem entsprechend die Seiten/Bilder/Dateien auf deinem Rechner erstellen.

Hoffe, es hilft dir weiter. Versuch, die Zusammenhänge zu verstehen.

Code: Alles auswählen

OpenConsole() 
Buch$="C:\F\Sprites\" 
For Seite=1 to 75 
  Name$="Blatt_"+RSet(Str(Seite),2,"0")+".bmp" 
  PrintN(Buch$+Name$) 
  IF FileSize(Buch$+Name$)=-1
    PrintN(" ... Datei ist nicht vorhanden")
  EndIf
  ; HIER SPRITES LADEN 
Next 
Input() 
CloseConsole() 
:allright:
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Xaby hat geschrieben:@Pokémon-Freund, nimm dir mal ne Auszeit.
...im Gesamtzusammenhang... :lol: :mrgreen: :allright:
(SCNR)

@Topic: Bist du dir sicher, dass du überhaupt verstanden hast, was du da machst? Ich habe den Eindruck, dass du ziemlich im Dunkeln tappst, und noch nicht so wirklich verstanden hast, wie Programmierung überhaupt funktioniert.

Das soll keinesfalls eine Beleidigung sein, aber ist ein gut-gemeinter Hinweis: Schau dir erstmal an, wie Programmierung genau funktioniert, und probiere aus, wie FOR-Schleifen funktionieren. Und wie Variablen aussehen, und wie man Integer/Longs zusammen mit Strings kombiniert, und was dabei herauskommt.

Sofort mit Sprites anzufangen, empfinde ich als...nunja. Das ist ein wenig so wie eine Boing747, die versucht ohne Startbahn abzuheben, also eine Art Senkrechtstart ohne horizontale Propeller ;)

Sieh das nicht als Bewertung oder Diskriminierung an, sondern als gut gemeinten Rat- es ist schlimm, wenn man anfangs so richtig garkeine Idee hat, wie sowas funktioniert, und dann an solchen Aufgaben scheitert. Das macht schrecklich depressiv- vor Allem in der Programmierung. Erst, wenn man selber verstanden hat, was ein Befehl wirklich macht, ist es sinnvoll ihn in einen Code einzubauen. Auch was Konstanten sind, solltest du dir anschauen.
Klar, wie Stargate so schön sagte: "In PB3.3 geht das", aber das wird nirgendwo so praktiziert, und bringt nur Verwirrung (Also das mit dem Konstanten).

Ich denke, wenn du den Zusammenhang von FOR-Schleife zur Variable verstanden hast, und in der Lage bist, einen richtigen Pfad zu erstellen ("Held0.bmp","Held1.bmp", etc), wirst du aus dem Gesamtpaket auch schlauer :)

Gr33tz und keep on coding! Nur nicht aufgeben, sondern strukturiert drangehen :allright:

Gr33tz
Tafkadasom2k5:allright:
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Antworten