Ich musste ein kleines Spiel in Java für ein Projekt für die Schule programmieren. Das Spiel ist RushHour, und Sie können hier ein Beispiel davon sehen: http://www.thinkfun.com/play-online/rush-hour/.Wie verwende ich die Ausgabe einer JSON-Datei in Java, um damit ein Objekt zu erstellen?
Meine Lehrer fragen mich nun, ob mein Code eine externe Datei lesen darf, damit der Grundzustand des Spiels in meinem Hauptprogramm nicht mehr fest codiert ist und die Parameter des Spiels angepasst werden können (die Größe des Board, die Anzahl der Autos im Spiel ...)
Hier ist meine erste JSON-Datei, die ein klassisches Spiel setzt.
{
"ClassicBoard" :
{
"height" : "6",
"width" : "6",
"exit":
{
"row" : "2",
"column" : "5"
}
},
"ListOfCars" :
{
"car2" :
{
"char" : "2",
"size" : "3",
"orientation" : "vertical",
"currentPosition":
{
"row" : "2",
"column": "2"
}
},
"car3" :
{
"char" : "3",
"size" : "3",
"orientation" : "vertical",
"currentPosition":
{
"row" : "2",
"column": "4"
}
}
},
"redCar":
{
"char" : "1",
"size" : "2",
"orientation" : "horizontal",
"currentPosition":
{
"row" : "2",
"column": "0"
}
}
}
Ich versuche zu finden, wie die Datei zu lesen und es ist Ausgang für die Schaffung eines RushHourGame Objekt wieder zu verwenden. Hier ist der Konstruktor.
public RushHourGame(Board board, List <Car> cars, Car redCar) throws RushHourException
{
this.board = board;
this.redCar = redCar;
if(((redCar.getOrientation() == Orientation.HORIZONTAL)
&& (board.getExit().getRow() != redCar.getCurrentPosition().getRow()))
|| (((redCar.getOrientation() == Orientation.VERTICAL)
&& (board.getExit().getColumn() != redCar.getCurrentPosition().getColumn()))))
{
throw new RushHourException("Car must be aligned with the exit, "
+ "a default game has been created");
}
board.put(redCar);
for (Car putCars : cars)
{
board.put(putCars);
}
}
Ich habe versucht, einen BufferedReader, wie folgt zu verwenden.
public static String readFile(String filename)
{
String result ="";
try
{
BufferedReader br = new BufferedReader (new FileReader(filename));
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null)
{
sb.append(line);
line = br.readLine();
}
result = sb.toString();
}
catch (Exception e)
{
e.printStackTrace();
}
return result;
}
Aber ich sur bin nicht, wie es für meine JSON-Datei parsen. Jemand kann mir helfen?
Danke für die Beantwortung. Ihre Antwort sieht sehr interessant aus, ich werde das im Detail überprüfen, sobald ich kann und ich komme zurück, um Ihnen mitzuteilen, ob es funktioniert! –
Nun, ich denke, dass der Code nicht sehr hilfreich ist, weil ich meine Klassen für Auto, Brett, Position schon gemacht habe ... Und was Sie gemacht haben, passt nicht damit. Außerdem denke ich, dass die Verwendung von Setter nicht die Lösung ist, weil ich nicht möchte, dass der Benutzer die Möglichkeit hat, diese Werte zu ändern. Der Konstruktor der Klasse RushHourGame ruft den cnstructor aller anderen Klassen auf, daher brauche ich nur den Konstruktor von RushHourGame, um die Daten und Werte in der JSON-Datei abzurufen und ein neues RushHourGame-Objekt damit zu erstellen. Aber danke für die Jackson-Lösung. –