# Schon wieder ein Mastermind



## Camogolf (29. Apr 2015)

Hallo Leute,

wir sollen als Testat ein Mastermind Spielchen schreiben.
Die Spielregeln
6 Verschiedene Farben.
4 Sollen zufällig gewählt werden.
4 Sollen vom Benutzer eingegeben werden.
Das Ganze ohne Parameter... ergo Globale Variablen. :wuerg:


Wir sollen das Spiel in verschiedene sinnvolle Methoden gliedern.
Einlesen
Auswerten
Bewertung

Beim Auswerten habe ich nu einen Bug den ich einfach nicht fixen kann..

Zum Bug Wenn der Benutzer seine 4 eingaben macht und diese dann alle die Korrekte Position und Farbe haben
soll das Programm eigentlich nur entsprechend 4 mal Farbe und Position ausspucken. Zufalls bedingt schiebt er noch ein Separates "Farbe" dazwischen... ich habe das Ganze einige male ausgeführt doch ich konnte kein Schema entdecken es wirkt schon komplett Zufällig, ebenso zufällig ist es wenn man 4 die Gleiche Farbe eingibt die an einer Stelle eben Korrekt wäre: Also angenommen 0 Rot, 1 Blau, 2 Gold, 3 Weiß, Eingabe 0 Rot, 1 Rot, 2 Rot, 3 Rot. Dann wird manchmal nur 3 mal Farbe ausgegeben, mal das Richtige sprich: 
Farbe und Position, Farbe, Farbe, Farbe.
Manchmal aber auch mehr als 6 mal Farbe und kein mal Farbe und Position. 
Ich denke das beides irgendwie zusammen hängt.

Hier der Quellcode..


```
import java.util.Scanner;public class Mastermind {
    static final String [] FARBEN  = {"schwarz", "rot", "gold", "grün", "blau", "weiß"};
    static String [] kombination = new String [4];
    static String [] eingabe = new String [4];
    static boolean [] punkteStelle = new boolean [4];
    static boolean [] eingabeUser = new boolean [4];
    static boolean [] kombiPc = new boolean [4];
    static int versuche=0;
     
    public static void main(String[] args) {
         
        for (int zaehler=0; zaehler<4; zaehler++){
            kombination [zaehler] = FARBEN[(int)(Math.random()*6)];
            System.out.println(kombination[zaehler]);
        }
         
        auswerten();
        bewerten();
    }
    public static void einlesen(){
        System.out.println("Geben Sie nach einander einzeln vier Farben ein: ");
        System.out.println("Die Farben sind: schwarz, rot, gold, grün, blau und weiß");
        for(int lesen=0;lesen<4;lesen++){
            eingabe [lesen] = new Scanner (System.in).nextLine();
        }   
    }
    public static void auswerten(){
        do{
            einlesen();
            for (int stein=0;stein<4; stein++){
                for (int stelle=0; stelle<4; stelle++){
                        if (!kombiPc[stelle] && !eingabeUser[stelle]){
                            if (stelle==stein && eingabe[stein].equals(kombination[stelle])){
                                System.out.println("Farbe und Position");
                                kombiPc[stelle]=true;
                                eingabeUser[stelle]=true;
                                punkteStelle[stelle]=true;
                            }
                        }
                        if (kombiPc[stelle] && eingabeUser[stelle]){
                            if (stein!=stelle && eingabe[stein].equals(kombination[stelle])) {
                                System.out.println("Farbe");
                            }
                        }
                }
            }
            versuche++;
            System.out.println ("Anzahl der Versche: " +versuche);
        }while(versuche<=12);        
    }
    public static void bewerten(){
         
         
    }
}
```

Schon mal lieben Dank im voraus. =)


----------

