Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Figuren sollen beim Game nach bestimmten Regeln laufen (https://www.delphipraxis.net/98825-figuren-sollen-beim-game-nach-bestimmten-regeln-laufen.html)

Chrissi91 2. Sep 2007 09:24


Figuren sollen beim Game nach bestimmten Regeln laufen
 
Hi,

ich sitze seit heute früh an meinem 2. 2D-Game. Ich mache mir gerade Gedanken über die Computergegner. Sie sollen durch einen Wald laufen (nur auf den Wegen), sich von einem bestimmten Ort fernhalten und die Tendez haben, an einen bestimmten Ort zu wandern.

Hintergrund: je nach Level soll der Spieler die Coomputergegner einfangen, die aus dem Gefängnis geflohen sind. Logischerweise laufen sie von dem Gefängnis weg. ^^ Nun gibt es eine Stelle, an der sie vom Spieleld verschwinden können. Praktisch ihre Fluchtmöglichkeit. Sie sollen die Tendez haben, dort hinzugehen, aber das nicht von Vorne herein tun. (Also nicht schnur stracks dorthin laufen) Außerdem sollen sie nicht mehrmals den selben Weg laufen.

Es geht mir jetzt nicht um den Code, sondern um eine Idee, wie man das umsetzen könnte. Klar könnte mn die einfach nach Zufall laufen lassen, aber sollte es nciht so extrem sein, dass sie ein Schritt vor, ein Schritt zurück und dann nach rechts gehen. oO

Sollte schon eine gewissen Logik drin sein. :mrgreen:

Hoffe ihr habt ein paaar Ideen für mich. :P

TheAn00bis 2. Sep 2007 10:19

Re: Figuren sollen beim Game nach bestimmten Regeln laufen
 
Hi,

so ganz genau kann ich mir noch nicht vorstellen, wie sie Laufen sollen, aber ich geb dir einfach mal eine Vorstellung davon, wie ich es umsetzen würde.

Ich nehme mal an du hast die Karte als Graphen vorliegen und, dass die Gefangenen nur an einer Stelle aus dem Gefängnis brechen. Dann würde ich alle möglichen Wege zum "Rettungsknoten" berechnen, ohne dass Knoten mehrmals besucht werden dürfen. Wenn du nicht willst, dass die Entflohenen auch zurück in Richtung Gefängnis laufen kannst du ja für jeden Knoten die Entfernung vom Gefängnis berechnen und Wege, bei denen es von einem Knoten höherer Entfernung zu einem Knoten niedrigerer Entfernung geht ausschließen (ich denke mal, dass der Rettungspunkt am weitesten vom Gefängnis entfernt ist?).

Für jeden Gefangenen wählst du jetzt zufällig einen Weg aus. Je nach Schwierigkeitsgrad kannst du die Wahrscheinlichkeit, dass kürzere Wege genommen werden erhöhen, so verschwinden die Gefangenen schneller vom Bildschirm.

Die Gefangenen würden sich so einigermaßen realistisch verhalten, da sie sich nur vom Gefängnis wegbewegen, ein konkretes Ziel haben so nichts doppelt besuchen.

Luckie 2. Sep 2007 11:18

Re: Figuren sollen beim Game nach bestimmten Regeln laufen
 
Eine Lösung könnte der A*-Algorithmus zur Wegfindung sein. Das Spielfeld ist für die Gegner ein Labyrinth mit dem Gefängnis als Startpunkt und de Fluchtmöglichkeit als Zielpunkt. Damit nicht jeder Gegner den gleiuchen Weg nimmt, ist für jeden Gegner das Spielfeld ein anderes Labyrinth.

Chrissi91 2. Sep 2007 12:03

Re: Figuren sollen beim Game nach bestimmten Regeln laufen
 
Hi,


Zitat:

Zitat von Luckie
Damit nicht jeder Gegner den gleiuchen Weg nimmt, ist für jeden Gegner das Spielfeld ein anderes Labyrinth.

Das verstehe ich nicht. Gehen wir erstmal nur von einem Level aus. Die Map wird geladen. Z.B. aus einer TXT-Datei in dem das Spielfeld mit 0, 1, 2 dargestellt ist. 0 Weg, 1 Baum, etc. Nun wird die Map gezeichnet. Jetzt laufen die los, alle vom selben Ort, dem Gefängnis. Sprich ich habe mehrere Gegner, die in 1 Labyrinth sind. Kollisionen sind erstmal nicht das Problem, aber ich verstehe deienn Satz nicht. ^^

Es ist nicht festgelegt, dass der Fluchtweg der Längste ist und ob es 1 oder merere Fluchtwege gibt.

Luckie 2. Sep 2007 12:28

Re: Figuren sollen beim Game nach bestimmten Regeln laufen
 
Der A*-Algorithmus sucht einen Weg in einem Labyrinth. Da mehrer Wege wohl zum Ziel führen, aber alle Gegner den gleichen Algorithmus zur Wegsuche nutzen, werden alle Gegner den gleichen Weg nehmen.


Code:
   
          Weg A
          Weg B
Start    Weg C        Ziel
          Weg D
          Weg E
Um jetzt nicht für jeden Gegner einen eigenen, abgeänderten Algorithmus verwenden zu müssen, blockierts du eben für jeden Gegner alle Wege bis auf einen. So das der erste Gegner nur Weg A nehmen kann, der zweite nur Weg B und soweiter. Du kannst die Wege zum Beispiel einfach mit Bäumen blockieren. Die Labyrinthe der Gegner werden ja sowieso nicht dargestellt. Somit hat jeder Gegner ein, für sich, etwas anders Labyrinth. Wenn jeder Gegner ein Objekt ist, ist das ganze kein Problem. Denn jedes Gegner-Objekt hat eben noch die Eigenschaft Labyrinth.

Luckie 2. Sep 2007 14:19

Re: Figuren sollen beim Game nach bestimmten Regeln laufen
 
Oder, was mach auch machen kann, jeder Gegner hat nicht nur ein Zielpunkt, sondern zufällig verteilte Wegpunkte, die er erst ablaufen muss. Ich glaube, das wäre die einfachere Lösung und sie erscheint mir auch schöner.

Chrissi91 2. Sep 2007 15:59

Re: Figuren sollen beim Game nach bestimmten Regeln laufen
 
Zitat:

Zitat von Luckie
Oder, was mach auch machen kann, jeder Gegner hat nicht nur ein Zielpunkt, sondern zufällig verteilte Wegpunkte, die er erst ablaufen muss. Ich glaube, das wäre die einfachere Lösung und sie erscheint mir auch schöner.

Jepp! Klasse Idee!Werde ich vermutlich so umsetzen. Aber mit dem Algo habe ich jetzt verstanden.

halinchen 3. Sep 2007 14:09

Re: Figuren sollen beim Game nach bestimmten Regeln laufen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi!

Ich weiß, dass man pro Frage einen neuen Thread aufmachen soll. Aber ich denke so ist der Zusammenhang besser.

Im Spiel soll der Gegener sich auf den Spieler zu bewegen. (Im Bild ist das Ziel nicht der Spieler, aber das ist ja im Moment egal)

So richtig hab ich den A* Algorithmus noch nicht kapiert. Geht der jetzt alle Städte durch und guckt dann wo es am kürzesten war. Denn warum geht er erst nach Karlsruhe und dann nimmt er doch den Weg weiter oben von Frankfurt nach Würzburg.

Ich schätze diese Vernetzung, die man im Schema bei Wiki sieht, entspräche den Zellen in meinem Level, welche begehbar sind. Somit bleibe am Start ja nur links. Aber wie kann ich überfliegen, welcher Weg der kürzeste ist? (Dies ist wahrscheinlich die Stelle welche ich im Algo nicht kapiere, also ob der jeden weg durchgeht oder das irgentwie errechnet).

Das Level würde sich auch noch ohne ein komplexeren Algorithmus lösen lassen (einfach in die einzige Richtung gehen, die geht. Wenns nicht geht: Springen) Aber es kann ja auch schwerer werden.

shmia 3. Sep 2007 14:54

Re: Figuren sollen beim Game nach bestimmten Regeln laufen
 
Ich denke, das wäre eher ein Fall für den Ameisenalgorithmus.
Parallel zum Spielfeld existiert eine 2-dimensionale "Geruchskarte".
Jeder Gegner hinterlässt dort seine "Duftspur".
Weitere Gegner bevorzugen Felder, auf denen schon ein Geruch liegt (es sei denn, das Feld wäre schon belegt).
Mit der Zeit werden die Gegner auf regelrechten Strassen laufen.
Wenn ein Gegner sein Fluchtloch erreicht, kann er sich ja zu 5% selbst opfern und zurücklaufen.
Dabei hinterlässt er eine 10-fach stärkere Duftspur und lockt so sein Kollegen an.

halinchen 4. Sep 2007 16:16

Re: Figuren sollen beim Game nach bestimmten Regeln laufen
 
Danke für deine Antwort! :thumb:

Ich hab die erst gar nicht gesehen, da ich gar keine Mail bekommen habe. :wall:

Die Idee ist auch nicht schlecht. Aber bei mir sollen die Gegener nicht auf einen Haufen sein, sondern im Spiel verteilt sein. Das könnte ich eventuell so einbauen, das es als 2-rangiger Faktor in meinem Prinzip geht. (dazu weiter unten)

Erstmal: Ich hab den Absatz über die Heuristik wohl übersehen, da steht das ja drin, dass es nicht jedes Feld durchgeht. Aber ich kapier den A* Algo nicht. (Den Pseudocode auch nicht). Aber ich denke er ist nicht so richtig was für mich. (Zumindest am Anfang nicht, es ist ja das 1. Mal, dass ich eine KI programmieren will)

Ich kann mich (sehr dunkel) daran erinnern, dass es auf so eine Frage schonmal eine Antwort gab: Die 8 Kacheln um mich herum versehe ich mit der Nummer, wie weit entfernt diese vom Ziel entfernt ist. Der Gegner nimmt de Weg wo der Index am kleinsten ist. Bei einer Wand wird's ignoriert. Damit er auch mal weiter weg geht, streiche ich die betretenen Felder für eine Zeit. So sollte der Gegner immerhin einigermassen kleinere Irrwege umgehen können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:08 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz