Mastermind Treffer abfrage

Status
Nicht offen für weitere Antworten.

chr|s0r

Mitglied
Hallo,

ich habe ein Problem bei der Abfrage der indirekten Treffer in meiner Mastermind Applikation. Wenn die erzeugten Zahlen z.B ROT, GELB, GRÜN, BLAU sind und ich vier mal ROT eingebe bekomme ich als Ergebniss 1 Direkten und 3 Indirekte Treffer was ja falsch ist...

Hier mal die betreffende Methode:

Java:
public int[] checkTreffer(int eingabe[]) {

        //eingabe ist 4 stellen groß und beinhaltet vier Integer zahlen von 1-6 die  
        //eingegeben wurden

        //0 für kein treffer
        //1 für indirekter Treffer
        //2 für direkter Treffer

        int treffer[] = new int[4];
        for(int a = 0;a<4;a++){
            treffer[a] = 1;
        }

        //im RandomArray sind die vier Random erzeugten Zahlen zwischen 1-6
       //wobei Zahlen auch doppelt vorkommen können

        
        for (int i = 0; i < 4; i++) {
            if (eingabe[i] == randomArray[i]) {
                treffer[i] = 2;
            }
        }
        
        boolean temp;
        
        for (int i = 0; i < 4; i++) {
            temp = false;
            for (int i2 = 0; i2 < 4; i2++) {
                if (eingabe[i] == randomArray[i2]) temp = true; 
            }
            if (temp == false) treffer[i] = 0;
        }
        
        return treffer;

    }
 
Zuletzt bearbeitet:

Ezra

Bekanntes Mitglied
Dass das bei Deinem Vorgehen passiert, ist völlig logisch. Die anderen ROT-Werte sind ja tatsächlich indirekte Treffer und wissen nichts von dem ROT, das direkt getroffen hat. In solchen Fällen musst Du die indirekten Treffer ausschließen.

Edit: Versuch es mal damit

Java:
public static int[] checkTreffer(int[] eingabe) {
		 
        //eingabe ist 4 stellen groß und beinhaltet vier Integer zahlen von 1-6 die  
        //eingegeben wurden
 
        //0 für kein treffer
        //1 für indirekter Treffer
        //2 für direkter Treffer
 
        int treffer[] = new int[4];
        for(int a = 0;a<4;a++){
            treffer[a] = 0;
        }
 
        //im RandomArray sind die vier Random erzeugten Zahlen zwischen 1-6
       //wobei Zahlen auch doppelt vorkommen können
 
        
        for (int i = 0; i < 4; i++) {
            if (eingabe[i] == randomArray[i]) {
                treffer[i] = 2;
            }else{
            	for(int j = 0; j < 4; j++){
            		if(eingabe[j] == randomArray[i] && eingabe[j] != randomArray[j]){
            			treffer[j] = 1;
            		}
            	}
            }
        }
        
        return treffer;
}
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben