Probleme bei dem erstellen von leveln in meinem Spiel

httprt

Neues Mitglied
Hallo, ich bin noch recht ein Amateur und würde ein Ratespiel kodieren. Jedoch weiß ich nicht wie ich ein neues Wort zum erraten einfügen kann, sodass
mehrere levels entstehen. Zum Beispiel möchte ich das nachdem das erste Wort richtig erraten wurde die abfrage kommt also System.out.println("möchtest du mit dem nächsten level fortfahren ?"); das mann dann entweder ja oder nein eintippen kann sodass entweder das neue level bzw. das neue Wort erraten werden kann oder das sich cmd schließt. Wenn ihr Ideen habt schreibt bitte codes rein und wenn ihr könnt erklärt sie mir damit ich sie auch in zukunft verwenden kann.

Der Code:

Java:
import java.io.*;
public class wortfinden
                        
{
        public static void main(String args[])throws IOException
        {
                String wort = "leben";int i,erraten=0,schlüssel=0,richtig=0;
                String besitz[] = new String[wort.length()];

                System.out.println("um das Wort zu finden hast du 5 versuche.");
                BufferedReader tastatur = new BufferedReader(new InputStreamReader(System.in)); //bufferedreader speichert grössere Datenmängen
                 // Ein InputStream ist ein Datenfluss über den Daten reinkommen in dem fall einfach die Tastatur.
                for (i = 0; i < wort.length(); i++)
                {
                        besitz[i] = "_ ";

                }

                finish:
                while(erraten<6){
                        System.out.println("schreiben sie einen Buchstaben (du hast noch "+(5 -erraten) +"übrig) : ");
                        String buchstabe = tastatur.readLine();
                        erraten++;
                        for (i = 0; i < wort.length(); i++)
                        {
                                if (wort.charAt(i) == buchstabe.charAt(0))
                                {
                                        besitz[i] = buchstabe+" ";
                                        schlüssel = 1;
                                        richtig++;
                                        if (richtig == wort.length()) { System.out.println("das Wort ist " +wort+"...Glückwunsch..."); break finish; }
                                }
                        }
                        if (schlüssel == 1) { schlüssel = 0; erraten--; }
                        for (i = 0; i < wort.length(); i++)
                        {
                                System.out.print(besitz[i]);

                        }
                        System.out.println();
                }
                if (richtig != wort.length()) { System.out.println("Tut mir leid... das richtige Wort ist " + wort); }

        }
        
}
 

KonradN

Super-Moderator
Mitarbeiter
Ein paar ganz wichtige Tipps:
- Schau Dir an, wie Du den Code in Methoden unterteilen kannst. Das macht es deutlich lesbarer und weniger komplex. Spätestens wenn man dann auch noch zu Labeln greifen muss für breaks und so, dann ist eine gewisse Grenze überschritten, die man nicht überschreiten sollte :)
- Lass Dir den Code ordentlich formatieren - nie mehrere Anweisungen auf einer Zeile!

Wenn Du den ersten Punkt hast, dann kannst Du den Inhalt von main in eine eigene Methode packen, die als Parameter das zu erratene Wort übergeben bekommt. Das könntest Du dann in mehreren Leveln aufrufen, indem Du die zu erratenen Wörter z.B. in einem Array vorhältst. Index ist dann Levelnummer -1. Da kannst Du dann eine Logik drumherum bauen.

Aber auch die Methode lässt sich in mehrere Methoden aufteilen, so dass es deutlich einfacher wird, den Code zu verstehen.

Ein weiterer Schritt könnte sein, dass man dies objektorientiert aufbaut, aber das ist vermutlich noch ein Schritt zu viel im Augenblick und dazu kommst Du erst später.
 

Blender3D

Top Contributor
Hallo, ich bin noch recht ein Amateur und würde ein Ratespiel kodieren. Jedoch weiß ich nicht wie ich ein neues Wort zum erraten einfügen kann, sodass
mehrere levels entstehen. Zum Beispiel möchte ich das nachdem das erste Wort richtig erraten wurde die abfrage kommt also System.out.println("möchtest du mit dem nächsten level fortfahren ?"); das mann dann entweder ja oder nein eintippen kann sodass entweder das neue level bzw. das neue Wort erraten werden kann oder das sich cmd schließt. Wenn ihr Ideen habt schreibt bitte codes rein und wenn ihr könnt erklärt sie mir damit ich sie auch in zukunft verwenden kann.
Habe einmal das Spiel Hangman zur Übung gemacht.
Das Spiel verlang zu Beginn ein neues Wort, das nicht in der Wortliste gespeichert ist.
Dann bekommt man Punkte als Platzhalter für die Buchstaben.
Man versucht dann einen richtigen Buchstaben zu erraten, der falls korrekt die Punkte ersetzt an denen er im gesuchten Wort vorkommt.
Andernfalls wird das Galgenmännchen um ein Zeichen erweitert.
Am Ende wird man gefragt ob man weitermachen möchte.
Hier der Code dazu: Abgesehen vom Wordserver spielt sich alles in der Klasse Gallow ab.
Java:
import java.util.Scanner;

public class Gallow {
    private static Scanner in = new Scanner(System.in);
    private static WordServer wordServer = WordServer.getInstance();
    public static final int MAX_MISTAKES = 8;

    public static void main(String[] args) {
        enterGameByNewWord();
        boolean playing = true;
        while (playing && doGame())
            playing = isYesAnswer("Wollen Sie noch einmal spielen");
        wordServer.printWords();
        in.close();
    }

    private static boolean doGame() {
        int mistakes = 0;
        String word = wordServer.getNotUsedRandomWord();
        if (word == null) {
            System.out.println("Alle Wörter sind schon benutzt worden!");
            return false;
        }

        char[] found = new char[word.length()];
        for (int i = 0; i < found.length; i++)
            found[i] = '.';
        do {
            printSeperator();
            drawGallow(mistakes, found);
            char c = inputLetter(word, found, mistakes);

            int idx = word.indexOf(c);
            if (idx < 0) {
                mistakes++;
                if (mistakes == MAX_MISTAKES) {
                    drawGallow(mistakes, found);
                    System.out.println("Leider konntest Du das Wort '" + word + "' nicht erraten!\n");
                    return true;
                }
            } else {
                found[idx] = c;
                while ((idx + 1) < word.length() && (idx = word.indexOf(c, idx + 1)) >= 0)
                    found[idx] = c;
            }

        } while (!word.equals(new String(found)));
        System.out.println("\nBravo, Du hast das Wort '" + word + "' erraten!\n");
        return true;
    }

    public static void drawGallow(int mistakes, char[] found) {
        String[][] man = { { "   |" }, { "   O" }, { "  /", "|", "\\" }, { "  _", "|", "_" } };
        System.out.println("+---+\t" + new String(found));
        for (int i = 0; i < man.length; i++) {
            System.out.print("|");
            if (i < 2) {
                if (mistakes > i)
                    System.out.print(man[i][0]);
            } else {
                int offMistake = mistakes - 2 - 3 * (i - 2);
                if (offMistake > 3)
                    offMistake = 3;
                for (int ii = 0; ii < offMistake; ii++)
                    System.out.print(man[i][ii]);
            }
            System.out.println();
        }
        System.out.println("+");
    }

    private static void enterGameByNewWord() {
        printSeperator();
        System.out.println("Willkommen zum Galgenmann - Spiel:\n\n");
        String word = null;
        boolean ok = false;
        do {
            System.out.println("Um das Spiel zu beginnen geben Sie bitte ein neues korektes Suchwort ein!");
            word = inputNewWord();
            if (word == null)
                continue;
            if (wordServer.contains(word))
                System.out.println("Das Wort '" + word + "' existiert bereits!");
            else {
                wordServer.addWord(word);
                wordServer.setwordUsed(word);
                ok = true;
            }
        } while (!ok);
        wordServer.save();
        System.out.println();
    }

    public static char inputChar() {
        String input = in.nextLine();
        if (input == null || input.length() == 0)
            return '\n';
        return input.toUpperCase().charAt(0);
    }

    private static char inputLetter(String word, char[] found, int mistakes) {
        System.out.print("Gebens Sie eine Buchstaben ein: ");
        return inputChar();
    }

    public static String inputNewWord() {
        System.out.println("Geben Sie ein neues Suchwort ein:");
        String word = in.nextLine();
        if (word.length() < 1) {
            System.out.println("Das Wort ist zu kurz!");
            return null;
        }

        if (!isYesAnswer("Ist das Wort " + word + " korrekt ?"))
            return null;
        return word;
    }

    public static boolean isYesAnswer(String label) {
        System.out.print(label + "\t(J fuer ja) :");
        char c = inputChar();
        return c == 'J';
    }

    private static void printSeperator() {
        System.out.println("**********************************");
    }

}
Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Random;

public class WordServer {
    public static final String wordFile = "./words.txt";
    private static final Random rnd = new Random(System.currentTimeMillis());
    private static ArrayList<String> words = new ArrayList<String>();
    private static ArrayList<String> usedWords = new ArrayList<String>();
    private static WordServer instance = null;

    private static boolean changed = false;

    private WordServer() {
        load();
    }

    public boolean addWord(String word) {
        word = formatWord(word);
        if (words.contains(word))
            return false;
        changed = true;
        return words.add(word);
    }

    public static String formatWord(String word) {
        return word.trim().toUpperCase();
    }

    public boolean contains(String word) {
        word = formatWord(word);
        return words.contains(word);
    }

    public static WordServer getInstance() {
        if (instance == null)
            instance = new WordServer();
        return instance;
    }

    public String getNotUsedRandomWord() {
        String word = getRandomWord();
        while (word != null && usedWords.contains(word))
            word = getRandomWord();
        usedWords.add(word);
        return word;
    }

    private String getRandomWord() {
        if (isEmpty() || usedWords.size() == words.size())
            return null;
        return words.get(rnd.nextInt(words.size()));
    }

    public boolean isEmpty() {
        return words.isEmpty();
    }

    private void load() {
        File file = new File(wordFile);
        if (!file.exists()) {
            addWord("haus");
            addWord("mauer");
            addWord("kuchen");
            save();
            return;
        }
        try {
            FileReader fR = new FileReader(file);
            BufferedReader bR = new BufferedReader(fR);
            String word = null;
            while ((word = bR.readLine()) != null)
                addWord(word);
            bR.close();
            fR.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void printWords() {
        Iterator<String> it = words.iterator();
        int i = 1;
        while (it.hasNext()) {
            System.out.print(it.next());
            if (i % 5 == 0)
                System.out.println();
            else if (it.hasNext())
                System.out.print(", ");
            i++;
        }
    }

    public boolean removeWord(String word) {
        boolean ok = words.remove(word);
        if (ok)
            changed = true;
        return ok;
    }

    public void resetUsedWords() {
        usedWords.clear();
    }

    public void setwordUsed(String word) {
        word = formatWord(word);
        if (words.contains(word))
            usedWords.add(word);
    }

    public void save() {
        if (!changed)
            return;
        try {
            FileWriter fW = new FileWriter(wordFile, false);
            PrintWriter pW = new PrintWriter(fW, true);
            Iterator<String> it = words.iterator();
            while (it.hasNext())
                pW.println(it.next());
            pW.close();
            fW.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}


1653602592375.png
 

Anhänge

  • gallow.jar
    5,2 KB · Aufrufe: 0
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Probleme mit dem Erstellen und Importieren von Packages Java Basics - Anfänger-Themen 6
C Input/Output Probleme beim .jar erstellen Java Basics - Anfänger-Themen 5
N Probleme mit dem Erstellen eines package Java Basics - Anfänger-Themen 6
L ausführbare .jar erstellen Probleme Java Basics - Anfänger-Themen 6
A Probleme beim erstellen einer lauffähigen jar Java Basics - Anfänger-Themen 3
P TaschenrechnerKlasse erstellen Probleme Java Basics - Anfänger-Themen 8
M Probleme beim Jar erstellen Java Basics - Anfänger-Themen 7
kulturfenster Probleme beim Erstellen von Objekten Java Basics - Anfänger-Themen 15
J Probleme beim Erstellen eines Programms Java Basics - Anfänger-Themen 5
D Probleme bei Verwendung short und int im Constuctor Java Basics - Anfänger-Themen 6
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
C Probleme mit Byte konvertieren nach int Java Basics - Anfänger-Themen 10
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
I Projekte in IDE untereinander sharen / Probleme beim Build Java Basics - Anfänger-Themen 8
MiMa Probleme mit Datentyp long ?? Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
B Quiz mit RMI Probleme mit RMI start Java Basics - Anfänger-Themen 4
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
V Probleme Guessing Game Java Basics - Anfänger-Themen 8
hebein PDF Ausdruck auf Drucker - Probleme mit Format Java Basics - Anfänger-Themen 17
R JMenu/JMenuItem Probleme Java Basics - Anfänger-Themen 2
B Static vs non static und Probleme daraus Java Basics - Anfänger-Themen 13
J Probleme mit dem Debugger Java Basics - Anfänger-Themen 4
I Probleme mit OutputStream - Datei lässt sich nicht öffnen Java Basics - Anfänger-Themen 4
J Probleme mit Kompilierung Java Basics - Anfänger-Themen 11
B Probleme mit Zugriff auf Dateisystem Windows 10 ( jFileChooser) Java Basics - Anfänger-Themen 17
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
C Probleme mit paintComponent Java Basics - Anfänger-Themen 13
P Probleme mit JUnit-Tests, es kommt was anderes raus als bei manuellen Tests Java Basics - Anfänger-Themen 5
E JavaFX Editor Probleme mit der Zwischenablage Java Basics - Anfänger-Themen 12
3 OOP erste Versuche, OOP zu verstehen. Probleme mit gettern und settern Java Basics - Anfänger-Themen 4
R Erste Schritte Probleme bei 2D Spielfeld, mit einzufügender "Person" Java Basics - Anfänger-Themen 5
P Probleme bei der Installation von JavaFX Java Basics - Anfänger-Themen 3
S Mehrere Probleme im Code Java Basics - Anfänger-Themen 7
D Probleme mit JFrame und der Größe Java Basics - Anfänger-Themen 8
Dimax String Probleme Java Basics - Anfänger-Themen 12
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
Splayfer Java Array Probleme Java Basics - Anfänger-Themen 3
J Probleme bei IllegalArgumentException "werfen". Java Basics - Anfänger-Themen 1
K Probleme bei der Ausgabe - komme nicht weiter :/ Java Basics - Anfänger-Themen 15
X Probleme im Umgang mit PriorityQueue Java Basics - Anfänger-Themen 75
D Probleme mit dem Windowbuilder und JComboBox Java Basics - Anfänger-Themen 2
M Regex Probleme (mal wieder) Java Basics - Anfänger-Themen 3
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
X Probleme mit Übungsaufgaben zu Zahlentypen Java Basics - Anfänger-Themen 4
G Probleme bei Aufgabe Java Basics - Anfänger-Themen 12
P Erste Schritte Probleme mit dem Programmieren Java Basics - Anfänger-Themen 12
B Probleme bei einer Aufgabe Java Basics - Anfänger-Themen 19
Franzi1001 Probleme mit Eclipse Java Basics - Anfänger-Themen 7
T Probleme bei Installation von JDK Java Basics - Anfänger-Themen 2
C Probleme mit String-Vergleich Java Basics - Anfänger-Themen 4
C Probleme bei Regex Java Basics - Anfänger-Themen 9
V Probleme mit Arrays Java Basics - Anfänger-Themen 8
D Kleine Probleme mit Split-Befehlen Java Basics - Anfänger-Themen 5
T Probleme mit Strings Java Basics - Anfänger-Themen 6
G Probleme bei Frame aufgaben Java Basics - Anfänger-Themen 6
N Probleme mit dem ActionListener Java Basics - Anfänger-Themen 4
D Probleme beim Kompelieren mache ich etwas falsch ? Java Basics - Anfänger-Themen 3
L Probleme mit Java Java Basics - Anfänger-Themen 3
S Probleme mit abspielen einer .wav Datei Java Basics - Anfänger-Themen 2
J Probleme bei der Umwandlung einer Farbe von Hex zu RGB Java Basics - Anfänger-Themen 8
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
M Probleme beim aktualisieren eines JPanels Java Basics - Anfänger-Themen 7
J Probleme beim Array ausgeben Java Basics - Anfänger-Themen 4
M Probleme bei rekursiver Zuordnung Java Basics - Anfänger-Themen 1
I Probleme mit 2 dimensionale Arrays Java Basics - Anfänger-Themen 3
H Best Practice View probleme Java Basics - Anfänger-Themen 2
B Probleme mit Kreisberechnung Java Basics - Anfänger-Themen 15
E Probleme mit Scanner Java Basics - Anfänger-Themen 4
J Eclipse Export Probleme Java Basics - Anfänger-Themen 25
M Probleme beim verwenden von Packages Java Basics - Anfänger-Themen 6
D Probleme mit der Übergabe einer BorderPane Java Basics - Anfänger-Themen 2
J Interface Probleme bei der Implementierung Java Basics - Anfänger-Themen 1
BlueFox Tabelle in der Konsole ausgeben - Probleme Java Basics - Anfänger-Themen 1
G Methoden Probleme beim Methodenaufruf Java Basics - Anfänger-Themen 2
V Klassen ObjectInputStream ->ReadObject Probleme Java Basics - Anfänger-Themen 5
P Probleme mit der Do-Schleife Java Basics - Anfänger-Themen 2
F Erste Schritte Compiling Probleme Java Basics - Anfänger-Themen 13
S Neuling und Probleme bei Schulaufgabe Java Basics - Anfänger-Themen 5
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
S Erste Schritte 2D Grafik Probleme mit KeyListener. Java Basics - Anfänger-Themen 18
M Array mit eigenem Datentyp probleme beim übergeben Java Basics - Anfänger-Themen 6
M Probleme mit Eclipse Java Basics - Anfänger-Themen 20
G Probleme beim casten von double zu int Java Basics - Anfänger-Themen 3
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
S Compiler-Fehler javac hat Probleme mit Paketen unter OSX Java Basics - Anfänger-Themen 2
J Probleme beim schreiben von Dateien Java Basics - Anfänger-Themen 5
B Variablen Probleme mit Eclipse Java Basics - Anfänger-Themen 6
H Mouse- und KeyListener Probleme? Java Basics - Anfänger-Themen 5
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
I Probleme bei Verzeichnissanalyse Java Basics - Anfänger-Themen 12
F Probleme mit privaten Klassen (abstrakten Klassen) Java Basics - Anfänger-Themen 1
H Probleme mit Klassen...oder: Eine Uhr Java Basics - Anfänger-Themen 9
G Probleme mit Konsole Java Basics - Anfänger-Themen 4
S Probleme mit GamGrid Spiel-Erstellung => Actor reagiert nicht auf Tastatur Java Basics - Anfänger-Themen 2
G Probleme mit Eclipse oder der URL Klasse Java Basics - Anfänger-Themen 5
W Verständnis Probleme bei der while-Schleife und continue Java Basics - Anfänger-Themen 21

Ähnliche Java Themen


Oben