Hi,
ich versuche mich gerade daran, das Spiel 8-puzzle in Java zu implementieren. Ausgangspunkt ist ein 3x3 Spielfeld mit 8 durchnummerierten Feldern und einem Blank-Feld. Das blank darf pro Spielzug um ein Feld verschoben werden. Am Ende müssen die Felder aufsteigend durchnummeriert sein (von links nach rechts, von oben nach unten) und das blank muss sich am Ende befinden.
Das ganze wird in der Kommandozeile ablaufen und ich werde es später wahlweise mit verschiedenen Algorithmen (Breitensuche, Tiefensuche, A*,...) implementieren. Das ist jetzt erst einmal nicht mein Problem.
Ich stehe gerade ganz am Anfang meiner Aufgabe vor der Frage, wie ich das Ausgangsfeld in der Konsole einlesen und evtl. in einem 3x3-Array abspeichern kann. In der Aufgabenstellung steht, dass man folgende Befehle nutzen soll:
java EightPuzzle.class -n 5
java EightPuzzle -s searchtype -h heuristictype -m maxnodes < startposition.txt
Switch -m, -s, -h
Es wäre super, wenn mir jemand erklären könnte, was diese Befehle bedeuten. Mein Problem ist nicht die Implementierung der Algorithmen, sondern die Initialisierung mittels stdin und stdout.
Anbei die Aufgabenstellung:
ich versuche mich gerade daran, das Spiel 8-puzzle in Java zu implementieren. Ausgangspunkt ist ein 3x3 Spielfeld mit 8 durchnummerierten Feldern und einem Blank-Feld. Das blank darf pro Spielzug um ein Feld verschoben werden. Am Ende müssen die Felder aufsteigend durchnummeriert sein (von links nach rechts, von oben nach unten) und das blank muss sich am Ende befinden.
Das ganze wird in der Kommandozeile ablaufen und ich werde es später wahlweise mit verschiedenen Algorithmen (Breitensuche, Tiefensuche, A*,...) implementieren. Das ist jetzt erst einmal nicht mein Problem.
Ich stehe gerade ganz am Anfang meiner Aufgabe vor der Frage, wie ich das Ausgangsfeld in der Konsole einlesen und evtl. in einem 3x3-Array abspeichern kann. In der Aufgabenstellung steht, dass man folgende Befehle nutzen soll:
java EightPuzzle.class -n 5
java EightPuzzle -s searchtype -h heuristictype -m maxnodes < startposition.txt
Switch -m, -s, -h
Es wäre super, wenn mir jemand erklären könnte, was diese Befehle bedeuten. Mein Problem ist nicht die Implementierung der Algorithmen, sondern die Initialisierung mittels stdin und stdout.
Anbei die Aufgabenstellung:
The file holding the main class will be called EightPuzzle.class
The execution will be tailored by command line options.
java EightPuzzle.class –n 5
will take a starting position which is the final position of a completed game and “run the
game backwards” by generating random moves (in this case by 5 such random moves)
and applying them.
This is a way of generating a valid starting configuration (one you know you can start
from and end with the desired end position).
The output will be (sent to stdout) the board position reached after those 5 random
moves.
java EightPuzzle –s searchtype –h heuristictype –m maxnodes < startposition.txt
will take the input (in any text file – such as startposition.txt – that has the above 3 line
formatted description of a starting board state) and try to find the shortest moves to go
from that position to the desired end position – i.e., play the game.
Switch –m is followed by an integer, maxnodes, that specifies the maximum number
nodes in the search tree that is expanded.
Switches –s and –h are followed by strings that cause the play to adopt a particular search
strategy and a particular heuristic, respectively.
You have to provide support for the following searches methods (the strings should have
the obvious meanings/associations):
DepthFirst
BreadthFirst
ASTAR
BestFirst
And the heuristics should include:
CountMissplacedTiles
SumManhattanDistance