Optimale Wegberechnung einer KI

Castyll

Aktives Mitglied
Hallo zusammen,

Für meine Seminararbeit will ich nun eine Java-Version von Pacman codieren. So weit läuft alles, nun muss ich jedoch die Ghosts codieren. Wer das Spiel nicht kennt: In der vereinfachten Version gibt es 2 Ghosts. Einer der einfach zufällige Bewegungen im Grid macht und einer der gezielt versucht den Spieler zu verfolgen. Und um letzteren geht es im Moment:
Ich habe mir extra ein mehrdimensionales Array angelegt, welches alle begehbaren Koordinaten abspeichert. Und ich steh grad ein wenig auf dem Schlauch. Wie mach ich es am besten, dass der Ghost den schnellstmöglichen Weg berechnet?
PS: Ich brauche keine Code-Abschnitte aber vielleicht hat ja jemand einen Denkanstoß
 

Castyll

Aktives Mitglied
Hallo @Flown
Danke erstmal. Da die Seminararbeit letztendlich für 2. Semester Studenten gemacht ist, habe ich mich entschieden die banalere Version zu machen:
Code:
if (target is to the left of me):
    move(left);
else
    move(right);

if (target is above me):
    move(up);
else
    move(down);

Meine Frage noch wäre: ich habe eine movePossible Methode, die false returned wenn der Ghost sich nicht in die spezifizierte Richtung bewegen kann. Wenn nun der Spieler nach oben geht, und der Ghost nicht nach oben kann, habe ich mir folgendes gedacht:

Code:
while(SpielerBewegtSichNachOben&&GhostKannNichtOben)
Ghost.move(links) //oder rechts falls nicht möglich

Der Ghost bewegt sich solange links (falls möglich wenn nicht rechts) bis nach oben wieder möglich ist und solange der Spieler sich nach oben bewegt. Wenn der Spieler dann eine Richtungsänderung einschlägt, schlägt der Ghost diese auch wieder ein oder landet wieder in einer Schleife wenn dies nicht möglich. Würdest du das auch so machen oder hättest du einen besseren Weg?
 

Meniskusschaden

Top Contributor
Ich glaube, ich würde das "Geruchsverfahren" einsetzen (ist auch im Link von @Flown enthalten). Das müsste ziemlich einfach zu implementieren sein und man hat auch gleich simple Möglichkeiten, den Schwierigkeitsgrad zu variieren (Intensität des Geruchs bzw. Geschwindigkeit der Geruchsminderung). Außerdem rechne ich mit einem ziemlich plausiblen Verhalten des Geistes (planlos bis er eine Spur findet, danach sehr zielorientiert).
 

Castyll

Aktives Mitglied
Ok Danke dir. Also im Grunde: ghost macht zufällige Bewegungen bis Pacman in seinen "Geruchsradius" kommt. Dann werden die Bewegungen vom Ghost gezielt: d.h. Er verfolgt Pacman, wird eventuell ein wenig schneller
 

Meniskusschaden

Top Contributor
Ja, wobei ich keinen echten Radius nehmen würde, sondern einfach einen initialen Geruchswert auf jeder Position speichern würde, die der Spieler betritt. Bei jedem Takt werden dann sämtliche Geruchswerte etwas reduziert. So bilden sich verblassende Spuren auf den Wegen, denen der Geist gezielt folgen kann, weil größere Geruchswerte auf eine frischere Spur hindeuten.
 

JuKu

Top Contributor
Ja, wobei ich keinen echten Radius nehmen würde, sondern einfach einen initialen Geruchswert auf jeder Position speichern würde, die der Spieler betritt. Bei jedem Takt werden dann sämtliche Geruchswerte etwas reduziert. So bilden sich verblassende Spuren auf den Wegen, denen der Geist gezielt folgen kann, weil größere Geruchswerte auf eine frischere Spur hindeuten.

Das ist echt eine sehr gute Idee!
Ich glaube das wäre auch die sinnvollste Implementation.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Optimale Grafikkarte für Java 3D programmierung? Spiele- und Multimedia-Programmierung 13
S Wegberechnung im 2D-Raum Spiele- und Multimedia-Programmierung 6
YangLee Ausgabe von einer Bewegung bei mehrzeiligen Strings Spiele- und Multimedia-Programmierung 1
E relevanter bereich einer isometrischen karte zeichnen (AffineTransform) Spiele- und Multimedia-Programmierung 0
M Audio Track einer Musik CD abspielen mittels vlcj-Bibliothek Spiele- und Multimedia-Programmierung 0
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
D Programmierung einer Tor-Anzeige Spiele- und Multimedia-Programmierung 8
T Pong Hilfe bei einer Website Spiele- und Multimedia-Programmierung 4
R Einfärben von Gemeinden auf einer Karte Spiele- und Multimedia-Programmierung 14
S ECS: "deep copy" einer Entity-Vorlage Spiele- und Multimedia-Programmierung 9
R Aufruf einer render-Methode Spiele- und Multimedia-Programmierung 12
E A-Stern Algorithmus Problem und Implementierung einer Map Spiele- und Multimedia-Programmierung 6
J Frage zum Einlesen einer .wav in ein byte Array Spiele- und Multimedia-Programmierung 3
J Spielfiguren laufen lassen auf einer html Tabelle mit Hilfe von Servlets Spiele- und Multimedia-Programmierung 2
T Alle Referenzen zu einer Klasse aus Java Bytecode ersetzt, JVM sucht trotzdem diese Klasse Spiele- und Multimedia-Programmierung 1
M Kamera "am Rande einer Kugel bewegen" Spiele- und Multimedia-Programmierung 4
B Den KeyListener in einer JavaFXML Application benutzen Spiele- und Multimedia-Programmierung 2
gamebreiti Index eines Elements einer ArrayList abfragen Spiele- und Multimedia-Programmierung 1
F Das sag mir einer Java ist plattform unabhänig ! Spiele- und Multimedia-Programmierung 10
M Scrolling einer 2D Map Spiele- und Multimedia-Programmierung 8
J In einer While-Schleife auf Event warten Spiele- und Multimedia-Programmierung 3
TheSorm Collision an einer bestimmten Seite eine Rectangles abfragen Spiele- und Multimedia-Programmierung 3
windl Frage zu Airplay und zur Mitarbeit bei einer Mediaanlage Spiele- und Multimedia-Programmierung 0
A Aufbau einer JOGL Anwendung Spiele- und Multimedia-Programmierung 12
L Werte aus einer .yml Datei lesen Spiele- und Multimedia-Programmierung 9
H Java3D - Textur aufs innere einer Sphere mappen Spiele- und Multimedia-Programmierung 9
F Download und Update einer Java-Anwendung Spiele- und Multimedia-Programmierung 10
D Problem beim bewegen einer Figur Spiele- und Multimedia-Programmierung 2
B Video von einer IP kamera Spiele- und Multimedia-Programmierung 5
W Java3D: Eckkoordinaten einer Box herausfinden Spiele- und Multimedia-Programmierung 18
W Rotation aller Objekte einer 3D-Szene Spiele- und Multimedia-Programmierung 8
2 Ein Zufallsweg bzw. Weg in einer 2dim Matrix finden. Spiele- und Multimedia-Programmierung 21
aze Schnittmenge zwischen Linie und einer Area wegschneiden Spiele- und Multimedia-Programmierung 3
A Bild einer Webcam auffangen Spiele- und Multimedia-Programmierung 20
G Ballerkennung aus einer Bilddatei Spiele- und Multimedia-Programmierung 24
B Generierung einer Wertetabelle aus einem Bild Spiele- und Multimedia-Programmierung 3
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5
M Realisierung einer Sichtweise in Java2D Spiele- und Multimedia-Programmierung 3
B String zu Objekt einer eigenen Klasse casten Spiele- und Multimedia-Programmierung 13
H Screenshot einer Graphics2D Anwendung erstellen Spiele- und Multimedia-Programmierung 6
F Simulation einer Magnetischen Flasche Spiele- und Multimedia-Programmierung 17
F Meine Aufgabe: Client-Server am Beispiel einer Implementation eines Tic-Tac-Toe Netzwerkspieles Spiele- und Multimedia-Programmierung 7
J Fehlverhalten einer Spielfigur Spiele- und Multimedia-Programmierung 7
N Jogl Probleme mit dem Buffer beim laden einer Textur Spiele- und Multimedia-Programmierung 2
M Das Frequenzspektrum einer WAV/MP3-Datei anzeigen Spiele- und Multimedia-Programmierung 6
M Rechteck erkennung innerhalb einer Matix Spiele- und Multimedia-Programmierung 4
S Problem beim laden eines Bildes in einer Methode Spiele- und Multimedia-Programmierung 14
E Pinball Abprall an einer schrägen Bande Spiele- und Multimedia-Programmierung 19
0x7F800000 weiß einer wozu ANTLR beim build von JOGL verwendet wird? Spiele- und Multimedia-Programmierung 3
E Hilfe bei einer GUI Programmierung mit Graph Spiele- und Multimedia-Programmierung 30
A Tutorial für die Entwicklung einer Fussball-KI gesucht Spiele- und Multimedia-Programmierung 7
S Rotation relativ zur Rotation einer anderen Transform Group Spiele- und Multimedia-Programmierung 3
A Screenshots von einer Scene erstellen Spiele- und Multimedia-Programmierung 5
G Land aus einer Weltkarte selektieren Spiele- und Multimedia-Programmierung 10
D Kräftesimulation auf einer 2D-Oberfläche Spiele- und Multimedia-Programmierung 5
T Geschwindigkeit einer Animation aendern Spiele- und Multimedia-Programmierung 6
G Ermitteln eines Punktes in einer anderen TransformGroup Spiele- und Multimedia-Programmierung 2
N Background in Java3D ähnlich einer Skybox erzeugen Spiele- und Multimedia-Programmierung 5
H zB Punkte darstellen und mit einer Linier verbinden Spiele- und Multimedia-Programmierung 5
F Darstellung einer tierischen Zelle Spiele- und Multimedia-Programmierung 3
S Text an einer Seite eines Cubes Spiele- und Multimedia-Programmierung 7
F Das SPiel ruckelt nach einer Zeit Spiele- und Multimedia-Programmierung 19
D wieder einer von anfang an. Spiele- und Multimedia-Programmierung 4
M Darstellung einer schwingenden Membran? Spiele- und Multimedia-Programmierung 23
raptorrs Teile einer CAD-Assembly Gruppe in JAVA animieren? Spiele- und Multimedia-Programmierung 3
K Beschriftung von Punkten in einer "Punktwolke" Spiele- und Multimedia-Programmierung 2
S Zur Laufzeit auf die Methode einer anderen Klasse zugreifen Spiele- und Multimedia-Programmierung 5
K Klick in der nähe einer Strecke Spiele- und Multimedia-Programmierung 14

Ähnliche Java Themen

Neue Themen


Oben