C# Problem bei Hangman

T

toffi

Hallo,
ich hoffe ihr könnt mir helfen.

Ich habe das Problem, dass der gefundene Buchstabe nicht ersetzt wird, der Rest funktioniert.

Hier einmal der Code:
C#:
      private void weiter_Click(object sender, EventArgs e)
        {
            gwort = gesuchteswort.Text;
            for (int zeichen = gwort.Length; zeichen > 0; zeichen--)
            {
                lösung += "-";
                loesung.Text = lösung;
            }
        }

      private void Test_Click(object sender, EventArgs e)
        {
            Boolean result = true;
            string buchs = eingegebenerbuchstabe.Text;
            string k;

            for (int i = 0; i < gwort.Length; i++)
            {
                int j = 0;
                k = lösung.Substring(j,1);

                if (result = k.Equals("a") && buchs == "a")
                    k = "a";
                 .....
                if (result = k.Equals("z") && buchs == "z")
                    k = "z";
                j += 1;
            }

            if (result == false)
            {
                used.Text += buchs;
                fail += 1;
                if (fail == 1)
                    basis.Visible = true;
                if (fail == 2)
                    part1.Visible = true;
                    ....
                if (fail == 11)
                {
                    part10.Visible = true;
                    MessageBox.Show("Du hast verloren, das Wort war '"+gwort+"'", "Pech");
                }
                result = true;
            }            
            loesung.Text = lösung;

            if (loesung.Text == gwort)
            {
                MessageBox.Show("Du hast Gewonnen","Glückwunsch");
            }
        }
Vermutlich geht es auch einfacher doch ich würd es gerne in dieser (oder einer sehr ähnlichen form) lösen.
Falls es dieses Thema schon gibt, habe ich es nicht gefunden, könnte dann jemand evtl. den link posten?
 
Zuletzt bearbeitet von einem Moderator:
Hi und herzlich willkommen

Ich hab das Thema mal ins .NET-Forum verschoben
Ich kann jetzt nur vermuten, wo genau dein Problem liegt! Gehts um die Variable "k"? Du weißt diesem zwar einen Wert zu, aber schreibst diese später nicht wieder in die Lösung
 
ja da liegt wohl das Problem
nur wiir bringe ich 'k' jetzt so ein, dass als zwischenlösung dann (z.b. bei hallo) -a---- da steht?

schonmal danke für die schnelle antwort
 
In deiner Schleife baust du den String schon wieder zusammen, wenn der Buchstabe enthalten ist (das weißt du ja) setzt du ihn in den Lösungsstring, ansonsten ein "-".
 
Meinst du so?
Code:
 for (int i = 0; i < gwort.Length; i++)
            {
                int j = 0;
                k = lösung.Substring(j,1);
 
                if (result = k.Equals("a") && buchs == "a")
                    k = "a";
                else
                    k = "-";
                j += 1;
                loesung.Text = lösung;
            }

Grad getestet, funktioniert leider auch nicht.
 
Moin,

Grad getestet, funktioniert leider auch nicht
Was genau funktioniert hier denn nicht :confused:

Ich hoffe, Du meinst nicht diese Zeile :
k = lösung.Substring(j,1);
:rolleyes:

Meinst du so?
Code:
for (int i = 0; i < gwort.Length; i++)
{
    int j = 0;
    k = lösung.Substring(j,1);
 
    if ( result = k.Equals("a") && buchs == "a" )
        k = "a";  // hmm, Du solltest hier vermutlich mit <+= "a"> arbeiten, aber dann auch auf einer anderen Variable !!
    else
        k = "-";  // hmm, Du solltest hier vermutlich mit <+= "a"> arbeiten, aber dann auch auf einer anderen Variable !!
    
    j += 1;
    loesung.Text = lösung;
}

siehe meine Kommentare - so hast Du allenfalls nur den letzten Buchstaben auf dem String k stehen !

gruß
Klaus
 
Das Problem ist, egal was ich als Wort nehme (auch bei 'aaa'), wird mir 'a' als falscher Buchstabe angezeigt und der Lösungstext ändert sich nicht.

In der If- Abfrage habe ich jetzt auch mal eine andere Variable als 'k' zum Zwischenspeichern genommen (auch mit += "a"). Das Ergebnis bleibt das gleiche.
 
Hi

Du änderst doch den String "lösung" nicht. Das heißt, du schreist das in die TextBox/Label, was vorher drin stand.
Erstelle eine tempäre Variable. An diese fügst du ein "-" (mit +=), wenn das Zeichen in der Lösung nicht enthalten ist oder eben das richtige Zeichen, wenn die Eingabe korrekt war.

Diesen String schreibst du dann in die TextBox.

Zudem solltest du dich mit dem Debugger vertraut machen. Wenn du mit der Maus über eine Variable/Property gehst, wird die angezeigt, welchen Wert diese hat. So kannst du auch besser verfolgen, wie dein Programm arbeitet
 
Hey,
Danke für den Tipp mit dem Debugger, das hat mir sehr geholfen.
Dadurch konnte ich auch noch andere Fehler finden.

Es funktioniert auch endlich. :D
Jetzt muss ich das nur noch für alle Buchstaben machen und ich habs geschafft. :)

Vielen Dank an euch.
 

Neue Beiträge

Zurück