HangMan

Hi Leute
ich bins mal wieder… hab ne neue Aufgabe
also ich soll etz HangMan programmieren! hab auch
scho angefangen etz hab ich des problem das ich
ned weiß, wie ich des machen kann das wenn ein
Buchstabe richtig ist er von der Textbox ins Label
bekomme und wenn er falsch ist wie ich dann mein
erstes bild herbekomme… bitte helft mir…
Danke im voraus mfg skandalös

Hallo,

ich bins mal wieder… hab ne neue Aufgabe
also ich soll etz HangMan programmieren! hab auch
scho angefangen etz hab ich des problem das ich
ned weiß, wie ich des machen kann das wenn ein
Buchstabe richtig ist er von der Textbox ins Label
bekomme

von der Textbox ins Label ist falsch. Das sind zwei befehle.
Ein mal aus der Textbox löschen ( .Text = „“ ) und ein mal in das Label an der richtigen Stelle eintragen. Dazu solltest Du das ergebnis in einer Textvariablen halten und die gesamte Variable an das Label übergeben. Für die noch nicht erratenen Zeichen zeigst Du Sterne an?

und wenn er falsch ist wie ich dann mein
erstes bild herbekomme… bitte helft mir…
Danke im voraus mfg skandalös

Entweder Du malst tatsächlich un die Picturebox, oder Du bereitetst die Bilder vor und zeigst sie dann nur an. Da kannst Du entweder alle Bilder unsichtbar auf der Form halten und mit PictureAnzeige.Image = PictureResouce1.Image das Bild übergeben oder mii PictureAnzeige.Image = Loadpicture(Pfad) von der Platte laden.

Das ist alles etwa gleich gut, reine Geschmackssache. Ich persönlich bevorzuge die Bilder von der Platte zu laden, das hält das Projekt klein und ist flexibel. Man kann die Bilder ändern ohne das Programm ändern zu müssen.

Gruß Rainer

von der Textbox ins Label ist falsch. Das sind zwei befehle.
Ein mal aus der Textbox löschen ( .Text = „“ ) und ein mal in
das Label an der richtigen Stelle eintragen. Dazu solltest Du
das ergebnis in einer Textvariablen halten und die gesamte
Variable an das Label übergeben. Für die noch nicht erratenen
Zeichen zeigst Du Sterne an?

nee Unterstriche auf die die buchstaben die richtig sind drauf geschrieben werden sollen! wie soll na ich des dann machen mit dem in die Variable übergeben? ich kenn mich echt gar nicht aus… sorry

Entweder Du malst tatsächlich un die Picturebox, oder Du
bereitetst die Bilder vor und zeigst sie dann nur an. Da
kannst Du entweder alle Bilder unsichtbar auf der Form halten
und mit PictureAnzeige.Image = PictureResouce1.Image das Bild
übergeben oder mii PictureAnzeige.Image = Loadpicture(Pfad)
von der Platte laden.

also ich hab die bilder selbst gemalen und dann in eine imageliste eingefügt… muss ich das dann mit einer if abfrage herholen oder wie?
ich bin echt totaler anfänger… tut mir leid wegen der dummen fragen…
liebe grüße skandalös

Hi,

nee Unterstriche auf die die buchstaben die richtig sind drauf
geschrieben werden sollen!

OK, auch ne Idee.

wie soll na ich des dann machen mit
dem in die Variable übergeben? ich kenn mich echt gar nicht
aus… sorry

Nimm Eine Variable, in der das Wort steht.
Nimm eine Variable, in der Du das Wort aufbaust, wie Du es anzeigen möchtest.

Wie Du Instr() in einer Schleife verwendest und weißt Du?

Zeig doch mal den Code, den Du schon hast, vergiss dabei den pre-tag nicht. (Sieh mal an den unteren Rand des Eingabefensters).

Entweder Du malst tatsächlich un die Picturebox, oder Du
bereitetst die Bilder vor und zeigst sie dann nur an. Da
kannst Du entweder alle Bilder unsichtbar auf der Form halten
und mit PictureAnzeige.Image = PictureResouce1.Image das Bild
übergeben oder mii PictureAnzeige.Image = Loadpicture(Pfad)
von der Platte laden.

also ich hab die bilder selbst gemalen und dann in eine
imageliste eingefügt… muss ich das dann mit einer if abfrage
herholen oder wie?

Die Imagelist hat einen Index, Du musst nur in einer Variablen die Fehler zählen und diese Variable als Index verwenden.

Gruß Rainer

also mein Code bis jetzt ist:

Public Class Form1
 Private Suchwort As String

 Private Sub BtnStart\_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnStart.Click

 'picHangman.Image = imlHangman.Images(7)
 Suchwort = zufaelligeWortWahl()

 lblSuchwort.Text = unterstriche(Suchwort)

 End Sub
 Private Function zufaelligeWortWahl() As String

 zufaelligeWortWahl = "Hallo"

 End Function
 Private Function unterstriche(ByVal Wort As String) As String
 Dim i As Integer
 Dim dummy As String

 dummy = ""
 For i = 1 To Wort.Length
 dummy = dummy & "\_ "
 Next

 unterstriche = dummy

 End Function
 Private Function AnzahlBuchstaben(ByVal Wort As String) As String

 Dim dummy As String = ""
 Dim ez As String
 Dim i As Integer = 0
 Dim Buchstabe As Boolean = False

 For i = 1 To Wort.Length
 ez = Mid(Wort, i, 1)
 Select Case UCase(ez) 
Groß (UCase("b") = "B")
 Case "A" To "Z"
 If Buchstabe = False Then
 dummy = dummy & UCase(ez) 
 Buchstabe = True
 End If
 Case Else
 End Select
 Next

 AnzahlBuchstaben = dummy

 End Function
Private Sub btnÜberschreiben\_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnÜberschreiben.Click

 'MsgBox(Suchwort)
 BuchstabenEingabe.Text = AnzahlBuchstaben(BuchstabenEingabe.Text)

 End Sub

also bis etz hat mein chef mir auch recht gegeben das ich des richtig mache…
liebe grü´ße Skandalös

[MOD] - Pre-Tag eingefügt

Hi,

ich hzabe ersat mal nur den Pre-Tag eingefügt, nun muss ich mir den Code erst mal ansehen. Bis später.

Gruß Rainer

Hallo,

so, ich habe mal etwas an Deinem Code herumgefummelt, entfernt, was überflüssig war oder gestört hat … Nur die Formatierung Deiner Ausgabe ist im Moment zerbröselt, die war mir erst mal nicht so wichtig.

Bilder habe ich nicht, deshalb habe ich den Teil auch erst mal noch weg gelassen, nur die Textausgabe geht jetzt und Gewonnen wird schon mal angezeigt, die Fehler hochgezählt, das wird Dein Index für die Bilder.

Bevor wir mit der Grafik anfangen, verstehst Du den Code? Fragen?

Gruß Rainer

Public Class picHangman
 Dim Suchwort As String
 Dim Zielwort As String
 Dim Fehler As Integer

 Private Sub BtnStart\_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnStart.Click
 Dim i As Integer
 Zielwort = ""
 Suchwort = zufaelligeWortWahl()
 Suchwort = UCase(Suchwort)
 For i = 1 To Suchwort.Length
 Zielwort = Zielwort + "\_"
 Next
 lblsuchwort.Text = Zielwort
 End Sub
 Private Sub buchstabenfinden()
 Dim SuchBuchstabe As Char
 Dim i As Integer, Flag As Boolean

 SuchBuchstabe = BuchstabenEingabe.Text
 For i = 1 To Suchwort.Length
 If SuchBuchstabe = Mid(Suchwort, i, 1) Then
 Mid(Zielwort, i, 1) = SuchBuchstabe
 Flag = True
 End If
 Next
 lblsuchwort.Text = Zielwort
 BuchstabenEingabe.Text = ""
 If Flag = False Then
 Fehler = Fehler + 1
 'Bild anzeigen
 End If
 If InStr(Zielwort, "\_") = 0 Then MsgBox("Gewonnen")
 End Sub

 Private Function zufaelligeWortWahl() As String
 zufaelligeWortWahl = "Hallo"
 End Function

 Private Sub btnÜberschreiben\_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnÜberschreiben.Click
 BuchstabenEingabe.Text = UCase(BuchstabenEingabe.Text)
 buchstabenfinden()
 End Sub
End Class

Guten Morgen Rainer,

Nur die Formatierung Deiner Ausgabe ist im Moment zerbröselt, die war
mir erst mal nicht so wichtig.

Was heißt das genau? Meine Ausgabe ist im Moment zerbröselt? Das ich im Moment das Programm nicht starten kann?!

Bevor wir mit der Grafik anfangen, verstehst Du den Code?
Fragen?

Ja den Code verstehe ich soweit! Fragen hab ich im Moment keine zum Code eigentlich nur noch dir Frage mit den Bildern? Wie ich die nun einfügen kann und so…

Vielen Dank für deine Hilfe und auch für die weitere Hilfe!
Liebe Grüße Skandalös

Guten Morgen,

Was heißt das genau? Meine Ausgabe ist im Moment zerbröselt?
Das ich im Moment das Programm nicht starten kann?!

nein. :smile: Das heißt, daß zwischen Deinen Unterstrichen kein Leerzeichen ist und die Anzahl Zeichen deshalb schwerer zu erkennen.
Das zu ergänzen ist ja aber nur eine Funktion mit drei Zeilen.

Bevor wir mit der Grafik anfangen, verstehst Du den Code?
Fragen?

Ja den Code verstehe ich soweit! Fragen hab ich im Moment
keine zum Code eigentlich nur noch dir Frage mit den Bildern?
Wie ich die nun einfügen kann und so…

Hmmm, dazu müsste ich nun wieder Code schreiben. Wann ich dafür Zeit habe, kann ich nicht versprechen, ich möchte keinen Ärger mit meinem Chef bekommen. :smile:

Gruß Rainer

Hallo Rainer,

nein. :smile: Das heißt, daß zwischen Deinen Unterstrichen kein
Leerzeichen ist und die Anzahl Zeichen deshalb schwerer zu
erkennen.
Das zu ergänzen ist ja aber nur eine Funktion mit drei Zeilen.

Hab ich etz durch herumspielen schon gesehen :smile: dann werd ich jetzt schon versuchen denn code herauszu bekommen! und wenn du später da bist werd ich dir sagen was ich bis dahin geschafft habe :smile:

Hmmm, dazu müsste ich nun wieder Code schreiben. Wann ich
dafür Zeit habe, kann ich nicht versprechen, ich möchte keinen
Ärger mit meinem Chef bekommen. :smile:

Bitte keinen Ärger mit deinem Chef einfangen! Ich kann noch warten :smile: und werde einfach noch selbst einiges versuchen und dich auf dem laufenden halten…
Liebe Grüße Skandalös

Hi Rainer,
Also das mit den Bildern hab ich jetzt schon ein bisschen gelöst, es erscheint beim ersten Falschen Buchstaben schon das erste Bild :smile:
Jetzt weiß ich da aber leider nicht weiter wie ich dann beim zweiten Fehler das zweite Bild herhole und so weiter…

mein Code fürs erste Bild:

If Flag = False Then
Fehler = Fehler + 1
picHangman.Image = imlHangman.Images(0)
End If

Liebe Grüße Skandalös

Hallo,

Also das mit den Bildern hab ich jetzt schon ein bisschen
gelöst, es erscheint beim ersten Falschen Buchstaben schon das
erste Bild :smile:
Jetzt weiß ich da aber leider nicht weiter wie ich dann beim
zweiten Fehler das zweite Bild herhole und so weiter…

mein Code fürs erste Bild:

If Flag = False Then
Fehler = Fehler + 1
picHangman.Image = imlHangman.Images(0)
End If

na bite, Du braichst mich doch gar nicht. :smile:

Warum schreibst Du die Variable ‚Fehler‘ nicht einfach in die Klammer?

If Flag = False Then
 picHangman.Image = imlHangman.Images(Fehler)
 Fehler = Fehler + 1
End If

Gruß Rainer

Hi

na bite, Du braichst mich doch gar nicht. :smile:

Naja nicht brauchen ist da was anderes :smile: bin froh endlich jemanden fragen zu können :smile:
Übrigens es klappt :smile: auf die Idee hätt ich auch mal kommen können…

jetzt ist eig nur noch das problem mit den Leerzeichen… und das wenn mein letztes Bild erscheint eine Box aufgeht „Verloren“. Habs schon probiert funktioniert aber i.wie nicht!

Könntest du mir vll wieder einen Denk-Anstoß geben wie ich anfangen muss danke!! :smile:
Liebe Grüße Skandalös

Hi,

Übrigens es klappt :smile: auf die Idee hätt ich auch mal kommen
können…

*gg* sag ich doch. Beim nächsten mal kommst Du drauf.

jetzt ist eig nur noch das problem mit den Leerzeichen.

Das ist doch kein Problem

Der bereits erratene Teildes Wortes und die Unterstriche werden ja mit

lblsuchwort.Text = Zielwort

ausgegeben.

An die Stelle schreibst Du den Namen einer Prozedur, z.B. ‚Ausgabe‘

Und die Prozedur Ausgabe: … (Ich tipp’s mal nur hier, ungetestet, achte bitte auf mögliche Tippfehler!)

Private Sub Ausgabe()
 Dim I as Integer
 lblsuchwort.Text =""
 For i = 1 To Zielwort.Length
 lblsuchwort.Text = lblsuchwort.Text + Mid(Zeilwort, i, 1) + " "
 Next
End Sub

OK?

Was noch fehlt: Die falsch geratenen Buchstaben solltest Du auch noch anzeigen, das wird nur eine Zeile in einem ‚Else‘ Zweig. :smile:

Findest Du die Stelle?

und das wenn mein letztes Bild erscheint eine Box aufgeht
„Verloren“. Habs schon probiert funktioniert aber i.wie nicht!

If Fehler \> 11 Then 'Wenn Du elf Bilder hast. Oder 10 ...?
 'Fehlermeldung
End If 

Gruß Rainer

Hi Rainer

Private Sub Ausgabe()
Dim I as Integer
lblsuchwort.Text =""
For i = 1 To Zielwort.Length
lblsuchwort.Text = lblsuchwort.Text + Mid(Zeilwort, i,

    • " "
      Next
      End Sub

und lblSuchwort.Text = Ausgabe()

Ok wenn ich das so mache, dann bekomme ich einen neuen Fehler und zwar: Der Ausdruck ergibt keinen Wert.

Was noch fehlt: Die falsch geratenen Buchstaben solltest Du
auch noch anzeigen, das wird nur eine Zeile in einem ‚Else‘
Zweig. :smile:

Findest Du die Stelle?

Leider nicht, ich verstehe leider auch nicht ganz was ich da genau machen soll?! Ich verstehe zwar was der Sinn dahinter ist aber leider nicht wie ich das am besten anstelle…

If Fehler > 11 Then 'Wenn Du elf Bilder hast. Oder 10 …?
'Fehlermeldung
End If

Das Klappt wieder! Man mit dir werd ich ja irgendwann ein Profie :smile: Danke!!
Liebe Grüße Skandalös

Hi,

Private Sub Ausgabe()
Dim I as Integer
lblsuchwort.Text =""
For i = 1 To Zielwort.Length
lblsuchwort.Text = lblsuchwort.Text + Mid(Zeilwort, i,

    • " "
      Next
      End Sub

und lblSuchwort.Text = Ausgabe()

Ok wenn ich das so mache, dann bekomme ich einen neuen Fehler
und zwar: Der Ausdruck ergibt keinen Wert.

Tippfehler nicht gesehen. :smile: Ich habe das e i vertauscht, ‚Zeilwort‘ statt ‚Zielwort‘ geschrieben. Das ist der Nachteil, wenn ich nicht teste.

Was noch fehlt: Die falsch geratenen Buchstaben solltest Du
auch noch anzeigen, das wird nur eine Zeile in einem ‚Else‘
Zweig. :smile:

Findest Du die Stelle?

Leider nicht, ich verstehe leider auch nicht ganz was ich da
genau machen soll?! Ich verstehe zwar was der Sinn dahinter
ist aber leider nicht wie ich das am besten anstelle…

Dann zeige ich Dir die Stelle.

 For i = 1 To Suchwort.Length
 If SuchBuchstabe = Mid(Suchwort, i, 1) Then
 Mid(Zielwort, i, 1) = SuchBuchstabe
 Flag = True
**Else**
 'Zeichen in ein Label einfügen, da es im Moment noch nicht gibt.
 End If
 Next

Gruß Rainer

Tippfehler nicht gesehen. :smile: Ich habe das e i
vertauscht, ‚Zeilwort‘ statt ‚Zielwort‘ geschrieben. Das ist
der Nachteil, wenn ich nicht teste.

ja aber ich habs nicht abkopiert ich habs selber getippt und deshalb ist bei mir kein Fehler einer solchen art vorhanden…

Dann zeige ich Dir die Stelle.

For i = 1 To Suchwort.Length
If SuchBuchstabe = Mid(Suchwort, i, 1) Then
Mid(Zielwort, i, 1) = SuchBuchstabe
Flag = True
Else
'Zeichen in ein Label einfügen, da es im
Moment noch nicht gibt.
End If
Next

ok habs jetzt gefunden und ein Label angelegt Namens lblBuchstaben so und nun muss ich da rein schreiben

 Else
 lblBuchstaben = lblBuchstaben + ??
 End If

Soweit glaub ich ist es richtig… Mein Problem ist was kommt an stelle der Fragezeichen? oder denk ich komplett falsch?!
Liebe Grüße Skandalös

Hi,

ja aber ich habs nicht abkopiert ich habs selber getippt und
deshalb ist bei mir kein Fehler einer solchen art vorhanden…

dann muss ich testen. Wenn alle Variablen richtig deklariert sind soll das so funktionieren. Geht gleich los, Mittagspause. :smile:

ok habs jetzt gefunden und ein Label angelegt Namens
lblBuchstaben so und nun muss ich da rein schreiben

 Else
 lblBuchstaben = lblBuchstaben + ??
 End If

Soweit glaub ich ist es richtig… Mein Problem ist was kommt
an stelle der Fragezeichen?

Der eingegebene Buchstabe. An der Stelle im Programm steckt der in der Variablen: SuchBuchstabe

also:

 Else
 lblBuchstaben = lblBuchstaben + SuchBuchstabe + " "
 End If

Noch ein Leerzeichen mit übergeben, damit es übersichtlich wird. :smile:

Gruß Rainer

Hi,

dann muss ich testen. Wenn alle Variablen richtig deklariert
sind soll das so funktionieren. Geht gleich los, Mittagspause.

immer mit der Ruhe will dir deine Mittagspause nicht nehmen! mach erstmal deine Pause ich kann warten :smile:

Der eingegebene Buchstabe. An der Stelle im Programm steckt
der in der Variablen: SuchBuchstabe

also:

Else
lblBuchstaben = lblBuchstaben + SuchBuchstabe

  • " "
    End If

Noch ein Leerzeichen mit übergeben, damit es übersichtlich
wird. :smile:

Bekomme dann leider wieder eine Fehlermeldung: Der ±Operator ist für die Typen „System.Windows.Forms.Label“ und „Char“ nicht definiert.
und was kann ich nun machen?
Also wie gesagt mach erstmal deine Pause ich kann warten und wenn du zeit hast schreib einfach…
Liebe Grüße Skandalös

Nachtrag
Hallo,

Else
lblBuchstaben = lblBuchstaben + SuchBuchstabe

  • " "
    End If

Mist! .Text vergessen!

 For i = 1 To Suchwort.Length
 If SuchBuchstabe = Mid(Suchwort, i, 1) Then
 Mid(Zielwort, i, 1) = SuchBuchstabe
 Flag = True
 Else
 lblBuchstaben.Text = lblBuchstaben.Text + SuchBuchstabe + " "
 End If
 Next

Gruß Rainer