Files
SEW_Uebungen_2024.25/src/UE22_200525_MatheServer/MatheClient.java
Alexander Bachinger 96ee2f97ef namens check
2025-05-27 10:45:26 +02:00

135 lines
5.4 KiB
Java

package UE22_200525_MatheServer;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class MatheClient extends Thread {
Socket client;
private int anzCals = 10;
private int level = 1;
public MatheClient(Socket s) {
client = s;
}
public static int randomInRange(int min, int max) {
return (int) (Math.random() * (max - min)) + min;
}
@Override
public void run() {
try (BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream())); BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()))) {
while (true) {
wr.write("Willkommen beim Mathe-Quiz\n\rWie heftig hättest du es gerne?");
wr.flush();
while (true) {
int level;
wr.write("\n\rBitte gibt eine Zahl zwischen 1 und 3 ein. (Leer für 1): ");
wr.flush();
try {
String input = br.readLine();
if (input == null || input.trim().isEmpty()) break;
level = Integer.parseInt(input);
} catch (Exception _) {
continue;
}
if (level < 1 || level > 3) continue;
this.level = level;
break;
}
while (true) {
int anz;
wr.write("\n\rWie viele Fragen meochtest du loesen (1 - 999) (Leer für 10): ");
wr.flush();
try {
String input = br.readLine();
if (input == null || input.trim().isEmpty()) break;
anz = Integer.parseInt(input);
} catch (Exception _) {
continue;
}
if (anz < 1 || anz > 999) continue;
this.anzCals = anz;
break;
}
for (int i = 1; i <= anzCals; i++) {
int type = randomInRange(1, 4), solution, a, b;
String operator;
switch (level) {
case 1 -> {
a = randomInRange(1, 10);
b = randomInRange(1, 10);
}
case 2 -> {
a = randomInRange(-100, 100);
b = randomInRange(-100, 100);
}
case 3 -> {
a = randomInRange(-10_000, 10_000);
b = randomInRange(-10_000, 10_000);
}
default -> throw new IllegalStateException("Unexpected value: " + level);
}
switch (type) {
case 1 -> {
operator = "+";
solution = a + b;
}
case 2 -> {
operator = "-";
solution = a - b;
}
case 3 -> {
operator = "*";
solution = a * b;
}
case 4 -> {
operator = "/";
solution = a / (b == 0 ? 1 : b);
}
default -> throw new IllegalStateException("Unexpected value: " + type);
}
String question = "(Level " + level + ") Frage " + i + ": " + a + " " + operator + " " + b + " = ";
wr.write(question);
wr.flush();
while (true) {
String message = "\n\rFalsch :( .. versuche es noch einmal\n\n\r" + question;
try {
String input = br.readLine();
if (input == null || input.trim().isEmpty() || Integer.parseInt(input) != solution) {
wr.write(message);
wr.flush();
continue;
}
} catch (Exception _) {
wr.write(message);
wr.flush();
continue;
}
wr.write("\n\rrichtig :)\n\n\r");
wr.flush();
break;
}
}
wr.write("\n\n\n\rHerzlichen Glückwunsch du hast es geschafft!!\n");
wr.flush();
boolean end = true;
while (true) {
wr.write("\n\rMoechtest du noch einmal spielen? [y/N]: ");
wr.flush();
String input = br.readLine();
if (input == null || input.trim().isEmpty() || input.trim().equalsIgnoreCase("n")) break;
if (input.trim().equalsIgnoreCase("y")) {
end = false;
break;
}
}
if (end) break;
}
} catch (Exception _) {
}
}
}