From 47e3a1dec5fb3eb6dbf9e14d2a2c2f16649388ed Mon Sep 17 00:00:00 2001 From: jzitnik-dev Date: Mon, 23 Dec 2024 23:25:22 +0100 Subject: [PATCH] chore: Some minor changes --- README.md | 25 +++++++++++++++ frontend/src/main/java/cz/jzitnik/Main.java | 7 ++-- .../main/java/cz/jzitnik/game/Chronos.java | 32 ++++++++----------- .../src/main/java/cz/jzitnik/utils/Cli.java | 31 ------------------ 4 files changed, 43 insertions(+), 52 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..d748433 --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +# Chronos + +Jednoduchá multiplayer hra napsaná v Javě. + +## Backend + +Backend je napsaný v Javě pomocí Spring. Jedná se o jednoduchý HTTP server. + +**Ano jsem debil, využít relační databázi nebyl rozhodě dobrý nápad. Došlo mi to uprostřed programování a už se mi nechtělo vracet zpět.** + +### Enviromental variables + +Nějaké env variables se musí nastavit pro připojení k databázi: + +- `DATASOURCE_URL`: Jdbc url pro databázi. Např. `jdbc:mysql://localhost:3306/chronos` +- `DB_USERNAME`: Uživatelské jméno k přístupu k databázi. Např. `root` +- `DB_PASSWORD`: Heslo k přístupu k databázi. Např. `root` + +## Frontend + +Frontend je napsaný ve Vanilla Javě. Config soubor se automaticky ukládá v následujících lokacích: + +- Unix-like operační systémy: `~/.config/Chronos/config.json` +- Windows: `C:\Users\\AppData\Chronos\config.json` +- MaxOS: `~/Library/Application Support/Chronos/config.json` diff --git a/frontend/src/main/java/cz/jzitnik/Main.java b/frontend/src/main/java/cz/jzitnik/Main.java index 513c590..836959c 100644 --- a/frontend/src/main/java/cz/jzitnik/Main.java +++ b/frontend/src/main/java/cz/jzitnik/Main.java @@ -4,6 +4,7 @@ import cz.jzitnik.game.Chronos; import cz.jzitnik.utils.Cli; import java.io.IOException; +import java.util.List; public class Main { public static void main(String[] args) throws IOException { @@ -27,16 +28,16 @@ public class Main { System.out.println(); String[] options = {"Vytvořit novou hru", "Připojit se do již existující hry"}; - var option = Cli.selectOption(options); + var option = Cli.selectOptionIndex(List.of(options)); switch (option) { - case "Vytvořit novou hru": + case 0: chronos.createNewGame(); chronos.addUser(); Cli.success("Byl jste úspěšně zaregistrován jako první hráč!"); chronos.adminPanel(); break; - case "Připojit se do hry": + case 1: chronos.connectToExisting(); chronos.addUser(); Cli.success("Byl jste úspěšně zaregistrován jako hráč!"); diff --git a/frontend/src/main/java/cz/jzitnik/game/Chronos.java b/frontend/src/main/java/cz/jzitnik/game/Chronos.java index dce6e50..a32bd5f 100644 --- a/frontend/src/main/java/cz/jzitnik/game/Chronos.java +++ b/frontend/src/main/java/cz/jzitnik/game/Chronos.java @@ -162,25 +162,21 @@ public class Chronos { var testGameKeyResponse = apiService.testGameKey(code).execute().body().getData().get(); - if (testGameKeyResponse == TestGameKeyResponse.INVALID_KEY) { - Cli.error("Nebyla nalezena hra s tímto kódem!"); - connectToExisting(); - return; + switch (testGameKeyResponse) { + case INVALID_KEY -> { + Cli.error("Nebyla nalezena hra s tímto kódem!"); + connectToExisting(); + } + case GAME_STARTED -> { + Cli.error("Tato hra již začala!"); + connectToExisting(); + } + case MAXIUM_PLAYERS -> { + Cli.error("V této hře je již maximální počet hráčů!"); + connectToExisting(); + } + case WORKING -> localData.setGameKey(code); } - - if (testGameKeyResponse == TestGameKeyResponse.GAME_STARTED) { - Cli.error("Tato hra již začala!"); - connectToExisting(); - return; - } - - if (testGameKeyResponse == TestGameKeyResponse.MAXIUM_PLAYERS) { - Cli.error("V této hře je již maximální počet hráčů!"); - connectToExisting(); - return; - } - - localData.setGameKey(code); } public void waitForStart() throws IOException { diff --git a/frontend/src/main/java/cz/jzitnik/utils/Cli.java b/frontend/src/main/java/cz/jzitnik/utils/Cli.java index a7cfade..7babf8b 100644 --- a/frontend/src/main/java/cz/jzitnik/utils/Cli.java +++ b/frontend/src/main/java/cz/jzitnik/utils/Cli.java @@ -147,37 +147,6 @@ public class Cli { } - /** - * Displays a menu with the provided options and returns the selected option. - * - * @param options Array of options to display to the user. - * @return The selected option as a String. - */ - public static String selectOption(String[] options) { - Scanner scanner = new Scanner(System.in); - int choice; - - System.out.println("Vyberte možnost:"); - for (int i = 0; i < options.length; i++) { - System.out.println((i + 1) + ". " + options[i]); - } - - while (true) { - System.out.print("Vložte číslo možnosti: "); - if (scanner.hasNextInt()) { - choice = scanner.nextInt(); - if (choice >= 1 && choice <= options.length) { - return options[choice - 1]; - } else { - System.out.println("Neplatní možnost, vyberte číslo mezi 1 a " + options.length); - } - } else { - System.out.println("Neplatný vstup, vložte číslo."); - scanner.next(); - } - } - } - /** * Displays a menu with the provided options and returns the selected option. *