Bewegung auf Iso-Map - Wie mach ich das am besten dynamisch?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Blood Brother

Betreff: Bewegung auf Iso-Map - Wie mach ich das am besten dynamisch?

BeitragSo, Jan 16, 2005 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Servus,

Ich möchte ein Rundenbasiertes Action RPG (ähnlich Heroquest (Brettspiel,falls das noch jemand kennt...)) coden.
Soweit so gut.
Das ganze wird in iso perspektive (diamond Map) dargestellt.
Die Bewegung von einem Tile auf ein anderes funktioniert soweit auch, allerdings sehr umständlich.
Und da liegt jetzt mein Problem: Wie kann ich die Bewegung Dynamisch gestallten? Also figur X soll zu Tile XY laufen. Am besten mit einem Befehl. Da das ganze rundenbasiert ist, bewegt kann sich logischerweise immer nur eine Figur gleichzeitig bewegen.
Ich will keine kompletten Codes. Vorschläge zum Aufbau mit Functions (welche Parameter, was soll sie machen) oder pseudocode würden mir schon sehr weiterhelfen.

Danke schonmal, ich hoffe ihr habt verstanden was ich möchte Very Happy

Gruß

Blood Brother

SpionAtom

BeitragMo, Jan 17, 2005 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wenn du mehrere Figuren gleichzeitig bewegen willst, dann brauchst du Schleifen. Auch wäre es angebracht TYPEs zu verwenden. Z.B. so:

Type Figur
Field x
Field y
Field nachX
Field nachY
Field status
End Type

Global F.Figur

F.Figur = New Figur()
.
.
.
.
(Dann erstellst du deine Sachen)
.
.
.
.
.
.
.


Function BewegeFiguren()

For F.Figur = Each Figur

....
...
...
Next

End Function



Falls ich dich richtig verstanden habe, sollte das ungefähr ablaufen. Schreib mal, ob dir das hilft.
Tschau

SpionAtom

BeitragMo, Jan 17, 2005 14:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry, dass ich nochmal schreibe, aber ich habe gerade dein Problem erst richtig verstanden. Such mal in der Hilfe nach Wegfindung. So bekommst du nicht nur den Bewegungspfad, sondern den kürzesten obendrein. Leider hast du das Problem, dass du die etwas selteneren vorkommenden sechseckigen Tiles benutzt. Naja, musst du halt durch
Laughing
 

Blood Brother

BeitragMo, Jan 17, 2005 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
schade, ich glaub du hast mein problem nicht richtig verstanden Sad

wie ich meine Figur bewege ist mir klar. Wie ich types verwende ist mir auch klar. Mir geht es jetzt darum, dass ich meine Engine
1. mit möglichst wenig globalen variablen aufbaue
2. die functions möglichst in sich abgeschlossen sind.

mein problem liegt jetzt darin, wie ich mit einer oder mehreren functions die bewegung (pathfinding erstmal außenvor, werd ich mich aber noch mit beschäftigen müssen) von allen Figuren möglichst einfach koordiniere.
ein funktionsaufruf sollte in etwa so aussehen:
Bewegefigur(figur_id,von tile xy, nach tile xy)
die laufanimation soll den weiteren programm ablauf aber nicht unterbrechen...

ich hab also lediglich ein problem damit, wie ich die engine mit ihren funktionsaufrufen aufbaue, nicht mit dem programmieren selber.

Gruß

Blood Brother

SpionAtom

BeitragDi, Jan 18, 2005 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich dachte immer, dass die Einfachheit, ein RUNDENBASIERTES Spiel zu machen, immer darin bestünde, dass man mehrere Dinge nicht gleichzeitig machen braucht. Du aber willst dieses.

Kennst du Datenstrukturen, wie Stacks oder Queues oder Listen(=Types).
Ja Types kennst du.
Mach dir doch einen Type und eine Funktion, die jeden Spieler um ein Feld in Richtung Ziel schickt. Diese Funktion wird so lange wiederholt, bis alle am Ziel ist Wink . Ist ein Spieler am Ziel angekommen, löscht du ihn aus der Bewegen-Routine, fährst aber mit den anderen fort. Ich hab leider gerad kein BlitzBasic zur Hand, deswegen kann ich auch im Moment nicht proggen.

Gruß
Spion
 

Blood Brother

BeitragDi, Jan 18, 2005 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, die idee mit dem weiteren Type war gut. Funktioniert Smile

SpionAtom

BeitragDi, Jan 18, 2005 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ehrlich? Cool!
Dann schick mir mal irgendwann ein Ergebnis oder veröffentliche es.

Falls es nicht allzu groß ist:
Mail an tdpb@gmx.de

wäre echt nett.
Bis denne
 

Blood Brother

BeitragDi, Jan 18, 2005 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich irgendwann mal wirklich was vorzeigbares hab, werd ich es hier unter projekte veröffentlichen.

Das was ich bisher habe ist nix spektakuläres. Es wird lediglich die Iso Map gezeichnet und man kann eine figur darauf laufen lassen (4 richtungen, mehr wird nicht benötigt).
Das schöne an dem Bewegungscode ist jetzt halt, dass ich einfach nur das Ziel Tile, mit ID der zu bewegenden Figur an eine Funktion übergebe, et voila, die figur bewegt sich mittels eines einzigen befehls dahin, wo se hinsoll Very Happy und das ganze auch noch ohne globale variablen sondern nur mit einem Type.

Klip

BeitragDi, Jan 18, 2005 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Klingt schlüssig.

Ein solcher Denkansatz ist für mich ebenfalls interessant, danke.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group