Verwendung von Types

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

stierstier

Betreff: Verwendung von Types

BeitragDi, Okt 11, 2005 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich hab da mal ein paar grundlegende Fragen zu Types.
Hab ein Programm in dem eine Grafik in alle Richtungen bewegt werden kann und dabei animiert wird.
Erst werden alle Bilder die zur Animation notwendig sind in einen Type geladen. Und genau hier meine erste Frage: Ist das sinnvoll?! Aus dem Type wird nie etwas gelöscht und ich hab in einem Tutorial auf blitzbase.de gelesen, dass Types eigentlich nicht für solche statischen Zwecke benützt werden sollen. Aber ich find, dass es so am einfachsten ist oder nicht? Zu der Grafik werden halt noch andere Daten gespeichert, dass man die exakte Bewegung der richtigen Grafik zu ordnen kann.

In einem anderen Type werden dann Eigenschaften der Grafik gespeichert, d.h. Geschwindigkeit und aktuelle Position etc. Ist es in dem Fall sinnvoll Types zu verwenden?

Und da aller guten Dinge drei sind: Ich möchte da jetzt noch ein Objekt einbauen, an dem die Grafik stehen bleibt, wenn man drauf läuft. Also quasi Leveldaten in einem Type?

Ist vielleicht unverständlich geschrieben, aber soll ein Test sein. Ist eigentlich mal für ein kleines Spiel gedacht.

also wär klasse, wenn mir da jemand weiterhelfen könnte

gruss

Justus

BeitragDi, Okt 11, 2005 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Für Animationen sind Types schwachsinnig.

Mach das mit

BlitzBasic: [AUSKLAPPEN]
LoadAnimImage
 

Omenaton_2

BeitragMi, Okt 12, 2005 9:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, für Animierte Grafiken sind Types nicht günstig. Wenn du nur sehr wenige Grafiken hast, reichen einfache Variablen, wen du mehr hast und du flexibel und in kurzem Code sie ansprechen willst, nimm ein DIM.

Die Types sind ideal um die Eigenschaften der Objekte zu speichern. Diese können sich ändern und du kannst mal mehr oder weniger Objekte haben. Die Grafiken, die die Objekte darstellen ändern sich nicht.
Wenn du sehr unterschiedliche Animationen haben willst, mußt du auch die Animationeigenschaften festhalten, wie gewünschter Delay zwischen den Frames und eventuell Loop oder Ping Pong und vergiß nicht die Zeit zu messen und zu speichern, die vergangen ist seit dem letzten Frame abgespielt wurde. Wenn diese Zeit den gewünschten Delay überschreibt, dann ändert sich der Frame zum Nächsten. Wenn du gleichen Delay für alle Animationen haben willst/kannst, dann ist das einfacher, dann kann ein einzelner Variable ohen Type die vergangene Zeit speichern.


Für die Level Daten solltest du unbedingt Type verwenden.
 

Ava

Gast

BeitragMi, Okt 12, 2005 10:21
Antworten mit Zitat
Justus hat Folgendes geschrieben:
Für Animationen sind Types schwachsinnig.

Mach das mit

BlitzBasic: [AUSKLAPPEN]
LoadAnimImage




Schwachsinn? Aha.
Also ich habe es von Anfang an nicht anders gemacht, als mit Types. Was spricht denn auch dagegent? - es ist doch absolut super praktisch! (wie fast alles, was man mit Types löst...), Die Animationsdaten werden am Anfang von einem Skript in eine Type-Liste geladen. Jeder Animations-Klasse ist ein Objekt, zb "Laufen von Gegner Typ A". In diesem Objekt sind dann beispielsweise verschiedene AnimImages für unterschiedliche Richtungen gespeichert, die FrameAnzahl ist gespeichert, Loop oder Ping/pong oder Verzweigung zu einer anderen Animation und soweiter, blahblup. Zb. auch Sounds. Diese Animations-Objekte werden dann später mit dem Spielfiguren-Objekten verlinkt, so dass diese sie immer nur noch an eine Funktion weitergeben brauchen und fertig.

Da ich nun mittlerweile auf BMax umgestiegen bin, habe ich mir dort sogar ein komplettes 2D-Animations-Modul geschrieben. Darin verwende ich 7 miteinander verknüpfte Objektklassen, um sehr komplexe 2D-Sprite-Animationen zu verwalten. Es ist also keines Wegs "Schwachsinn", Types auch für Animationen zu verwenden... *find*
 

BlackTermi

BeitragMi, Okt 12, 2005 12:49
Antworten mit Zitat
Benutzer-Profile anzeigen
es ist schwachsinn...

...wenn man genau weiss wie viele bilder man laden will und wieviele animationen man hat, und alles bereits am anfang eingestellt wird, types machen das alles viel langsamer als z.B. Dims

andererseits, bei spielen, bei denen die anzahl der dateien die geladen werden unterschielich sind, sprich man kann selbst neue raumschiffe hinzufügen oder lvl, oder was weiss ich, dann wäre ein type sinnvoll, ich würde es aber trotzdem immer noch mit dims machen.......
*find*

PS: und ich kann mit types umgehen und benutze sie auch anderweitig Smile
 

Ava

Gast

BeitragMi, Okt 12, 2005 13:47
Antworten mit Zitat
Da ich generell eben nur objektorientiert programmiere, kommt für mich persönlich halt keine andere Lösung in Frage... ^^
 

Klaas

BeitragMi, Okt 12, 2005 14:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Dims sind ungefähr so flexibel wie T-Stahträger ... ich persöhnlich würde mich auch an Types halten. Man hat später einfach mehr Möglichkeiten in seine Programmierung einzugreifen. Auch programmiert man (aus meiner Erfahrung) sehr viel sauberer als mit Dims.

Nehmen kannst du beides ... kommt eigentlich auf den akuten Fall drauf an.
 

BlackTermi

BeitragMi, Okt 12, 2005 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ava hat Folgendes geschrieben:
Da ich generell eben nur objektorientiert programmiere, kommt für mich persönlich halt keine andere Lösung in Frage... ^^




der is gut...

also ich finde die gute mischung machts, dims, banks für speed und types für variable grössen und einen guten aufbau
 

Ava

Gast

BeitragMi, Okt 12, 2005 18:03
Antworten mit Zitat
Ich benutzen durchaus auch Banks und Arrays Smile ... innerhalb meiner Objekte ... *g* ... auch globale, eben als Teil der Struktur ... (BMax) ... und in den vorherigen BlitzVersionen habe ich die wahrscheinlich auch neben den Types verwendet... um meine Objekte in Listen zu verwalten *g* ... und Leveldaten ect. ist natürlich immer noch was anderes...
 

CodeMaster

BeitragMi, Okt 12, 2005 18:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Animationen als Types sollen objektorientiert sein?? Shocked Laughing Da spricht aber ein echter Wannabe Wink
Wenn ich einen Kinofilm drehe, habe ich ja eine ganze Reihe von Bildern (-> zu vergleichen mit Animationen). Diese reihe ich doch alle aneinander an ein Filmband, welches ich dann in eine Spule einwickle - ich wäre ja ganz schön doof, für jedes Bild eine eigene Filmspule zu verwenden *lol*
Und für die jungen Objektorientierugns-Wannabe-Spezialisten, die denken, das Prinzip verstanden zu haben: Das Array, in dem die Bilder der Animation gespeichert sind, ist doch genauso ein Objekt! Und wer jetzt noch die Hardcorevariante will, der kann dieses Arrayobjekt ja in ein Type laden. Dann heißen die Types nicht mehr "Bild 1", "Bild 2" etc., sondern "Animation 1", "Animation 2" etc.
Ist das nicht viel sinnvoller?
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102
 

Klaas

BeitragMi, Okt 12, 2005 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:

Jeder Animations-Klasse ist ein Objekt, zb "Laufen von Gegner Typ A".


Womit sich deine Frage nach dem Sinnvoll wohl erübrigt hätte.

Zudem sind die Arrays intern evtl Objekte jedoch in Blitz nicht als solche zu verwenden.

Blitz3D ist leider nicht im geringsten OOP ... Types sind auch viel mehr mit Structs denn als mit Objekten zu vergleichen!
 

CodeMaster

BeitragMi, Okt 12, 2005 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Klaas hat Folgendes geschrieben:
Womit sich deine Frage nach dem Sinnvoll wohl erübrigt hätte.

Ganz im Gegenteil. Vielleicht ist das Prinzip nicht ganz deutlich geworden: In dem Type kannst du ja nicht nur das Animations-Array speichern, sondern auch Informationen z.B. über die Länge der Animation, evtl. auch zeitliche Animations-Position etc.
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102
 

Klaas

BeitragMi, Okt 12, 2005 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
War etwas missverständlich ausgedrückt.

Ich wollte mit dem Zitat nur darauf hinweisen das Ava genau dies meinte was du als Sinnvoller erachtet hast! Sie es also bereits als sinnvoll erkannt und angewendet hat.
 

Ava

Gast

BeitragDo, Okt 13, 2005 3:39
Antworten mit Zitat
Das Wannabe, ging das an mich, ja?

regaa

BeitragDo, Okt 13, 2005 4:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Sobald ein Bild mehr als 500000 Frames hat wären Types ungünstig. Da wären Dims schneller.

Ansonsten wie Ava schon sagte, gewöhnt euch Types an. Damit werdet ihr in BlitzMax noch mehr konfrontiert.
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net
 

Omenaton_2

Betreff: Re: Verwendung von Types

BeitragDo, Okt 13, 2005 10:07
Antworten mit Zitat
Benutzer-Profile anzeigen
stierstier hat Folgendes geschrieben:

Hab ein Programm in dem eine Grafik in alle Richtungen bewegt werden kann und dabei animiert wird.
Erst werden alle Bilder die zur Animation notwendig sind in einen Type geladen. Und genau hier meine erste Frage: Ist das sinnvoll?! Aus dem Type wird nie etwas gelöscht und ich hab in einem Tutorial auf blitzbase.de gelesen, dass Types eigentlich nicht für solche statischen Zwecke benützt werden sollen.
gruss


Bitte nicht vergessen, worum es hier eigentlich geht. Die Frage war, ob es Sinn macht die Grafiken in ein Type zu laden oder nicht.
Es geht nicht darum, ob Types grundsätzlich toll sind oder nicht, sondern um den Sonderfall Grafiken da rein zu laden.
Ich habe diese Sachen in meinem Programm auf verschiedener Art und Weise gelöst, je nach Bedarf und es funktioniert optimal, wenn die Grafiken wie zum Beispiel animierte Kampfeinheiten in ein DIM eingeladen werden. Bei Spezialeffekten wie Explosionen wo es stark auf Delay und sonstige Sachen ankommt, habe ich ein Type für den einzelnen, nur für die Zeit der Explosion existierendes Objekt. Die Explosion ist ein gutes Beispiel. Die lebt nur ganz kurz. Die passende Grafik wird aber am Anfang in das Programm in ein Dim eingeladen und dann wenn eine Explosion als Type Objekt erschaffen wird, wird diese passende Grafik aus dem Dim wo nur die Grafik drin ist zugewiesen. Wenn die Explosion als Objekt "stirbt", bleibt die Grafik an sich in Dim erhalten und kann beim nächsten Explosion genauso wieder angesprochen werden.

P.S.:

Bitte Ausdrücke wie Schwachsinn nicht mehr benutzen. Das klingt zu unfreundlich und schadet das Klima in den Boards.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group