hilfe bei einem programm

Status
Nicht offen für weitere Antworten.

Unkownsyntax

Bekanntes Mitglied
Hi ich sollte hangman programmieren hier mal die angabe dazu:
Implementieren Sie das Ratespiel Hangman. In diesem Spiel muss ein Ratespieler ein Wort erraten.
Der Ratespieler soll dabei in beliebiger Reihenfolge nacheinander einzelne Buchstaben des
Alphabets eingeben. Falls einer dieser Buchstaben im Wort vorkommt, soll das Wort mit den
genannten Buchstaben ausgegeben werden. Die Buchstaben, die bisher noch nicht eingegeben
wurden, sollen mit einem Unterstrich (_) gekennzeichnet werden. So ergibt sich nach und nach das
gesuchte Wort. Kommt ein genannter Buchstabe im Wort jedoch nicht vor, so beginnt das
Programm einen Galgen mit einem Gehängten zu zeichnen. Dies geschieht in mehreren Etappen
(bei jedem Fehlversuch kommt ein Teilstrich dazu), so dass der Spieler 8 Fehlversuche hat. Hat er
dann das Wort noch nicht herausgefunden, so hat er verloren und hängt symbolisch am Galgen.
Schnittstelle der Klasse Hangman:
Code:
public class Hangman { 
    //Deklaration von globalen Variablen und Konstanten. 
    //Leerer Konstruktor: 
    //Ein Wort soll per Zufall aus einem Array mit Woertern fuer das Spiel 
    //ausgewaehlt werden. 
    public Hangman() { ... } 
     
    //Konstruktor mit einem Parameter (dem zu erratenden Wort) 
    public Hangman(String word) { ... } 
    //Methode, mit der ein Spiel gestartet wird. 
    public void play() { ... } 
    //Methode welche das zu erratende Wort dem Spieler praesentiert. Die bisher noch  
    //nicht erratenen Zeichen sollen mit einem Unterstrich ausgegeben werden. 
    private void showWord() { ... } 
    //Methode, welche den Galgen zeichnet. Diese wird aufgerufen wenn der Spieler kein 
    //neues Zeichen erraten konnte und dieses Zeichen auch noch nie geraten wurde. 
    private void showHangman() { ... } 
}

Beispiel einer Programmausgabe:
HANGMAN:
Word to guess: _ _ _ _ _ _ _ _ _ _ _
# misses left = 8
guess> e
Word to guess: _ _ _ e _ _ _ _ e _ _
# misses left = 8
guess> i






|
/ \
Word to guess: _ _ _ e _ _ _ _ e _ _
# misses left = 7
guess> a



|
|
|
|
/ \
Word to guess: _ _ _ e _ _ _ _ e _ _
# misses left = 6
guess> n
Word to guess: _ _ _ e n _ _ _ e n _
# misses left = 6
guess> h
Word to guess: _ _ _ e n _ _ h e n _
# misses left = 6
guess> g
Word to guess: _ _ _ e n g _ h e n _
# misses left = 6
guess> s
Word to guess: s _ _ e n g _ h e n s
# misses left = 6
guess> l
|
|
|
|
|
|
|
/ \
Word to guess: s _ _ e n g _ h e n s
# misses left = 5
guess> c
|---
|
|
|
|
|
|
/ \
Word to guess: s _ _ e n g _ h e n s
# misses left = 4
guess> h
h was already entered previously!
Word to guess: s _ _ e n g _ h e n s
# misses left = 4
guess> c
c was already entered previously!
Word to guess: s _ _ e n g _ h e n s
# misses left = 4
guess> l
l was already entered previously!
Word to guess: s _ _ e n g _ h e n s
# misses left = 4
guess> i
i was already entered previously!
Word to guess: s _ _ e n g _ h e n s
# misses left = 4
guess> p
|-----
| |
|
|
|
|
|
/ \
Word to guess: s _ _ e n g _ h e n s
# misses left = 3
guess> r
Word to guess: s _ r e n g _ h e n s
# misses left = 3
guess> o
|-----
| |
| O
|
|
|
|
/ \
Word to guess: s _ r e n g _ h e n s
# misses left = 2


guess> v
|-----
| |
| O
| \|/
|
|
|
/ \
Word to guess: s _ r e n g _ h e n s
# misses left = 1
guess> m
|-----
| |
| O
| \|/
| |
| |
| / \
/ \
you lose!!!

Weiters ist ein Testprogramm zu schreiben, welches beide Konstruktoren verwendet und die
Funktionalität der Klasse Hangman überprüft.
Hinweise:
Die Eingabe eines Buchstabens zum 2ten Mal durch den Benutzer trägt nicht dazu bei, dass der
Galgen weiter aufgebaut wird. Falls dieser Fall eintrifft, soll eine entsprechende Meldung
ausgegeben werden.
Ihre Programmausgabe soll der gezeigten beispielhaften Programmausgabe entsprechen.
Sie können selbstverständlich noch weitere Methoden für die Klasse Hangman definieren.





so jetzt der code mal :

main.java:


Code:
public class Main {

   
    public static void main(String[] args) {
        Hangman hangman = new Hangman();
        hangman.play();
    }

}

hangman.java:

Code:
import java.util.Vector;

public class Hangman {

    String[] words = {"scheisdanix", "tues", "ella", "kaneaftokanedo"};
    int trys = 0;
    int missesLeft = 8;
    String word = "";
    boolean ende = false;
    boolean erraten = false;
    Vector guesses = new Vector();
    //Deklaration von globalen Variablen und Konstanten. 
    //Leerer Konstruktor: 
    //Ein Wort soll per Zufall aus einem Array mit Woertern fuer das Spiel 
    //ausgewaehlt werden. 

    public Hangman() {
        word = words[(int) (Math.random() * 4)];
    }

    //Konstruktor mit einem Parameter (dem zu erratenden Wort) 
    public Hangman(String word) {
        this.word = word;
    }
    //Methode, mit der ein Spiel gestartet wird. 

    public void play() {
        String guess;
        IO.writeLn("HANGMAN:");
        while (!this.ende) {
            this.showWord();
            IO.write("guess> ");
            guess = IO.readWord();
            this.addGuess(guess.charAt(0));
            if (this.missesLeft < 8) {
                this.showHangman();
            }
            if (this.missesLeft == 0) {
                IO.writeLn("you lose!!!");
                this.ende = true;
            } else if (this.istWortErraten()) {
                IO.writeLn("you win!!!");
                this.showWord();
                this.ende = true;
            }
        }
    }

    private void addGuess(char guess) {
        if (!guesses.contains(guess)) {
            this.guesses.add(guess);
            CharSequence charSequence = Character.toString(guess);
            if (!word.contains(charSequence)) {
                this.missesLeft--;
            }
            this.trys++;
        }
    }

    private boolean istWortErraten() {
        for (int i = 0; i < word.length(); i++) {
            if (!guesses.contains(word.charAt(i))) {
                return false;
            }
        }
        return true;
    }

    //Methode welche das zu erratende Wort dem Spieler praesentiert. Die bisher noch  
    //nicht erratenen Zeichen sollen mit einem Unterstrich ausgegeben werden. 
    private void showWord() {
        //Methode, welche den Galgen zeichnet. Diese wird aufgerufen wenn der Spieler kein 
        //neues Zeichen erraten konnte und dieses Zeichen auch noch nie geraten wurde. 
        IO.write("Word to guess: ");
        for (int i = 0; i < this.word.length(); i++) {
            if (this.guesses.contains(this.word.charAt(i))) {
                IO.write(" " + this.word.charAt(i));
            } else {
                IO.write(" _");
            }
        }
        IO.writeLn();
        IO.writeLn("# misses left: " + this.missesLeft);
    }

    private void showHangman() {


        switch (missesLeft) {
            case 0:
                IO.writeLn(" |-----");
                IO.writeLn(" |    |");
                IO.writeLn(" |    0");
                IO.writeLn(" |   \\|/");
                IO.writeLn(" |    |");
                IO.writeLn(" |    |");
                IO.writeLn(" |   / \\ ");
                IO.writeLn("/ \\ ");
                break;
            case 1:
                IO.writeLn(" |-----");
                IO.writeLn(" |    |");
                IO.writeLn(" |    0");
                IO.writeLn(" |   \\|/");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn("/ \\ ");
                break;
            case 2:
                IO.writeLn(" |-----");
                IO.writeLn(" |    |");
                IO.writeLn(" |    0");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn("/ \\ ");
                break;
            case 3:
                IO.writeLn(" |-----");
                IO.writeLn(" |    |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn("/ \\ ");
                break;
            case 4:
                IO.writeLn(" |---");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn("/ \\ ");
                break;
            case 5:
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn("/ \\ ");
                break;
            case 6:
                IO.writeLn(" ");
                IO.writeLn(" ");
                IO.writeLn(" ");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn(" |");
                IO.writeLn("/ \\ ");
                break;
            case 7:
                IO.writeLn(" ");
                IO.writeLn(" ");
                IO.writeLn(" ");
                IO.writeLn(" ");
                IO.writeLn(" ");
                IO.writeLn(" ");
                IO.writeLn(" |");
                IO.writeLn("/ \\ ");
                break;



        }


    }
}

so meine probs sind: irgendwie funktioniert die showhangman methode nicht weil immer nur das erste aufgerufen wird egal wieviele misses es sind. Und dass der hangman nur gezeigt wird wenn ein miss runterzählt
Dann es wird nur immer das gleiche wort genommen irgendwie funktioniert die math.random nicht...

Was ich noch nicht habe ist dass wenn ein gleicher buchstabe nocheinmal aufgerufen wird dass er ausgibt dass der schon aufgerufen wurde hat da jemand ne idee?
 

Landei

Top Contributor
Mit dem Random kann ich dir helfen:
Code:
import java.util.Random;
...
private static Random random = new Random();
...
word = words[random.nextInt(words.length)]; 
...

Was ich noch nicht habe ist dass wenn ein gleicher buchstabe nocheinmal aufgerufen wird dass er ausgibt dass der schon aufgerufen wurde hat da jemand ne idee?

Code:
      if (!guesses.contains(guess)) {
         //wie gehabt 
      } else {
         IO.writeLn("Den hattest du schon, du Dödel!");
      }
 

Unkownsyntax

Bekanntes Mitglied
für die random muss irgendwo anders ein fehler sein weil auch wenn ich word=words[0] sage gibt er nicht das erste wort von der länge aus....
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Brauche ein bisschen Hilfe bei einem Programm Java Basics - Anfänger-Themen 10
D Hilfe bei einem Programm Java Basics - Anfänger-Themen 4
M Hilfe bei einem einfachen Java-Programm Java Basics - Anfänger-Themen 41
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
B Brauche Hilfe zu einem Code Java Basics - Anfänger-Themen 5
C Hilfe bei einem Anfängerprojekt Java Basics - Anfänger-Themen 25
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
A regulären Ausdruck mit Hilfe der Klasse Scanner in einem String finden Java Basics - Anfänger-Themen 2
B Erste Schritte Brauche Hilfe bei einem Java-Taschenrechner Java Basics - Anfänger-Themen 11
E Hilfe bei einem Regulären Ausdruck Java Basics - Anfänger-Themen 7
B Hilfe zum einem Problem mit Vector Java Basics - Anfänger-Themen 8
G Textfeld und Label in einem Tab? Anfänger braucht Hilfe Java Basics - Anfänger-Themen 3
S bräuchte hilfe bei einem kleinen prog Java Basics - Anfänger-Themen 3
S Hilfe bei einem Java-Anfängerprogramm. Java Basics - Anfänger-Themen 10
5 Hilfe ich hab ein problem mit einem QT Java Basics - Anfänger-Themen 2
G Hilfe bei einem Code Java Basics - Anfänger-Themen 3
K mehrere DB Einträge in einem JTable darstellen ?HILFE! Java Basics - Anfänger-Themen 2
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
E Hilfe bei rekursiver Funktion Java Basics - Anfänger-Themen 3
H pdf stempel - Hilfe erbeten Java Basics - Anfänger-Themen 6
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
A Hilfe beim Lesen von Pfaden und Systemvariablen Java Basics - Anfänger-Themen 3
F RegEx Hilfe Java Basics - Anfänger-Themen 5
S Hilfe bei Endlosschleife Java Basics - Anfänger-Themen 2
S Hilfe bei Praktischen Aufgaben von Arrays Java Basics - Anfänger-Themen 39
U Ich bräuchte Hilfe Java Basics - Anfänger-Themen 1
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
Justin4687 Benötige Hilfe bei folgender Aufgabe Java Basics - Anfänger-Themen 2
aero043 Hilfe bei BlueJ Hausübung Java Basics - Anfänger-Themen 27
S Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 5
P Hilfe gesucht Java Basics - Anfänger-Themen 11
D Hilfe bei Calculator Test Java Basics - Anfänger-Themen 15
R Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
Zentriks Hilfe zu Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 5
R Java Bücher hilfe Java Basics - Anfänger-Themen 9
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
I Scheduling: "Quartz" verwenden, Hilfe bei Umstellung Java Basics - Anfänger-Themen 3
I Hilfe bei Klausur Frage Java Basics - Anfänger-Themen 8
L Hilfe! Liste mit Items werden ausgegeben aber nicht in zufälliger Reihenfolge Java Basics - Anfänger-Themen 6
Ekooekoo Hilfe spiel Java Basics - Anfänger-Themen 5
SpiritsHuner Hilfe!! Java Basics - Anfänger-Themen 16
Lacotto Java Kurs Aufgaben Hilfe Java Basics - Anfänger-Themen 14
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
D Hilfe bei einer Aufgabe mit for-Schleife Java Basics - Anfänger-Themen 6
X Hilfe beim Übertragen in eine For-Schleife Java Basics - Anfänger-Themen 1
Neuling47 Denkfehler? Hilfe Java Basics - Anfänger-Themen 11
S Hilfe bei Umänderung von Java Code Java Basics - Anfänger-Themen 16
Robert_Klaus Hamster java Simulation Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
D Bitte um Hilfe muss es schnellstmöglich erledigen Java Basics - Anfänger-Themen 15
L Hilfe bei RegEx Java Basics - Anfänger-Themen 4
I Bitte um Hilfe zu unterstehenden Code Java Basics - Anfänger-Themen 6
Neuling47 bräuchte dringend hilfe Java Basics - Anfänger-Themen 6
D Bräuchte Hilfe im Bezug zum printarray() Java Basics - Anfänger-Themen 4
M Bitte um Hilfe bei 2DArrays Java Basics - Anfänger-Themen 8
HeiTim Array hilfe Java Basics - Anfänger-Themen 14
M LCD-Ziffern-Hilfe Java Basics - Anfänger-Themen 6
özkan hilfe!! Java Basics - Anfänger-Themen 4
D Abrechnung bitte um hilfe Java Basics - Anfänger-Themen 25
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
D Zahlentabelle Anfänger braucht Hilfe Java Basics - Anfänger-Themen 1
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
S Interaktive Abfrage, Hilfe mit Schleifen! Java Basics - Anfänger-Themen 6
N Hilfe bei der Installation Java Basics - Anfänger-Themen 2
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
S Hilfe bei Programmierung einer Hotelabrechnung Java Basics - Anfänger-Themen 5
enjoykimii Strukturierte Programmierung Hilfe Java Basics - Anfänger-Themen 29
H Bräuchte hilfe Java Basics - Anfänger-Themen 3
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
H Brauche Hilfe Java Basics - Anfänger-Themen 2
D Dijkstra Algorithmus Hilfe!! Java Basics - Anfänger-Themen 9
H Hilfe Java Basics - Anfänger-Themen 6
H Brauche hilfe Java Basics - Anfänger-Themen 3
M Hilfe - Array Aufgabe Java Basics - Anfänger-Themen 8
R Schulaufgabe, Bruache Hilfe mit non-static Methoden Java Basics - Anfänger-Themen 2
kevkev Hilfe bei Schiffe versenken Java Basics - Anfänger-Themen 5
FelixxF Erste Schritte Hilfe bei Fußball Manager Java Basics - Anfänger-Themen 2
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
C Brauche Hilfe um ein Programm zu schreiben Java Basics - Anfänger-Themen 8
josfe1234 Hilfe access denied ("java.io.FilePermission" " " "read") Java Basics - Anfänger-Themen 12
Vivien Hilfe bei Type Conversion Java Basics - Anfänger-Themen 3
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
J Doppelt verkette Liste ich bitte um Hilfe Java Basics - Anfänger-Themen 4
N Laufzeitberechnung - dringende Hilfe! Java Basics - Anfänger-Themen 1
G Java Hilfe Java Basics - Anfänger-Themen 3
J Java List, Bitte um Hilfe Java Basics - Anfänger-Themen 15
J Java List, bitte um Hilfe Java Basics - Anfänger-Themen 3
U anfänger braucht hilfe . wir konnten die aufgaben nicht beantworten Java Basics - Anfänger-Themen 5
A Schleifen, Hilfe! Java Basics - Anfänger-Themen 6
LeonDerStudent Hilfe bei Uniprojekt Java Basics - Anfänger-Themen 2
H Brauche Hilfe in Java Eclipse Programmieraufgabe Neuling Java Basics - Anfänger-Themen 3
B Hilfe bei Map Liste erstellen Java Basics - Anfänger-Themen 10
Kapfski Was habe ich falsch gemacht? Hilfe! Java Basics - Anfänger-Themen 17
R Java (Eclipse) "Lagerverwaltung" HILFE Java Basics - Anfänger-Themen 13
M Bräuchte Hilfe bei diesen Methoden Java Basics - Anfänger-Themen 4
dieter000 Aufgabe Hilfe Java Basics - Anfänger-Themen 18
Gaudimagspam Dringend Java Hilfe benötigt Java Basics - Anfänger-Themen 19
jonathanpizza Hilfe bei einer Übungsaufgabe Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben