Probleme mit Hangman

Startseite Foren Deutsches LiveCode-Forum Probleme mit Hangman

Ansicht von 7 Antwort-Themen
  • Autor
    Beiträge
    • #25354
      bonwolly
      Teilnehmer

        Hallo,
        bin gerade dabei das Kapitel „Hangman“ durchzuarbeiten. Mein Problem ist, glaube ich, der Part „mousechar“ Ich habe mir zur Kontrolle zwei Textfelder eingebaut und habe festgestellt, dass das Ratewort ermittelt wird, aber der Buchstabe unter der Maus (mousechar) offensichtlich nicht. Habe schon nach Rechtschreibfehlern gesucht ( ist nicht gerade meine Stärke 🙂 ) komme aber leider nicht weiter. Kann mir jemand helfen?

        global rateWort, buchstabe, fehler
        on ermittleWort
        set the icon of the button „hangman“ to empty
        put fld „langerText“ into wortListe
        put the number of words of wortListe into anzahl
        put random (anzahl) into zufallsWort
        put word zufallsWort of wortListe into rateWort
        put toUpper (rateWort) into rateWort
        put rateWort into fld „testfeld“
        end ermittleWort

        on zeileAnzeigen
        put empty into fld „dasWort“
        repeat for each char c in rateWort
        put „_ “ after fld „dasWort“
        end repeat
        end zeileAnzeigen

        on auswertung
        put the mousechar into buchstabe
        put buchstabe into fld „testfeld1“
        if buchstabe is in ratewort then
        buchstabeZeigen
        else
        galgenZeichnen
        end if
        end ausWertung

        on buchstabeZeigen
        put the number of chars of rateWort into anzahl
        repeat with x = 1 to anzahl
        if (char x of ratewort) = buchstabe then
        put buchstabe into char ( x*2-1) of fld „dasWort“
        end if

        end repeat
        end buchstabeZeigen

        on galgenZeichnen
        add 1 to fehler
        set the icon of btn „hangman“ to the id of img („hangman“&fehler)
        end galgenZeichnen

        on endauswertung
        if fehler = 6 then
        answer „Leider gescheitert! Das richtige Wort war : „&ratewort
        end if
        if „_“ is not in „dasWort“ then
        answer „Glückwunsch! Das Wort ist komplett!“
        end if
        end endauswertung

        Vielen Dank und beste Grüße
        Wolfgang

      • #25397
        bonwolly
        Teilnehmer

          ok, ich hab da noch mal rumprobiert und habe festgestellt das dies hier das Problem zu sein scheint:

          on auswertung
          put the mousechar into buchstabe
          put buchstabe into fld „testfeld1“

          so ähnlich im Buch beschrieben. Ich habe nur diese Funktion auf einem einfachen Stack getestet.
          Da passiert überhaupt nichts! somit funktionert natürlich das ganze Skript nicht wirklich und man kommt beim erlernen von Live Code per Buch nicht weiter.
          Das gleiche Problem hat Jon19 vor kurzem auch hier beschrieben. Hat jemand eine Idee?
          Frohe Weihnachten und danke im Vorraus

          Wolfgang

        • #25399
          Klaus Major
          Administrator

            Hi Wolfgang,

            wie schon Jon gesagt, ich kenne das Spiel nicht, und weiß daher nicht, was und wie gespielt wird.

            Aber wann wird „auswertung“ denn ausgeführt?
            „the mousechar“ ist der Buchstabe unter der Maus, also muss selbige offensichtlich über irgendwinem Buchstaben schweben zu dem Zeitpunkt!? Sehr verwirrend… 😎

            Gruß

            Klaus

          • #25401
            bonwolly
            Teilnehmer

              Hallo KLaus,
              ich weiß leider nicht wie man hier Bilder hochladen kann. dann wäre es einfacher.
              In dem Spiel muss ein zufälliges Wort erraten werden, das in einem Textfeld ( rateWort) verdeckt durch Unterstriche dargestellt wird. In einem weiteren Textfeld befinden sich Buchstaben von A-Z. Klickt man nun mit der Maus einen richtigen Buchstaben an soll er statt der Unterstriche ( in rateWort) angezeigt werden. Wenn nicht erscheint ein Teil eines Galgens bis nach 6 Versuchen der Galgen komplett mit Leiche
              🙂 erscheint.

              Das funktioniert mit dem auswählen des Zufallswort und der Darstellung im Textfeld „rateWort“ mit den Unterstichen einwandfrei. Alleinen diese mousechar-Funktion leider nicht. Die Variable dafür ist leer!

              on auswertung
              put the mousechar into buchstabe
              if buchstabe is in ratewort then
              buchstabeZeigen
              else
              galgenZeichnen
              end if
              end ausWertung

              Gruß
              Wolfgang

            • #25426
              Klaus Major
              Administrator

                Hi Wolfgang,

                danke, den Spielverlauf habe ich mir schon zusammen gereimt, aber wann, wo und wie soll
                denn der obige Handler „on ausWertung“ aufgerufen/ausgeführt werden?

                Das ist mir völlig unklar, da der Handler ja voraussetzt, daß die Maus über irgendeinem
                Text steht -> the mousechar

                Wenn dem nicht so ist, ist diese Variable buchstabe natürlich leer.

                Gruß

                Klaus

              • #25428
                bonwolly
                Teilnehmer

                  Hallo Klaus,

                  jetzt hab ich es auf Grund deines Einwandes kapiert,“on ausWertung“ wird gar nicht aufgerufen.
                  Da fällt man als Anfänger natürlich nicht gleich drüber, zumal der Autor des Buches es eigentlich genauso beschrieben hat wie ich es ich es gemacht habe.

                  Originalauszug aus dem Buch:

                  Das Wort wird ermittelt, die Striche werden angezeigt. Dann kann es jetzt ans Raten gehen. Wenn auf einen Buchstaben geklickt wird, dann soll geprüft werden, ob sich der Buchstabe im Ratewort befindet. Falls ja, dann wird er dort eingetragen, falls nein, dann wird der Galgen ein Stück weitergezeichnet. Prinzipiell sieht das Skript dazu so aus:
                  on auswertung
                  if buchstabe is in ratewort then
                  buchstabeZeigen else
                  galgenZeichnen
                  end if
                  end auswertung
                  Das ist übrigens nicht schematisch skizziert, sondern so sieht bereits das richtige endgültige Skript aus. if buchstabe is in ratewort prüft konkret, ob der gerade gewählte Buchstabe in der globalen Variablen ratewort enthalten ist. Was noch fehlt, ist die Ermittlung des gewählten Buchstabens, über die wir schon gesprochen haben.
                  put the mousechar into buchstabe
                  Damit wird das Zeichen, über dem die Maus sich gerade befindet, in die Variable buchstabe geschrieben. Dieser Befehl muss an den Anfang des Skripts, gleich hinter on auswertung.

                  Das funktioniert so sicher nicht. Damit haben sicher schon andere Leser Probleme gehabt, z.B Jon19
                  Ich probiere mal rum, wie ich das lösen kann.

                  Vielen Dank für deine Hilfe und noch schöne Restweihnachten
                  Wolfgang

                • #25468
                  Klaus Major
                  Administrator

                    Ach so, die Lösung steht gar nicht explizit im Buch? Na, toll…

                    Eventuell sollte „on auswertung“ direkt beim Klick auf einen Buchstaben aufgerufen werden?
                    Also „on mouseup“ statt einem eigenen Handler? Das ergäbe durchaus Sinn.

                  • #25493
                    bonwolly
                    Teilnehmer

                      Hallo Klaus,

                      Ja, habe ich auch so gemacht und jetzt funktioniert es. Dafür habe ich jetzt beim nächsten Schritt, beim Anzeigen der Galgenbilder ein Problem. Dazu melde ich mich aber erst wenn ich die Lösung selber gefunden hab. Bei dieser Aufgabe im Buch scheinen mir einige Sachen nicht 100%tig zu sein. Z.B. verschwinden die Striche nicht im Textfeld, wenn die Buchstaben angezeigt werden. Wahrscheinlich liegt es an mir. Ich melde mich hier nochmal sobald ich mehr weiß.

                      LG
                      Wolfgang

                  Ansicht von 7 Antwort-Themen
                  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.