Ich brauche Hilfe „Glücksrad“ Wort Ratespiel

Jw456

Top Contributor
Hallo schön, dass du die Aufgaben Stellung gepostet hast.
Aber wo bei was ist jetzt dein Problem.
Eine fertige Lösung wird es hier sicher nicht geben.

Was hast du bis jetzt?
 

KonradN

Super-Moderator
Mitarbeiter
Na, immerhin hat er sich die Mühe gemacht und eine Überschrift verfasst...ging das wenigstens ohne ChatGPT?
Das Bild hätte man direkt ChatGPT geben können und man hätte die Lösung incl. Erläuterungen.

Der erzeugte Code bei mir war:
Java:
// ===== Benutzer.java =====
import java.util.regex.*;

public class Benutzer {
    private String benutzername;
    private String passwort;
    private int highscore;

    public Benutzer(String benutzername, String passwort, int highscore) {
        this.benutzername = benutzername;
        this.passwort = passwort;
        this.highscore = highscore;
    }

    public String getBenutzername() { return benutzername; }
    public String getPasswort() { return passwort; }
    public int getHighscore() { return highscore; }
    public void setHighscore(int highscore) { this.highscore = highscore; }

    public static boolean isSicheresPasswort(String pw) {
        return pw.length() >= 8 && pw.matches(".*[A-Z].*") && pw.matches(".*[a-z].*") && pw.matches(".*\\d.*");
    }

    public String toDateizeile() {
        return benutzername + ";" + passwort + ";" + highscore;
    }

    public static Benutzer fromDateizeile(String zeile) {
        String[] teile = zeile.split(";");
        return new Benutzer(teile[0], teile[1], Integer.parseInt(teile[2]));
    }
}

// ===== Benutzerverwaltung.java =====
import java.io.*;
import java.util.*;

public class Benutzerverwaltung {
    private List<Benutzer> benutzerListe = new ArrayList<>();
    private final String datei = "benutzer.txt";

    public Benutzerverwaltung() throws IOException {
        ladeBenutzer();
    }

    public void ladeBenutzer() throws IOException {
        File f = new File(datei);
        if (!f.exists()) return;
        try (BufferedReader br = new BufferedReader(new FileReader(f))) {
            String zeile;
            while ((zeile = br.readLine()) != null) {
                benutzerListe.add(Benutzer.fromDateizeile(zeile));
            }
        }
    }

    public void speichereBenutzer() throws IOException {
        try (PrintWriter pw = new PrintWriter(new FileWriter(datei))) {
            for (Benutzer b : benutzerListe) {
                pw.println(b.toDateizeile());
            }
        }
    }

    public Benutzer findeOderErstelleBenutzer(Scanner sc) {
        System.out.print("Benutzername: ");
        String name = sc.nextLine();
        Benutzer b = benutzerListe.stream()
                .filter(u -> u.getBenutzername().equals(name))
                .findFirst()
                .orElse(null);

        if (b != null) {
            System.out.print("Passwort: ");
            String pw = sc.nextLine();
            if (b.getPasswort().equals(pw)) return b;
            else {
                System.out.println("Falsches Passwort.");
                return null;
            }
        } else {
            System.out.println("Neuer Benutzer. Bitte Passwort erstellen:");
            while (true) {
                String pw = sc.nextLine();
                if (Benutzer.isSicheresPasswort(pw)) {
                    Benutzer neu = new Benutzer(name, pw, 0);
                    benutzerListe.add(neu);
                    return neu;
                } else {
                    System.out.println("Unsicheres Passwort. Bitte erneut eingeben:");
                }
            }
        }
    }

    public void aktualisiereHighscore(Benutzer b, int neuerScore) {
        if (neuerScore > b.getHighscore()) b.setHighscore(neuerScore);
    }
}

// ===== Wortverwaltung.java =====
import java.io.*;
import java.util.*;

public class Wortverwaltung {
    private List<String> woerter = new ArrayList<>();

    public Wortverwaltung(String dateiname) throws IOException {
        try (BufferedReader br = new BufferedReader(new FileReader(dateiname))) {
            String zeile;
            while ((zeile = br.readLine()) != null) {
                woerter.add(zeile.trim());
            }
        }
    }

    public String zufallsWort() {
        Random r = new Random();
        return woerter.get(r.nextInt(woerter.size()));
    }
}

// ===== Gluecksrad.java =====
import java.util.*;

public class Gluecksrad {
    private static final int[] punkte = { 100, 150, 200, 250, 300 };

    public static int drehen() {
        return punkte[new Random().nextInt(punkte.length)];
    }
}

// ===== Spiel.java =====
import java.util.*;

public class Spiel {
    private Benutzer benutzer;
    private Wortverwaltung wortverwaltung;
    private Scanner scanner;

    public Spiel(Benutzer benutzer, Wortverwaltung wortverwaltung, Scanner scanner) {
        this.benutzer = benutzer;
        this.wortverwaltung = wortverwaltung;
        this.scanner = scanner;
    }

    public int starte() {
        String wort = wortverwaltung.zufallsWort().toUpperCase();
        char[] geraten = new char[wort.length()];
        Arrays.fill(geraten, '_');
        Set<Character> versuchte = new HashSet<>();
        int fehler = 0, punkte = 0;

        while (fehler < 5) {
            System.out.println("Wort: " + new String(geraten));
            System.out.println("Geratene Buchstaben: " + versuchte);
            System.out.print("Buchstabe: ");
            String eingabe = scanner.nextLine().toUpperCase();
            if (eingabe.length() != 1 || !Character.isLetter(eingabe.charAt(0))) continue;
            char buchstabe = eingabe.charAt(0);
            if (versuchte.contains(buchstabe)) continue;
            versuchte.add(buchstabe);
            int raddreh = Gluecksrad.drehen();
            boolean gefunden = false;

            for (int i = 0; i < wort.length(); i++) {
                if (wort.charAt(i) == buchstabe) {
                    geraten[i] = buchstabe;
                    gefunden = true;
                }
            }

            if (gefunden) {
                punkte += raddreh;
                if (new String(geraten).equals(wort)) {
                    System.out.println("Gewonnen! Wort: " + wort);
                    return punkte;
                }
            } else {
                fehler++;
                System.out.println("Falsch! Fehler: " + fehler + "/5");
            }
        }
        System.out.println("Verloren! Wort war: " + wort);
        return punkte;
    }
}

// ===== Main.java =====
import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        Benutzerverwaltung bv = new Benutzerverwaltung();
        Wortverwaltung wv = new Wortverwaltung("woerter.txt");
        Benutzer benutzer;
        while ((benutzer = bv.findeOderErstelleBenutzer(sc)) == null);

        Spiel spiel = new Spiel(benutzer, wv, sc);
        int punkte = spiel.starte();
        System.out.println("Punkte: " + punkte);

        bv.aktualisiereHighscore(benutzer, punkte);
        bv.speichereBenutzer();
    }
}

Die einzelnen Dateien, die ChatGPT erzeugt, sind hier durch Kommentare getrennt. Das ist ggf. eine meiner pers. Voreinstellungen von ChatGPT, da ich alles zusammen bevorzuge.

Edit: Das habe ich nicht weiter geprüft oder getestet. Daher ist das nicht als fertige Lösung anzusehen sondern einfach nur eine Art Demo, dass sowas per KI problemlos möglich ist.

Ich selbst wäre normalerweise so vorgegangen, dass ich die jeweils leere Klasse erzeugt hätte, dann die Anforderung als Kommentar und dann einfach die Klasse generieren lassen ... Aber das nur am Rande.
 

Kendav6

Mitglied
Hallo schön, dass du die Aufgaben Stellung gepostet hast.
Aber wo bei was ist jetzt dein Problem.
Eine fertige Lösung wird es hier sicher nicht geben.

Was hast du bis jetzt?
Hi !
ich fange gerade erst an, java zu verstehen ich bin nicht sehr gut, aber ich habe das, was in der Datei steht, mit Hilfe von chatGPT erstellt, aber es funktioniert nicht, es wäre schön, wenn du herausfinden könntest, woran es liegt und es erklären könntest.
 

KonradN

Super-Moderator
Mitarbeiter
Also generell wäre es dann immer gut, wenn Du die Fehler, die Du bekommst, im Detail beschreiben würdest. Weiterhin macht es Sinn, den Code nicht als ZIP File anzuhängen sondern den Code in Code Tags (über den Knopf </> links oberhalb des Eingabebereiches) zu posten. Dann kann man sich den Code direkt im Forum ansehen und muss nicht erst eine Datei herunterladen, entpacken, schauen, was man damit machen muss u.s.w.

Ein Fehler, den ich direkt sehe, ist direkt ein Übersetzungsfehler:
Code:
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /C:/Daten/Projekte/konrad/JavaMavenApp/src/main/java/Spiel.java:[30,30] Symbol nicht gefunden
  Symbol: Methode dreheGluecksrad()
  Ort: Klasse Spiel
[INFO] 1 error
[INFO] -------------------------------------------------------------

Das Problem ist die Zeile:
int punkte = dreheGluecksrad();
Du versuchst in Spiel die Methode dreheGluecksrad aufzurufen und diese Methode gibt es nicht in Spiel.
Die Methode ist in Gluecksrad. Da dies eine statische Methode ist, kann man diese Methode direkt über die Klasse aufrufen:
int punkte = Gluecksrad.dreheGluecksrad();

Danach gibt es dann keinen Compile Fehler mehr und das Spiel läuft erst einmal.

Du wirst dann aber noch ein Problem haben mit dem ersten Buchstaben. Du hast die Wörter mit großen Buchstaben gestartet und die Eingabe machst Du immer zu einem Kleinbuchstaben.

Hier solltest Du Dir einmal überlegen, wie Du diese Problematik lösen kannst.

Und mein Tipp ist hier: Versuche es doch selbst. Lass Dir von ChatGPT maximal den Code erklären. Du musst es doch verstehen bzw. verstanden haben. Auf Grund des Kopfes mit Matrikelnummer vermute ich, dass Du an einer Hochschule studierst. Und das Fach wird nicht "Nutzung von ChatGPT" heissen ... Du solltest also in der Lage sein, die Java Basics zu verstehen (Auch um dann eine gute Punktzahl zu bekommen. Der Code hat aus meiner Sicht ein paar Ungereimtheiten, die durchaus aufzeigen, dass es gewisse Verständnisprobleme geben könnte...)
 

White_Fox

Top Contributor
Hi !
ich fange gerade erst an, java zu verstehen ich bin nicht sehr gut, aber ich habe das, was in der Datei steht, mit Hilfe von chatGPT erstellt, aber es funktioniert nicht, es wäre schön, wenn du herausfinden könntest, woran es liegt und es erklären könntest.
Ganz ehrlich: angefangen hat hier jeder mal irgendwann, und gut war da auch niemand. Und die wenigsten hier haben diese Zeit vergessen, es liegt in der Natur der Sache daß man Dinge nicht kann, wenn man sie erst lernt, das ist völlig ok.

Aber was sollen wir mit deinen ChatGPT-Ergebnissen? Warum sollen wir herausfinden, warum das nicht läuft, es ist doch deine Aufgabe? Glaubst du etwa du wirst irgendetwas verstehen, wenn der Code laufen würde?
Du hast im Eingangspost eine recht umfangreiche Aufgabenstellung gepostet, und da jetzt so die üblichen Zeiten für Zweitklausuren des Wintersemesters laufen nehme ich mal an, daß das der Stoff ist den du seit September des letzten Jahres eigentlich gelernt haben solltest. Was hast du seitdem getrieben, daß du nichtmal eine konkrete Frage hast, sondern schlicht die Aufgabe reinrotzt und ansonsten nichts kannst? Du hast ja nichtmal geschrieben was da bei dir nicht läuft, deine IDE wird garantiert mit einer hilfreicheren Fehlermeldung geantwortet haben. Lies diese Fehlermeldung, und verstehe sie. Und dann behebe du den Fehler.

Ehrlich gesagt: Du solltest das Studium lieber abbrechen, das ist in deinem Fall Zeitverschwendung. Studium heißt in erster Linie, daß man den Kram aktiv selber lernt; Deshalb finde ich es eigentlich auch ganz gut, wenn es in jedem Studium so ein oder zwei Arschlochprofs gibt, die nicht erklären können und harte Siebklausuren schreiben lassen, das ist zwar hart, hält aber Idioten raus. Und du stellst hier gerade unter Beweis, daß selbständiges Lernen und nach dem Studium selbständiges Arbeiten einfach nichts für dich sind. Du wirst, solltest du dein Studium doch irgendwie beenden und eine Arbeit finden, sehr schnell mit Dingen konfrontiert werden von denen du noch nie etwas gehört hast und wo du etwas Neues lernen mußt, willst du da auch deinem Chef vorheulen daß du das nicht kannst, die Antwort von ChatGPT nichts taugt und er das bitte für dich rausfinden soll? Wozu sollte er dich dann eigentlich einstellen?

Mein Post hier mag bissig sein (das ist mir vollkommen egal), allerdings war das immerhin deutlich mehr Arbeit als du, nach dem was du hier bisher geliefert hast, verdienst.

Vielleicht überraschst du uns ja doch noch mit mehr Eigeninitiative...wir werden es sehen. Wenn du konkrete Fragen hast - es wird bestimmt noch jemand beantworten. Aber ich werde garantiert nicht irgendwelche Zipdateien herunterladen und dein Programm debuggen und deine Arbeit für dich übernehmen.
 

White_Fox

Top Contributor
Nachtrag:

Immerhin macht @KonradN die Arbeit für den TS. Und wenn ich mir die Fehlermeldung so ansehe: das würde im Texteditor in der IDE rot unterstrichen werden. Schaut sich der TS seine Chattyausgaben denn wenigstens überhaupt mal an?
 

Jw456

Top Contributor
Was sicherlich auch nicht klappen wird ist das Eingeben der richtigen Lösung .
Wenn also vielleicht die Hälfte aufgedeckt ist und man die richtige Lösung eingibt..
Das solltest du auch anschauen.
 

Kendav6

Mitglied
Ganz ehrlich: angefangen hat hier jeder mal irgendwann, und gut war da auch niemand. Und die wenigsten hier haben diese Zeit vergessen, es liegt in der Natur der Sache daß man Dinge nicht kann, wenn man sie erst lernt, das ist völlig ok.

Aber was sollen wir mit deinen ChatGPT-Ergebnissen? Warum sollen wir herausfinden, warum das nicht läuft, es ist doch deine Aufgabe? Glaubst du etwa du wirst irgendetwas verstehen, wenn der Code laufen würde?
Du hast im Eingangspost eine recht umfangreiche Aufgabenstellung gepostet, und da jetzt so die üblichen Zeiten für Zweitklausuren des Wintersemesters laufen nehme ich mal an, daß das der Stoff ist den du seit September des letzten Jahres eigentlich gelernt haben solltest. Was hast du seitdem getrieben, daß du nichtmal eine konkrete Frage hast, sondern schlicht die Aufgabe reinrotzt und ansonsten nichts kannst? Du hast ja nichtmal geschrieben was da bei dir nicht läuft, deine IDE wird garantiert mit einer hilfreicheren Fehlermeldung geantwortet haben. Lies diese Fehlermeldung, und verstehe sie. Und dann behebe du den Fehler.

Ehrlich gesagt: Du solltest das Studium lieber abbrechen, das ist in deinem Fall Zeitverschwendung. Studium heißt in erster Linie, daß man den Kram aktiv selber lernt; Deshalb finde ich es eigentlich auch ganz gut, wenn es in jedem Studium so ein oder zwei Arschlochprofs gibt, die nicht erklären können und harte Siebklausuren schreiben lassen, das ist zwar hart, hält aber Idioten raus. Und du stellst hier gerade unter Beweis, daß selbständiges Lernen und nach dem Studium selbständiges Arbeiten einfach nichts für dich sind. Du wirst, solltest du dein Studium doch irgendwie beenden und eine Arbeit finden, sehr schnell mit Dingen konfrontiert werden von denen du noch nie etwas gehört hast und wo du etwas Neues lernen mußt, willst du da auch deinem Chef vorheulen daß du das nicht kannst, die Antwort von ChatGPT nichts taugt und er das bitte für dich rausfinden soll? Wozu sollte er dich dann eigentlich einstellen?

Mein Post hier mag bissig sein (das ist mir vollkommen egal), allerdings war das immerhin deutlich mehr Arbeit als du, nach dem was du hier bisher geliefert hast, verdienst.

Vielleicht überraschst du uns ja doch noch mit mehr Eigeninitiative...wir werden es sehen. Wenn du konkrete Fragen hast - es wird bestimmt noch jemand beantworten. Aber ich werde garantiert nicht irgendwelche Zipdateien herunterladen und dein Programm debuggen und deine Arbeit für dich übernehmen.
Ganz ehrlich: angefangen hat hier jeder mal irgendwann, und gut war da auch niemand. Und die wenigsten hier haben diese Zeit vergessen, es liegt in der Natur der Sache daß man Dinge nicht kann, wenn man sie erst lernt, das ist völlig ok.

Aber was sollen wir mit deinen ChatGPT-Ergebnissen? Warum sollen wir herausfinden, warum das nicht läuft, es ist doch deine Aufgabe? Glaubst du etwa du wirst irgendetwas verstehen, wenn der Code laufen würde?
Du hast im Eingangspost eine recht umfangreiche Aufgabenstellung gepostet, und da jetzt so die üblichen Zeiten für Zweitklausuren des Wintersemesters laufen nehme ich mal an, daß das der Stoff ist den du seit September des letzten Jahres eigentlich gelernt haben solltest. Was hast du seitdem getrieben, daß du nichtmal eine konkrete Frage hast, sondern schlicht die Aufgabe reinrotzt und ansonsten nichts kannst? Du hast ja nichtmal geschrieben was da bei dir nicht läuft, deine IDE wird garantiert mit einer hilfreicheren Fehlermeldung geantwortet haben. Lies diese Fehlermeldung, und verstehe sie. Und dann behebe du den Fehler.

Ehrlich gesagt: Du solltest das Studium lieber abbrechen, das ist in deinem Fall Zeitverschwendung. Studium heißt in erster Linie, daß man den Kram aktiv selber lernt; Deshalb finde ich es eigentlich auch ganz gut, wenn es in jedem Studium so ein oder zwei Arschlochprofs gibt, die nicht erklären können und harte Siebklausuren schreiben lassen, das ist zwar hart, hält aber Idioten raus. Und du stellst hier gerade unter Beweis, daß selbständiges Lernen und nach dem Studium selbständiges Arbeiten einfach nichts für dich sind. Du wirst, solltest du dein Studium doch irgendwie beenden und eine Arbeit finden, sehr schnell mit Dingen konfrontiert werden von denen du noch nie etwas gehört hast und wo du etwas Neues lernen mußt, willst du da auch deinem Chef vorheulen daß du das nicht kannst, die Antwort von ChatGPT nichts taugt und er das bitte für dich rausfinden soll? Wozu sollte er dich dann eigentlich einstellen?

Mein Post hier mag bissig sein (das ist mir vollkommen egal), allerdings war das immerhin deutlich mehr Arbeit als du, nach dem was du hier bisher geliefert hast, verdienst.

Vielleicht überraschst du uns ja doch noch mit mehr Eigeninitiative...wir werden es sehen. Wenn du konkrete Fragen hast - es wird bestimmt noch jemand beantworten. Aber ich werde garantiert nicht irgendwelche Zipdateien herunterladen und dein Programm debuggen und deine Arbeit für dich übernehmen.
Wenn du nicht helfen kannst, kannst du auch einfach nichts schreiben, anstatt Dinge zu schreiben, die den Leuten trotz deines Wissens einen Grund geben könnten, sich vorzustellen, was für eine Mench sie sind.
 

KonradN

Super-Moderator
Mitarbeiter
Wenn du nicht helfen kannst, kannst du auch einfach nichts schreiben, anstatt Dinge zu schreiben, die den Leuten trotz deines Wissens einen Grund geben könnten, sich vorzustellen, was für eine Mench sie sind.
Ich denke, das die Aussage von @White_Fox nicht falsch ist. Etwas angeklungen ist es ja auch in meiner Antwort.

Du vernachlässigst das Erlernen der Java Sprache, Es ist aber nicht unwahrscheinlich, dass dies eine Grundlage für weitere Vorlesungen sein wird. Wie willst Du z.B. Algorithmen und Datenstrukturen verstehen, wenn dies dann alles auf Java Basis behandelt wird? Oder wenn es dann ggf. zu komplexeren Dingen kommen wird, bei denen dann auf Basis von Spring Boot oder so eine Anwendung gebaut wird?

Du magst denken: Das mache ich dann schon irgendwie mit ChatGPT oder so, aber die Aufgabe jetzt war relativ trivial und schnell mit ChatGPT zu lösen. Und selbst daran bist Du bereits mehr oder weniger gescheitert.

Und Inhalte so schleifen zu lassen bedeutet, dass Du immer mehr Dinge, die Du nachzuholen hast, vor Dir her schieben wirst. Und die Wahrscheinlichkeit ist nicht klein, dass dies Konsequenzen auch auf dein Studium haben wird.

Aber egal - das ist alles nicht das Thema hier. Ob und wie Du Dein Leben oder Dein Studium auf die Reihe bekommst, ist nicht mein Problem.
 

White_Fox

Top Contributor
Wenn du nicht helfen kannst, kannst du auch einfach nichts schreiben, anstatt Dinge zu schreiben, die den Leuten trotz deines Wissens einen Grund geben könnten, sich vorzustellen, was für eine Mench sie sind.
Die Sache ist: Ich kann schon (also dir helfen), die Aufgaben sind trivial. Aber du bist derjenige, der sie nicht kann, aber offensichtlich können muß. Ich würde viel lieber schreiben "können will", aber soweit ich das sehe ist das nicht der Fall. Was ansich ja schon der Kern des Problems ist.

Und sicher könnte ich mich hier fein raushalten. Aber warum sollte ich? Es gibt genug schlechte Entwickler, da investiere ich lieber fünf Minuten damit es nicht noch einer mehr wird.

Und sieh es mal so rum: Offensichtlich hast du absolut keine Lust, den Kram zu verstehen oder anzuwenden. Warum willst du ein Studium abschließen, wo so etwas zu den Grundlagen gehört? Wenn du dich jetzt noch nichtmal eine Woche damit beschäftigen willst, wie willst du später acht Studnden am Tag einer Arbeit nachgehen, wo so etwas zu den Grundlagen gehört?
Falls du mal gehört hast das man als Informatiker viel Geld verdienen kann und das dein Antrieb ist: Was glaubst du denn als Gegenleistung für ein hohes Gehalt liefern zu wollen?
 

Jw456

Top Contributor
An den TE @Kendav6

wenn du dich ein klein wenig rechtfertigen willst dann zeige eine Lösung die du selber gemacht hast von dem Problem was Konrad schon mit den Gross und Kleinschreibung erkannt hat. Aber bitte nicht einfach die Wort Liste klein schreiben.
 

Neue Themen


Oben