# Hangman Hilfe



## Newbie-Java (5. Jan 2014)

Hallo,

ich häng grad bei einer - meiner Meinung nach - kleinen Sache, aber ich komme echt nicht weiter...
Ich will Hangman grafisch umsetzen, allerdings muss es vorher erst in der Konsole laufen.
Deswegen habe ich 2 Klassen, die eine ist die ConsoleTest Klasse und die andere das Spiel an sich. Wird später alles weiter ausgebaut. Das gesuchte Wort ist im Moment fest und ist HANGMAN.

Mein Problem im Moment: Ich kann bei richtig eingebenem Buchstabe den "_" nicht ersetzen, dass man sieht, wo man richtig war...


```
import java.util.Random;
import acm.program.*;
import acm.util.RandomGenerator;

@SuppressWarnings("serial")

public class HangmanGame extends ConsoleProgram{
		        
public String guessedWord = "HANGMAN";
	
int counter = 8;

public String usedChars = "";


public boolean guess(char charAt) {
	
	
    char charBig = Character.toUpperCase(charAt);
	
	for (int i = 0; i < guessedWord.length(); )    {   
	
          if(guessedWord.charAt(i++) == charBig)
         {
        	 counter++;    
        	         	 
             return true;
                                     
         }
                  
                                 
	}
	
	    	  
    usedChars += charBig;
     
	return false;
	
}


public String getUsedChars() {
	
	
	return usedChars;
	
}

	 public String getPlaceHolders() {
		
		 String Placeholder = "";
		
		for (int i = 0; i < guessedWord; i++) {
			
		
			 Placeholder += usedChars.indexOf( guessedWord.charAt( i ) ) >= 0 ?
      			 guessedWord.charAt( i ) : "_";
			
					
		}
		
				
		return Placeholder;
	}

	public boolean isGameLost() {
		
		if (counter == 0) {
			
			return true;
		}
		
		return false;
		
	}

	public boolean isGameWon() {
		// TODO Auto-generated method stub
		return false;
	}

	public int getGuessesLeft() {
		counter--;
		return counter;
	}

		
	}
```




```
import acm.program.ConsoleProgram;


public class ConsoleTest extends ConsoleProgram {
  
	public void run() {
		
		
		HangmanGame hangman = new HangmanGame ();
		

		 while ( true ) {
			 
		 String line = readLine (" Guess a letter : ");
		 
		 println (" Letter is in word : " + hangman.guess (line.charAt(0)));
		 println (" Word looks like this : " + hangman.getPlaceHolders ());
		println("Used Letters: " + hangman.getUsedChars());
		 
		 if ( hangman.isGameLost ()) {
			 
		 println (" You lost ");
		 
		 break ;
		 }

		 if ( hangman.isGameWon ()) {
		 println (" You win.");
		break ;
		 }
		 println (" Guesses left : " + hangman.getGuessesLeft ());
		 }
		 println (" Correct word was : HANGMAN");
		 }
		
		
		
	}
```

Er malt mir genauso viele "_" wie Hangman Zeichen hat, aber wenn ein richtiges Zeichen eingebenen wurde, ersetzt er es nicht... 

Kann mir jemand nen Anstoß geben, wie man das umsetzen könnte?

Danke!


----------



## javampir (6. Jan 2014)

Hallo,
du würdest dir viel leichter tun, wenn du in deinem Code statt Strings deine Zeichen selber als Chararrays nehmen würdest. Dann kannst du immer einfach die einzelnen Zeichen durchlaufen. usedChars müsstest du dann von vorn herein groß genug machen (je nach dem, wie viele Züge du erlaubst). (Sollte dir das nicht dynamisch genug sein, kannst du immer noch auf ArrayList<Char> ausweichen...  )
In getPlaceHolders (englisch ......) prüfst du dann an jeder Stelle deines Wortes, ob das aktuelle char in usedChars drinnen ist. Wenn ja, dann halt das Zeichen, sonst "_".
Gruß, javampir


----------

