ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
609
609
EMPFEHLEN
-
Hi,
ich bin dabei Mastermind zu programmieren und bis auf eine Sache läuft es. Das wichtigste, die Treffer abfrage läuft noch nicht wie gewünscht.
Einen absoluten Treffer bekomme ich ohne Probleme, doch wenn das siegMuster z.B. "gelb" "gelb" "gruen" "gruen" ist un der Spieler "gelb" und 3-mal "rot" eingibt, bekomme ich einen absoluten (schwarzes pinnchen) Treffer (ist ja auch klar, weil an der Stelle [0] beides "gelb" ist), aber auserdem bekomme ich einen halben (weisses pinnchen) Treffer.
Hier die Methode dazu:
! siegMuster ist das random Muster, welches man erraten muss, !
! spielFeldString ist das vom Spieler eingegebene Muster. !
Bedanke mich schon mal,PHP-Code:private void treffer() {
genaueTreffer = 0;
halbeTreffer = 0;
for (int i = 0; i < siegMuster.length; i++) {
if (siegMuster[i].equals(spielfeldString[i][spielRunden])) {
genaueTreffer++;
} else
for (int j = 0; j < siegMuster.length; j++) {
if (j == i) {
continue;
}
if (siegMuster[i].equals(spielfeldString[j][spielRunden])) {
halbeTreffer++;
}
}
}
if (genaueTreffer == 4) {
getSiegDialog();
}
}
Lenny!
EDIT:
Habe es hinbekommen
PHP-Code:private void treffer() {
genaueTreffer = 0;
halbeTreffer = 0;
for (int i = 0; i < siegMuster.length; i++) {
if (siegMuster[i].equals(spielfeldString[i][spielRunden])) {
genaueTreffer++;
siegMuster[i]=siegMuster[i]+"a";
spielfeldString[i][spielRunden]=spielfeldString[i][spielRunden]+"z";
} else
for (int j = 0; j < siegMuster.length; j++) {
if (j == i) {
continue;
}
if (siegMuster[i].equals(spielfeldString[j][spielRunden])) {
halbeTreffer++;
}
}
if (siegMuster[i].charAt(siegMuster[i].length()-1) == 'a'){
siegMuster[i] = siegMuster[i].substring(0, siegMuster[i].length()-1);
}
}
if (genaueTreffer == 4) {
getSiegDialog();
}
}
Geändert von desperade (05.07.07 um 14:50 Uhr)
-
Leider ist es so noch nicht wirklich korrekt.
mit den genauenTreffer klappt jetzt alles, aber ich bekomme ein Problem mit den halbenTreffern. Wenn ich z.B. "gelb" "gelb" "rot" "rot" habe und "blau" "rot" "blau" "blau" eingebe, bekomme ich nicht einen halbenTreffer, sondern 2.
Jemand ne Idee?Geändert von desperade (06.07.07 um 13:05 Uhr)
-
Hallo,
jetzt hab ich erstmal ne Frage zu Mastermind. Ich kenne das so, dass wenn die Farbe stimmt aber nicht die Position ein "halber" Treffer ist und wenn die Position auch noch stimmt ein ganzer Treffer ist, aber in deinen Beispielen erkenne ich dass irgendwie nicht.
MFG
zEriXEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
Ja, genauso ist das.
und mit dem Vergleichwird der genaueTreffer auch abgefragt und dazu addiert.PHP-Code:if (siegMuster[i].equals(spielfeldString[i][spielRunden])) {
genaueTreffer++;
}
ist der Inhalt von siegMuster[1] gleich "gelb" und spielFeldString[1][spielRunde] auch gleich "gelb", wird genaueTreffer um eins erhöht.
Mitwird bei einem Treffer (in diesem Beispiel) bei siegMuster[1] "gelb" zu "gelba" und bei spielFeldString[1][spielRunde] "gelb" zu "gelbz". Somit ist siegMuster[1] im Durchlauf bei den halbenTreffern nicht mehr vergleichbar und dadurch wird das AnfangsproblemPHP-Code:siegMuster[i]=siegMuster[i]+"a";
spielfeldString[i][spielRunden]=spielfeldString[i][spielRunden]+"z";
umgangen.Einen absoluten Treffer bekomme ich ohne Probleme, doch wenn das siegMuster z.B. "gelb" "gelb" "gruen" "gruen" ist un der Spieler "gelb" und 3-mal "rot" eingibt, bekomme ich einen absoluten (schwarzes pinnchen) Treffer (ist ja auch klar, weil an der Stelle [0] beides "gelb" ist), aber auserdem bekomme ich einen halben (weisses pinnchen) Treffer.
Aber nun gibt es halt noch das Problem :ich bekomme ein Problem mit den halbenTreffern. Wenn ich z.B. "gelb" "gelb" "rot" "rot" habe und "blau" "blau" "rot" "blau" eingebe, bekomme ich nicht einen halbenTreffer, sondern 3.Geändert von desperade (06.07.07 um 12:55 Uhr)
-
Das ist genau das was ich nicht vestehe. Das Beispiel ist für mich aber nicht ein halber Treffer sondern ein ganzer. Da "rot" an der richtigen Stelle steht. Damit wäre es für mich ein ganzer und 0 halbe Treffer.Aber nun gibt es halt noch das Problem :
Zitat:
ich bekomme ein Problem mit den halbenTreffern. Wenn ich z.B. "gelb" "gelb" "rot" "rot" habe und "blau" "blau" "rot" "blau" eingebe, bekomme ich nicht einen halbenTreffer, sondern 3.
MFG
zEriXEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
ups, sorry meinte natürlich "gelb" "gelb" "rot" "rot" und "blau" "rot" "blau" "blau".
Ausserdem habe ich mich mit der Anzahl der halbenTreffer auch vertan. Bekomme in diesem Beispiel natürlich nicht 3, sonder 2 halbeTreffer.
Werde langsam Wahnsinnig, weil heute ja Abgabetermin ist.
Änder ich oben auch!
Geändert von desperade (06.07.07 um 13:00 Uhr)
-
Mein Vorschlag wäre, dass du jedes Array in eine eigene ArrayList packst und alles was "getroffen" hat aus der liste entfernst.
Also Beispiel: Gefordert "rot" "rot" "gelb" "rot"
eingegeben "gelb" "blau" "grün" "rot"
Wenn du jetzt die halben Treffer überprüfst, entfernst du nachher das gelb aus der Gefordert liste und brichst die überprüfung für das erste der eingegebenen ab.
ich hoffe das war halbwegs verständlich.
MFG
zEriXEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
06.07.07 13:17 #8
Ich finde das mit den Strings verändern viel zu kompliziert. Ich würde mir einen weiteren Array (trefferarray) nehmen, indem ich mir Treffer an Stellen merke und dann 3 Schleifen bauen.
1. Schleife: Genaue Treffer
Du vergleichst Eingabe und Zielmuster auf exakte Treffer. Erfolgte ein Treffer, so ist trefferarray[i]=1 sonst 0;
2. (Doppel)Schleife: Ungenaue Treffer
Du nimmst den ersten Wert aus der Eingabe und vergleichst ihn mit allen Werten im Zielmuster, an den Stellen, die noch nicht mit 1 oder 2 markiert wurden. Kommt er vor, so wird die Stelle mit 2 markiert. Das machst du für alle Stellen der Eingabe, an denen noch nicht 1 oder 2 in trefferarray steht.
3. Schleife: Auswertung von trefferarray
Du zählst die Einsen und Zweien und hast die Zahl genauer und ungenauer Treffer.Bitte gelöste Threads als erledigt kennzeichnen. Über ein Danke freut sich ein jeder Helfer.
Ähnliche Themen
-
Mysql Abfrage, ich bin am verzweifeln
Von samira_1986 im Forum PHPAntworten: 5Letzter Beitrag: 05.11.08, 22:59 -
Abfrage über 2 Tabellen / Ausgabe von Zeilen ohne Treffer
Von ukyo184 im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 09.01.08, 17:07 -
SQL zeigt nur einen Treffer statt 2 Treffer
Von AlexD1979 im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 18.12.05, 13:15 -
Abfrage und Ausgabe bin am verzweifeln!
Von kcyberbob im Forum PHPAntworten: 3Letzter Beitrag: 10.05.05, 22:36 -
Anzahl der Treffer pro Datensatz erfragen + Groß- und Kleinschreibung in Abfrage !
Von scanline im Forum Relationale DatenbanksystemeAntworten: 6Letzter Beitrag: 14.05.03, 10:24





Zitieren

Login





