zweites move Objekt im laufenden Spiel

Startseite Foren Deutsches LiveCode-Forum zweites move Objekt im laufenden Spiel

Ansicht von 8 Antwort-Themen
  • Autor
    Beiträge
    • #20529
      akrages
      Teilnehmer

        Hallo,
        habe ein kleines Breakout Spiel geschrieben und hänge jetzt an zwei Dingen fest.
        1. Wenn im laufenden Spiel eine bestimmte Bedingung erfüllt wird soll ein graphic Objekt von oben nach unten durch das Spielfeld fallen.
        Hier der Code:

                 if the label of btn i is "orange" then ##Wenn ein oranger Stein getroffen wurde
                    unlock screen
                    send mouseUp to graphic "Oval"
                    add 15 to the last word of field "Score"
                    set the loc of fld "PointsOrange" to the loc of btn i
                    set the visible of fld "PointsOrange" to true
                 end if

        Das funktioniert aber nicht so richtig. Dh. das graphic Objekt fällt zwar nach unten, aber wärend es fällt stoppt der die Kugel und bewegt sich erst wieder, wenn die Anweisung im graphic Objekt fertig ausgeführt wurde.
        Ich möchte aber, dass die Kugel sich weiter bewegt und Spielbar bleibt.
        Hier der Code aus dem graphic Objekt:

        on mouseUp
           /* hid ethe cursor whilst the ball drops*/
           set cursor to none
           put the loc of me into myLocation
           /* drop the ball */
           move me to (item 1 of myLocation,572) in 40 ticks
           /*hang about for a second ... in the bottom of the bucket*/
           ##wait 1 sec
           /* restore the ball to the start location*/
           ##move me to (item 1 of myLocation,48) in 30 ticks
        end mouseUp

        Hat jemand einen Rat für mich?

      • #20532
        Klaus Major
        Administrator

          MOVE ist blocking!
          Also:

          on mouseUp
           ...
           move me to (item 1 of myLocation,572) in 40 ticks WITHOUT WAITING
           ...
          end mouseUp

          Was habt ihr eigentlich alle gegen das Dictionary, was mit einem Klick so viel Licht in euer Dunkel bringen könnte? Das war ein rein rhetorische Frage! 😎

          Noch ein paar Tips:

          ## Ein Gleicheitszeichen ist wesentlich schneller und besser erkennbar 
          ## in einem langen Text/Skript, daher verwende ich das immer anstatt IS
          ## if the label of btn i is "orange" then
          if the label of btn i = "orange" then
            unlock screen
          
            ## Messages bei SEND IMMER in Anführungszeichen
            send "mouseUp" to grc "Oval"
          
            ## Optional, aber weniger zu schreiben :-)
            ## add 15 to the last word of field "Score"
            add 15 to word -1 of fld "Score"
            set the loc of fld "PointsOrange" to the loc of btn i
            set the visible of fld "PointsOrange" to true
          end if

          Ich weiß, ich nerve, aber irgendwann wird sich das auszahlen, denn mit jeder Version wird die Engine weniger nachsichtig mit “salopper” Programmierung.

          Glaubt mir, ich arbeite seit 20 Jahren mit LC und seinen Vorfahren!

        • #20565
          akrages
          Teilnehmer

            hi.vielen Dank für schnelle die Hilfe.

            habe den Code jetzt wie folgt geändert:

            on mouseUp
               // hid ethe cursor whilst the ball drops*/
               set cursor to none
               put the loc of me into myLocation
               // drop the ball */
               move me to (item 1 of myLocation,572) in 40 ticks WITHOUT WAITING
               //hang about for a second ... in the bottom of the bucket*/
               wait 1 millisecond
               // restore the ball to the start location*/
               // move me to (item 1 of myLocation,48) in 30 ticks WITHOUT WAITING
               set the loc of me to myLocation
            end mouseUp

            Ergebnis ist, dass das graphic Object sich zwar nach unten bewegt (die Kugel bleibt jetzt weiter in Bewegung), aber das graphic Object kehrt nicht zum Startpunkt zurück.

          • #20569
            Klaus Major
            Administrator

              Was genau ist das “graphic Object” und welcher Code soll es zum “Startpunkt” zurückkehren lassen?

            • #20571
              akrages
              Teilnehmer

                1. Frage ?
                Ich habe in der IDE ein ovales gaphic Object in meine Karte gezogen und es Coins100 genannt.
                2. Frage
                move me to (item 1 of myLocation,48) in 30 ticks WITHOUT WAITING
                natürlich nicht auskommentiert.

              • #20572
                akrages
                Teilnehmer

                  2. Frage
                  set the loc of me to myLocation
                  Sorry.

                • #20575
                  Klaus Major
                  Administrator

                    Aha, danke.
                    Hm, da steht nichts, was verhindern würde, daß die letzte Zeile auch noch abgearbeitet wird!?

                  • #20577
                    akrages
                    Teilnehmer

                      Aber wenn ich mit wait 1 millisecond arbeite,
                      kehrt das graphicObject “Coins100” nicht zurück
                      wenn ich mit wait 1 Second arbeite
                      kehrt das Icon zurück aber nur wenn ich es anklicke
                      über den send "mouseUp" Befehl tut sich dann aber gar nichts mehr.
                      ich denke weil ich dieses WITHOUT WAITING mit wait 1 Second ja wieder negiere.
                      Ganz schön verzwickt.

                    • #20578
                      akrages
                      Teilnehmer

                        Ich meinte natürlich graphicObject “Coins100” und nicht Icon.

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