Anzeige: Goneo - Du machst das Web!
Anzeige: united-domains - Die ganze Welt der Domains
Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.
Jetzt Domain-Check bei united-domains!
Mastermind programmieren
Autor: shrk
Datum: 17.06.2009 09:19:40
Hi,
bin gerade dabei das Spiel Mastermind in Java zu programmieren. Bin soweit eigentlich schon fertig, hab nur das Problem beim Vergleich des generierten Farbcodes mit der Eingabe des Users.
Die "Farbe" wird anhand von Ziffern erstellt. 4 Ziffern im Bereich von 1-6.
1. muss die Anzahl der getroffenen Werte ausgegeben werden
2. die Anzahl der richtigen Farbe, aber an der falschen Position
die Eingabe ist kein integer sondern ein String!!
Bsp:
Code: 3212
Eingabe: 3121
--> direkte Treffer: 1 -- indirekte Treffer: 2
Bei mir gibt diese Eingabe bei indirekten Treffern 3 aus, weil er die "1" 2-mal im generierten Code findet. Wie stell ich den Vergleich da am besten an?
Danke euch
Anzeige: Goneo - Du machst das Web!
Anzeige: united-domains - Die ganze Welt der Domains
Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.
Jetzt Domain-Check bei united-domains!
Re: Mastermind programmieren
Autor: xabbuh
Datum: 17.06.2009 15:14:18
> Bei mir gibt diese Eingabe bei indirekten
> Treffern 3 aus, weil er die "1" 2-mal im
> generierten Code findet. Wie stell ich den
> Vergleich da am besten an?
Etwas Beispielcode, an dem man das Problem nachvollziehen kann, wäre schon sinnvoll.
Anzeige: Goneo - Du machst das Web!
Anzeige: united-domains - Die ganze Welt der Domains
Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.
Jetzt Domain-Check bei united-domains!
Re: Mastermind programmieren
Autor: shrk
Datum: 17.06.2009 22:17:01
> > Bei mir gibt diese Eingabe bei indirekten
> > Treffern 3 aus, weil er die "1" 2-mal im
> > generierten Code findet. Wie stell ich den
> > Vergleich da am besten an?
>
> Etwas Beispielcode, an dem man das Problem
> nachvollziehen kann, wäre schon sinnvoll.
Geb ich dir recht :) Hier mal meine Methode, die den eingegeben mit dem generierten Code vergleicht.
public static boolean compareColorCodes(String generatedCode, String inputedCode) {
int directHits = 0;
int indirectHits = 0;
boolean gameEnd = false;
int substringEnd = 1;
for(int substringStart = 0; substringStart < generatedCode.length(); substringStart++) {
if(generatedCode.substring(substringStart, substringEnd).equals(inputedCode.substring(substringStart, substringEnd))) {
directHits++;
} else if(inputedCode.contains(generatedCode.substring(substringStart, substringEnd))) {
indirectHits++;
}
substringEnd ++;
}
if(directHits == 4) {
gameEnd = true;
} else {
System.out.println("Direkte Treffer: " + directHits);
System.out.println("Indirekte Treffer: " + indirectHits);
gameEnd = false;
}
return gameEnd;
}
Anzeige: Goneo - Du machst das Web!
Anzeige: united-domains - Die ganze Welt der Domains
Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.
Jetzt Domain-Check bei united-domains!
Re: Mastermind programmieren
Autor: xabbuh
Datum: 18.06.2009 15:23:41
Ich habe deinen Code mal etwas geändert:
public static boolean compareColorCodes(String generatedCode, String inputedCode) {
    int directHits = 0;
    HashSet indirectHits = new HashSet();
    boolean gameEnd = false;
    char c;
    for(int i = 0; i < generatedCode.length(); i++) {
        c = inputedCode.charAt(i);
        if(generatedCode.length() > i && generatedCode.charAt(i) == c) {
            directHits++;
        } else if(generatedCode.indexOf(c) >= 0) {
            indirectHits.add(c);
        }
    }
    if(directHits == 4) {
        gameEnd = true;
    } else {
        System.out.println("Direkte Treffer: " + directHits);
        System.out.println("Indirekte Treffer: " + indirectHits.size());
        gameEnd = false;
    }
    return gameEnd;
}
Zum Einen habe ich eine Überprüfung auf die String-Länge eingebaut, um IndexOutOfBoundsExeptions beim Aufruf von charAt() zu vermeiden und merke mir die bereits geprüften Zahlen in einem Set, so dass jede Zahl nur ein Mal für indirekte Treffer getestet wird.
Anzeige: Goneo - Du machst das Web!
Anzeige: united-domains - Die ganze Welt der Domains
Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.
Jetzt Domain-Check bei united-domains!
Re: Mastermind programmieren
Autor: reporter
Datum: 18.06.2009 15:30:24
Hallo,
welcher Vorteil hat das "HashSet" gegenüber eine Liste?
Anzeige: Goneo - Du machst das Web!
Anzeige: united-domains - Die ganze Welt der Domains
Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.
Jetzt Domain-Check bei united-domains!
Re: Mastermind programmieren
Autor: xabbuh
Datum: 18.06.2009 15:36:02
Hi,
> welcher Vorteil hat das "HashSet" gegenüber eine
> Liste?
ein Set kümmert sich selbst darum, dass Elemente nicht doppelt eingefügt werden.
Anzeige: Goneo - Du machst das Web!
Anzeige: united-domains - Die ganze Welt der Domains
Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.
Jetzt Domain-Check bei united-domains!
Re: Mastermind programmieren
Autor: shrk
Datum: 18.06.2009 19:03:35
Hi,
danke dir erstmal für deine Hilfe. Komme leider heute nicht mehr zum testen. Aber vielen Dank vorerst!!!