CV05 - Zadání - 2

Zadání úlohy na cvičení - grafické uživatelské rozhraní s využitím JavaFX

JavaFX GUI

Z vašeho projektu z minulého cvičení nebo z projektu s řešením minulého cvičení (https://gitlab.vsb.cz/jez04-vyuka/java1/labs/lab05v2.git)

Vytvořte GUI pomocí programu SceneBuilder (případně vytvořte kód ručně), které bude obsahovat:

  • Canvas s hráčem, překážkymi a monstry
  • Dva posuvníky pro nastavení úhlu pohybu hráče a rychlosti pohybu hráče
  • Tlačítko pro spawnutí hráče na náhodnou pozici.

Vytvořte soubor gameWindow.fxml, který definuje vzhled GUI a třídu GameController, která bude sloužit pro propojení GUI s existujícím kódem.

// Construct a main window with a canvas.
FXMLLoader gameLoader = new FXMLLoader(getClass().getResource("/lab/gameWindow.fxml"));
Parent root = gameLoader.load();
GameController gameController = gameLoader.getController();
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.resizableProperty().set(false);
primaryStage.setTitle("Java 1 - 1th laboratory");
primaryStage.show();
// Exit program when main window is closed
primaryStage.setOnCloseRequest(this::exitProgram);

GameControler

Třída GameControler bude obsahovat:

  • inicializaci světa a objektů v něm
  • inicializaci vlákna (nyní DrawingThread) 
  • Samotné vykreslení a simulace světa

Odevzdání

Řešení odevzdejte do systému Kelvin jako úlohu "Java 1 - 5. cvičení v2". Do systému nahrejde celý obsah složky src a soubor pom.xml. Postupujte dle videa na DU02 k odevzdání v době 3. cvičení.

Následně bude projekt zkompilován a provedou se Unit Testy. Vzhledem k povaze projektu a prozatímnímu testovacímu využití systému Kelvin v předmětu Java 1 v případě selhání nezoufejte.

Jedná se o pomocný test, vše bude ještě hodnoceno ručně. Důležité je nahrát soubory aby bylo možno vše vyhodnotit a provést analýzu na plagiáty. Věřím, že je to je formalita a všichni z Vás tvoří vlastní kód.

Řešení

Řešení zadání najdete v gitu ve větvi solution https://gitlab.vsb.cz/jez04-vyuka/java1/labs/lab05v2/-/tree/solution?ref_type=heads