From 5b4e30baaaa37ca6b12a0f94bfb5d6e8e037140b Mon Sep 17 00:00:00 2001 From: 0qln <0qln@proton.me> Date: Fri, 17 Apr 2026 11:08:20 +0200 Subject: [PATCH] praktikum1/aufgabe3 --- .../demo/praktikum1/aufgabe3/Client.java | 53 +++++++++++++++++++ .../demo/praktikum1/aufgabe3/GuessResult.java | 7 +++ .../praktikum1/aufgabe3/GuessingGame.java | 25 +++++++++ .../aufgabe3/GuessingGameRemote.java | 11 ++++ 4 files changed, 96 insertions(+) create mode 100644 client/src/main/java/org/example/demo/praktikum1/aufgabe3/Client.java create mode 100644 server/src/main/java/org/example/demo/praktikum1/aufgabe3/GuessResult.java create mode 100644 server/src/main/java/org/example/demo/praktikum1/aufgabe3/GuessingGame.java create mode 100644 server/src/main/java/org/example/demo/praktikum1/aufgabe3/GuessingGameRemote.java diff --git a/client/src/main/java/org/example/demo/praktikum1/aufgabe3/Client.java b/client/src/main/java/org/example/demo/praktikum1/aufgabe3/Client.java new file mode 100644 index 0000000..4f57638 --- /dev/null +++ b/client/src/main/java/org/example/demo/praktikum1/aufgabe3/Client.java @@ -0,0 +1,53 @@ +package org.example.demo.praktikum1.aufgabe3; +import javax.naming.InitialContext; +import javax.naming.Context; +import java.util.Properties; +import java.util.Scanner; + +public class Client { + public static void main(String[] args) throws Exception { + Properties props = new Properties(); + props.setProperty(Context.INITIAL_CONTEXT_FACTORY, + "org.wildfly.naming.client.WildFlyInitialContextFactory"); + props.setProperty(Context.PROVIDER_URL, "http-remoting://localhost:8080"); + + InitialContext ctx = new InitialContext(props); + String jndiName = "ejb:/ejb-server-1.0-SNAPSHOT/GuessingGame!org.example.demo.praktikum1.aufgabe3.GuessingGameRemote"; + var game = (GuessingGameRemote) ctx.lookup(jndiName); + var scanner = new Scanner(System.in); + var another = true; + while (another) { + playRound(game, scanner); + + // todo: input exception handling + System.out.print("Do you want to play another? "); + another = scanner.nextBoolean(); + } + scanner.close(); + } + + private static void playRound(GuessingGameRemote game, Scanner scanner) { + game.init(); + + GuessResult result; + do { + // todo: input exception handling + System.out.print("Guess a number from 1-100: "); + var guess = scanner.nextInt(); + result = game.testGuess(guess); + + switch (result) { + case Success: + System.out.println("Correct! The number was "+ guess); + break; + case TooBig: + System.out.println("Your guess was too big!"); + break; + case TooSmall: + System.out.println("Your guess was too small!"); + break; + } + } + while (result != GuessResult.Success); + } +} diff --git a/server/src/main/java/org/example/demo/praktikum1/aufgabe3/GuessResult.java b/server/src/main/java/org/example/demo/praktikum1/aufgabe3/GuessResult.java new file mode 100644 index 0000000..810bac4 --- /dev/null +++ b/server/src/main/java/org/example/demo/praktikum1/aufgabe3/GuessResult.java @@ -0,0 +1,7 @@ +package org.example.demo.praktikum1.aufgabe3; + +public enum GuessResult { + TooSmall, + TooBig, + Success, +} diff --git a/server/src/main/java/org/example/demo/praktikum1/aufgabe3/GuessingGame.java b/server/src/main/java/org/example/demo/praktikum1/aufgabe3/GuessingGame.java new file mode 100644 index 0000000..ff3ce85 --- /dev/null +++ b/server/src/main/java/org/example/demo/praktikum1/aufgabe3/GuessingGame.java @@ -0,0 +1,25 @@ +package org.example.demo.praktikum1.aufgabe3; + +import java.util.Random; + +import jakarta.ejb.Stateful; + +@Stateful +public class GuessingGame implements GuessingGameRemote { + private int num; + + public void init() { + var rng = new Random(); + num = 1 + rng.nextInt(0, 100); + } + + public GuessResult testGuess(int guess) { + if (guess < num) { + return GuessResult.TooSmall; + } + if (guess > num) { + return GuessResult.TooBig; + } + return GuessResult.Success; + } +} diff --git a/server/src/main/java/org/example/demo/praktikum1/aufgabe3/GuessingGameRemote.java b/server/src/main/java/org/example/demo/praktikum1/aufgabe3/GuessingGameRemote.java new file mode 100644 index 0000000..0aad2bf --- /dev/null +++ b/server/src/main/java/org/example/demo/praktikum1/aufgabe3/GuessingGameRemote.java @@ -0,0 +1,11 @@ +package org.example.demo.praktikum1.aufgabe3; +import jakarta.ejb.Remote; + +@Remote +public interface GuessingGameRemote { + // start ein spiel, generiere ein zufallszahl. + void init(); + + // test whether the guess is correct. + GuessResult testGuess(int guess); +}