2015-06-06 17 views

Odpowiedz

6

Nota prawna:

Nie ma idealnego sposobu na zrobienie tego. Jeśli możesz znieść ten fakt, możesz kontynuować.


Jest kilka sposobów na zrobienie tego.

Z repeat until

Pierwszym i najbardziej prosty następujący sposób:

scratchblocks

Ale to nie jest technicznie część skryptu - to tylko powtórzenie aż jakaś wartość zwraca true.

Dzięki niestandardowym bloku (stop this script)

W tym celu należy go wewnątrz skryptu, trzeba użyć podstępny mały trick z niestandardowych bloków.

Utwórz niestandardowy blok o nazwie, co chcesz - ale prawdopodobnie wzdłuż linii "breakable loop". Wewnątrz niej utworzyć skrypt:

scratchblocks

Korzystając stop script jesteśmy wyrwanie się skrypt, który jest aktualnie uruchomiony, który - zgodnie z Scratch, jest blok zwyczaj.

See the result! (as scratchblocks)

Z broadcast and wait

Można również użyć metody broadcast-and-wait, bardzo podobną do powyżej:

scratchblocks

Choć bardzo proponuję don” t używaj tej metody, jak gdyby jakiekolwiek inne duszki miały łamliwe pętle, których potrzebujesz, aby zmienić nazwę każdego, co może być uciążliwe po użyciu dużej ilości pętle w wielu spritach!


(Uwaga ten błąd został naprawiony w wersji 442 edytora i takich nie stosuje się następujące.)

Pomoc! Mój projekt jest teraz w tyle!

Jak @foi ma noticed, jeśli Twój kod musi być prowadzony wewnątrz ramy prawdopodobnie sprawdzonej działać bez odświeżania ekranu. Niestety, z powodu błędu w odtwarzaczu Scratch, powoduje to, że program zasadniczo przerywa działanie po aktywacji blokustop this script. Jak sobie z tym poradzić?

Wynika samą zasadę użyć podczas korzystania biegać bez odświeżania ekranu niestandardowego bloku wewnątrz forever pętli - pętla nie używa odświeżania ekranu, podczas gdy w środku robi, co pozwala na chwilę animacje bez względu na to, czy używasz turbo mode.

Oto przykład - obraz jest naprawdę zbyt długi, aby go osadzić, więc zamiast niego jest see it here.

+0

To reorganizacja! Szalony gość! – towerofnix

+1

Link do przykładowego obrazu jest martwy. – ppperry

+0

Dzięki, naprawione. GitHub nie powoduje przekierowania GISTa podczas zmiany nazwy użytkownika. – towerofnix

0

Najprostszym sposobem na blok "Powtarzaj do" byłby "lub" twój normalny stan do momentu, w którym stan rozwarcia był do końca.

Dodając zmiennej licznik pętli incremeting w pętli można użyć „powtarzać aż” do replikacji funkcję „repeat n razy” bloku

za pomocą „powtarzać aż do” bloku tylko przerwy warunek dostaniesz odpowiednik "wiecznego" bloku

Jeśli potrzebujesz innego skryptu/sprite'a, aby wywołać break, wtedy publiczna zmienna pozwoli ci zerwać pętlę z dowolnego miejsca i pozwolić pojedynczemu warunkowi przerwać pętle dla różnych duszków.

Zamieszczam obrazek bloków, ale to jest moja pierwsza odpowiedź, a strona mnie nie wpuści!

powodzenia

+0

Możesz użyć [Scratchblocks] (http://scratchblocks.github.io), aby zrobić zdjęcie. ;) Problem polega na tym, że nie wyłamyliśmy technicznie pętli z wnętrza skryptu; po prostu zapętlamy, dopóki pewne warunkowe nie zwróci true. – towerofnix

+0

Jeśli ma znaczenie złamanie środkowej pętli (coś niepotrzebnego w Scratchu), a ostatnia iteracja pętli nie jest niemożliwa do odblokowania w blokach po pętli, to _if stop script_ script może być tylko drogą do zrobienia. Transmisje nie są ładne, ale byłyby moim przeciwnikiem w stosunku do niestandardowych bloków, które okazały się mniej łatwe do wyjaśnienia niektórym dzieciom. – sjrg1

1

Można zrobić zmienną wewnątrz lub na zewnątrz repeat i zrobić skrypt tak:

repeat until [[my variable] = [e.g: 1]] 
your code 
your code 
your code 
your code 
end of repeat until 
+0

O tak, teraz czuję się głupio, że o tym nie myślę. Podoba mi się to rozwiązanie. :) – towerofnix

0

Można zrobić to powtórzyć x razy lub zrobić to mieć pewien punkt, w którym zatrzymuje się, na przykład zmienia się inna zmienna.

W przeciwnym razie nie wydaje mi się, żeby to był wat.