package gdi1sokoban.main;
import java.io.IOException;
import java.net.URISyntaxException;
import gdi1sokoban.exceptions.InternalFailureException;
import gdi1sokoban.exceptions.ParameterOutOfRangeException;
import gdi1sokoban.exceptions.ParseException;
import gdi1sokoban.game.GameEngine;
import gdi1sokoban.gui.SokobanWindow;
/**
* Sokoban v1.0
* @author Samuel Kniesz, Victor Negoescu, Paul Ruchniewicz, Holger Thies
* Sokoban Game
*
*/
public class Sokoban {
private static GameEngine engine;
/**
* @return engine
*/
public static GameEngine getEngine() {
return engine;
}
/**
* @param args
*/
public static void main
(final String[] args
) {
// Game-Engine starten
try {
final SokobanWindow gameGui = new SokobanWindow("Yocto Software Solutions - Sokoban");
startEngine(gameGui);
// show Window
gameGui.setVisible(true);
// load standard skin
gameGui.getGamePanel().loadSkin(1);
// start Game
engine.newGame();
System.
err.
println("Interne Ausnahmebedingung: I/O Error");
e.printStackTrace();
} catch (final ParameterOutOfRangeException e) {
System.
err.
println("Interne Ausnahmebedingung: Ungültiger Parameter");
e.printStackTrace();
System.
err.
println("Interne Ausnahmebedingung: Dateipfad-Fehler");
e.printStackTrace();
} catch (final InternalFailureException e) {
System.
err.
println("Interne Ausnahmebedingung: Unbekannter interner Fehler");
e.printStackTrace();
System.
err.
println("Ausnahmebedingung: Leveldatei fehlerhaft");
e.printStackTrace();
}
}
/**
* starts the game Engine
* @param gameGui the gui with which the engine shall be started
*/
public static void startEngine(final SokobanWindow gameGui){
try {
engine = new GameEngine(gameGui);
} catch (final InternalFailureException e) {
System.
err.
println("Interne unbehandelte Ausnahmebedingung: Unbekannter interner Fehler");
e.printStackTrace();
}
}
}