"objektorientiere" Wegpunkte und Casten?
Übersicht

![]() |
M0rgensternBetreff: "objektorientiere" Wegpunkte und Casten? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey Leute.
Ich bin grade dabei meine Wegpunkte testweise zu erweitern. Momentan ist es einfach nur eine Liste, also ein gerichteter Graph. Später soll es einfach ein Netzwerk, also ein ungerichteter Graph sein. Das ganze so umzubauen ist kein Problem (die Nachbarn einfach als Array speichern). Das Problem liegt er bei dem Gegner: Ich hab momentan das Problem, dass wenn ich einen Wegpunkt lösche auf er grade zusteuert, der Gegner wieder den ersten wegpunkt in der Liste ansteuert. Ich will aber, dass er den Wegpunkt ansteuert, der eigentlich hinter dem gelöschten liegt. Das wäre auch nicht das Problem einfach zwei bis drei Wegpunkte in einem Array in der Gegnerklasse zu speichern. ABER: Ich habe schon ein wenig weiter gedacht. Was ist, wenn der Spieler auch irgendwann als Ziel gesehen wird? Der hat ja keinen Nachfolger etc. Momentan ist das "Goal" Attribut des Gegners vom Typ "Object". Das heißt ich muss so schon wie verrückt Casten. Die X Und Y Koordinaten abzurufen ist kein Problem. Meine Klassen habe dazu funktionen die überall den gleichen Namen haben. Jetzt meine Frage: Wäre es sinnvoll einfach ein Array im Gegner anzulegen mit Zielpunkten vom Typ "object" und dann alles zu Casten? Oder gibt es eine schönere/bessere alternative? Wenn nein, wie ließe es sich mit dem Casten am besten umsetzen, so dass möglichst keine Probleme auftreten? Wäre super, wenn ihr da ein paar Ansätze oder so zu hättet. Lg, M0rgenstern |
||
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Könnte sein, dass ich dein Problem nicht richtig verstanden habe, aber warum nimmst du Object? Du könntest doch dafür eine Waypoint-Klasse anlegen. In die packst du dann alles rein, was der Gegner zum Ansteuern des Punktes braucht und leitest deinen Spieler etc. davon ab. | ||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
FireballFlame, du verstehst das falsch.
Durch deine Aussage nehme ich mal an, dass du kein BlitzMax hast. Von Object direkt gibt es nämlich keine Objekte. ![]() Es ist nur so, dass er Ziel-Objekte von verschiedenen Typen in einem Field speichert. Daher kann er die Referenz nur als Object deklarieren, da jede Klasse Object erweitert. Mit dem Casten, welches M0rgenstern anspricht, prüft man dann den genauen Typ des Objekts. Nun zum Problem: Wie wäre es mit einer speziellen Ziel-Klasse, welche die nötigen Informationen über das Ziel enthält? Die wäre unabhängig von der den einzelnen Objekten, die anvisiert werden. Die Informationen zum Ziel werden vom Ziel aus aktualisiert. Wenn es zerstört wird, wird das Zielobjekt als ungültig markiert und, wenn es dann irgendwo als aktuelles Ziel steht, wird das nächste Ziel aus der Liste geholt und stattdessen bearbeitet. mfG mpmxyz P.S.: M0rgenstern, der Text vor deinen Fragen ist ein bischen schwammig formuliert. Ist da noch ein Problem oder hat sich das erledigt? |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, ich hab mit Xaymar im ICQ drüber geredet und bin inziwschen zu einer Lösung gekommen.
Dass die Waypoints verschwinden können ist ja nur im Editor, bzw im Testlabor so. Später im Spiel sollte das ja nicht passieren^^ Aber es funktioniert jetzt alles. Den Spieler als mögliches Ziel einzufügen, war nur ca. 7 Zeilen Code im Endeffekt mehr. Die Waypoints sind durch WaypointConnections, eine extra Klasse, verlinkt. Wenn ich es nochmal neu geschrieben habe um endgültig im Spiel einzufügen werde ich das Waypointsystem im Codearchiv bereitstellen und ein kleines Tutorial darüber schreiben. Damit andere Anfänger vielleicht weniger Probleme haben... Ist schließlich mein 3. (oder 4.?) Ansatz. Hat sich also erledigt^^ Lg, M0rgenstern |
||
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
mpmxyz hat Folgendes geschrieben: FireballFlame, du verstehst das falsch.
Gleichfalls, ich habe sehr wohl BlitzMax Durch deine Aussage nehme ich mal an, dass du kein BlitzMax hast. ![]() mpmxyz hat Folgendes geschrieben: Von Object direkt gibt es nämlich keine Objekte. Das ist falsch; er kann sie als alles deklarieren, was er will, solange das, was er dann reinsteckt, von dieser Klasse abgeleitet ist. Was ich wissen wollte, ist, warum er denn überhaupt casten muss.
![]() Es ist nur so, dass er Ziel-Objekte von verschiedenen Typen in einem Field speichert. Daher kann er die Referenz nur als Object deklarieren, da jede Klasse Object erweitert. Mit dem Casten, welches M0rgenstern anspricht, prüft man dann den genauen Typ des Objekts. mpmxyz hat Folgendes geschrieben: Nun zum Problem:
Das habe ich ihm im Grunde auch vorgeschlagen, oder?
Wie wäre es mit einer speziellen Ziel-Klasse, welche die nötigen Informationen über das Ziel enthält? Die wäre unabhängig von der den einzelnen Objekten, die anvisiert werden. |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group