"objektorientiere" Wegpunkte und Casten?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

M0rgenstern

Betreff: "objektorientiere" Wegpunkte und Casten?

BeitragDo, Jun 10, 2010 14:27
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Jun 11, 2010 5:19
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Jun 11, 2010 11:29
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Wink
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

BeitragFr, Jun 11, 2010 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Jun 11, 2010 23:37
Antworten mit Zitat
Benutzer-Profile anzeigen
mpmxyz hat Folgendes geschrieben:
FireballFlame, du verstehst das falsch.
Durch deine Aussage nehme ich mal an, dass du kein BlitzMax hast.
Gleichfalls, ich habe sehr wohl BlitzMax Wink

mpmxyz hat Folgendes geschrieben:
Von Object direkt gibt es nämlich keine Objekte. Wink
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.
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.

mpmxyz hat Folgendes geschrieben:
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.
Das habe ich ihm im Grunde auch vorgeschlagen, oder?
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

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group