Gegner Type(s)?
Übersicht

![]() |
MegamagBetreff: Gegner Type(s)? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es geht hier um eine Frage, die ich mir gerade stelle. Soll ich für jeden Gegner einen neuen Type erstellen, oder reicht ein Type mit Namen "Gegner", wo ich dann alle verschiedenen Gegner einbaue? Es geht mir halt um die Einfachheit und um die Performance. Ich weiß nicht, wieviel Speicher so viele verschiedene Types ziehen und man könnte leicht jeden Gegner im SPiel ansprechen mit einer einzigen Schleife, da es ja nur einen Gegner-Type gibt. Allerdings muss es wohl sehr schwierig sein, alle Gegnerverhalten in eine Funktion mit einem Type einzuprogrammieren... Was sagt ihr dazu? | ||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich benutze immer einen Type mit einem Field namens "art" oder "typ". In einer Select...Case-Abfrage werden dann speziefische Aktionen durchgeführt. | ||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mach eine variable für den typ und rufe per select-case je nach typ die entsprechende funktion für das verhalten auf.
edit: Nicdel war schneller. |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jap, hatte ich mir auch so gedacht. Aber stelle dir mal 50 verschiedene Gegner mit Grundverschiedenen Aktionen vor. Würde das nicht ziemlich unübersichtlich werden? | ||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
und 50 Types wären dann wohl übersichtlicher?
Wenn du etwas in dieser größenordnung realisieren möchtest, solltest du eher bmax verwenden, das hat richtige OOP und kann auch vererbungen, was in deinem fall jetzt die ideale lösung wäre |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Aber ich kann weder bmax, noch kann bmax 3D. Außerdem habe ich bereits die Engine für das SPiel fertiggebastelt. Naja, muss ich halt schauen, was übersichtlicher ist. | ||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mehrere Types. Wenn du einen bestimmten Gegner ansprechen willst, müsstest du ja trotzdem noch alle durchgehen. Zum beispiel soll ein gegner leben verlieren, wenn eine Bedingung erfüllt ist:
Code: [AUSKLAPPEN] For G.Gegner=Each Gegner If G\bedingung=1 Then G\life=G\life-1 Next Du müsstest mit deiner Idee schreiben Code: [AUSKLAPPEN] For G.Gegner=First Gegner ;First oder each... <_<
For i=1 to 10 If G\bedingung[i]=1 Then G\life[i]=G\life[i]-1 Next Next Also nicht wirklich vorteilhaft... ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Benutze einfach einen einzigen Type der alle Arten von Objekten enthält.
Welche Arten von Objekten vorhanden sind und ihre statischen Attribute werden in einem zweiten Type gespeichert. z.B. tDef wäre der Type mit Objektdefinitionen tObj wäre dann der Type der alle deine Objekte enthält In tObj gibt es dann eine Referenz auf tDef. Jede Objektdefinition erhält eine eindeutige ID mit der diese identifiziert werden kann. Code: [AUSKLAPPEN] Type tDef Field ID Field img, maxHP, file End Type Type tObj Field def.tDef Field xPos#, yPos#, curHP, aniState End Type tObj Beim Update der Objekte benutzt Du dann Select Case auf die ID um für unterschiedliche Objekte unterschiedliches Verhalten zu programmieren... Für Effekte und Partikel sollte man aber dann einen weiteren Type verwenden. |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich verstehe deine Idee aber nicht so richtig, wie ich es anwenden soll.
Wie muss ich dann die Types ansprechen? Und was für ein Type muss bei einem neuen Gegner erstellt werden? Ich blicke da gerade nicht so durch... |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Types werden ja wie werte in Variablen gespeichert. Nur das hinter den VAriablen nur ein Typename stehen muss, getrennt mit einem Punkt. Und da du mit Filed ja nur Variablen angibst, kannst du auch diese Art von Variablen benutzen. Also wenn du z.B. möchtest (cih nehm das beispiel GUI), dass buttons auf windows gesetz werden. Dann hast du ja den Type windows und den TYpe buttons. Jetzt gibst du einfach bei Bottons ein neues File ein : File w.window. Wenn du jetzt wissen willst, auf welchem Fenster der Button sich befindet, einfach handle.window=button\w. Wenn du auf die Fenstergröße zugreifen möchtest, machst du das so : size = button\w\size_x. Und dann kann window wieder ein Field beihalten, welches auch durch den button abgefragt werden kann usw...
mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe jetzt mal zwei types erstellt:
BlitzBasic: [AUSKLAPPEN] ;Enemy Enemy ist der Type, der die ID der Gegner beinhaltet. Testy ist ein erstellter Testgegner. Hier ist die Create-Funktion: BlitzBasic: [AUSKLAPPEN] Function CreateEnemy(ID,x#,y#,z#,ent) Aber da kommt immer Memory Accsess Violation. Vermutlich wegen dem "t\dat\ID=ID". Aber das müsste doch korrekt sein oder? (vielleicht sollte das mal in Beginners Corner oder so verschoben werden. Ist ja eigentlich keine Allgemein-Diskussion mehr...) |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzBasic: [AUSKLAPPEN] Function CreateEnemy(ID.Enemy,x#,y#,z#,ent) Du musst den Type auch mit angeben, sonst ist's Int und verwirrt BB ![]() Edit2: Streich das Oben... es soll ja Int sein... Aber hast du das Objekt "t\dat"mit "new Enemy" auch erstellt? sonst ist es Null. Edit: Älteres Beispiel |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ihr könnt mich für blöd halten, aber ich versteh's immer noch nicht.
Das ganze ist mir echt zu kompliziert. Egal, wie sehr ich drüber nachdenke, ich kann da keinen klaren Faden fassen. Ich habe echt keine Ahnung wie ich was wo angeben muss, damit das hinhaut. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group