Discuss Scratch
- kensin3050
-
100+ posts
意外と知られていないテクニック集
([sprite1 v] の [変数 v])で、本来このブロックは自分自身を選択することはできない。この場合「sprite1」の中でこのブロックを使う時に「sprite1」を指定することができない。
しかし他のスプライトでsprite1を指定してから、ブロックをsprite1に重ねてコピーすると、sprite1の中で自分自身を指定したこのブロックを使える。
このテクニックが真価を発揮するのは「このスプライトのみ」に設定した変数(以下プライベート変数)とクローンを使う時。
本来クローンには、それぞれに個別のプライベート変数が与えられ、本体のプライベート変数を変更しても、クローンのそれが変わることはない。
しかし上のテクニックを使って作った「自分のプライベート変数」を返す引数ブロックは、例えクローンであっても本体のプライベート変数の値を返す。
クローンにとっては、実質一つで二つ分の変数を使えることになる。上手く使えばブロック量を減らせるかも?
- Monmae
-
6 posts
意外と知られていないテクニック集
ずっとブロックは、ずっと続くという意味ですが「ずっと」ブロックを使わなくても同じような事が出来る方法があります。
◯◯を送るを使ったずっと 英語で失礼します
構造
1 旗が押されたとき→2 ◯◯を送る→3 ◯◯を受け取ったとき→4 繰り返したい内容→ 5 ◯◯を送る→6 3から繰り返す
この方法はずっとのブロックを別の方法で表しただけですので、実用性はほとんどありませんが、ずっとのブロックが何らかの理由で使えなくなった時役立つのかなと思います。この方法をプロジェクトに表した物をこちら
に作りましたので、気になる方は是非ご覧ください。
◯◯を送るを使ったずっと 英語で失礼します
when green flag clicked
broadcast [◯◯ v]
when I receive [◯◯ v]他にもブロック定義でも似たような構造でずっとが作れます。
broadcast [◯◯ v]
構造
1 旗が押されたとき→2 ◯◯を送る→3 ◯◯を受け取ったとき→4 繰り返したい内容→ 5 ◯◯を送る→6 3から繰り返す
この方法はずっとのブロックを別の方法で表しただけですので、実用性はほとんどありませんが、ずっとのブロックが何らかの理由で使えなくなった時役立つのかなと思います。この方法をプロジェクトに表した物をこちら
に作りましたので、気になる方は是非ご覧ください。
Last edited by Monmae (Dec. 29, 2024 10:29:29)
- f1911018
-
100+ posts
意外と知られていないテクニック集
隠したいコードがある場合、そのコードの上にコメントを書くで隠すと簡単には見られなくなります。(書きたいコメントがない場合はやめましょう)
- hamutako
-
100+ posts
意外と知られていないテクニック集
centerを使うと、このように文字を真ん中にできる。
そして、この大きい文字は17px、普通の文字は13px、小さい文字は10px。
- ioqj
-
500+ posts
意外と知られていないテクニック集
タイマーに関するテクニック的なものです。
Scratchのプロジェクトに埋め込まれているタイマー、あれを一時停止させたい!なんて思ったことはありますか?ありませんよね(!?)
そこで今回は、マウスをクリックしたときにタイマーを一時停止させるスクリプトをご紹介します。
このスクリプトで、タイマーを一時停止させることができます。反映されるのは、変数「変数タイマー」です。
ただ、デメリットとしては、プロジェクト内でタイマーを使えなくなる、という事です。
場合によっては (2000年からの日数) ブロックを使っても再現できます。
重複はないとみています。
前に作ったプロジェクトの内容をそのまま貼り付けたっていうのは内緒
Scratchのプロジェクトに埋め込まれているタイマー、あれを一時停止させたい!なんて思ったことはありますか?ありませんよね(!?)
そこで今回は、マウスをクリックしたときにタイマーを一時停止させるスクリプトをご紹介します。
@GreenFlag が押されたとき
タイマーをリセット // 緑の旗が押されたときにタイマーはリセットされるのでこれは省略可
[タイマー2 v] を [0] にする
ずっと
もし <マウスが押された> なら
[タイマー2 v] を (変数タイマー) にする
<<マウスが押された>ではない> まで待つ
タイマーをリセット
でなければ
[変数タイマー v] を ((タイマー)+(タイマー2)) にする
end
end
このスクリプトで、タイマーを一時停止させることができます。反映されるのは、変数「変数タイマー」です。
ただ、デメリットとしては、プロジェクト内でタイマーを使えなくなる、という事です。
場合によっては (2000年からの日数) ブロックを使っても再現できます。
重複はないとみています。
前に作ったプロジェクトの内容をそのまま貼り付けたっていうのは内緒
- NeetFX
-
6 posts
意外と知られていないテクニック集
when green flag clicked
forever
set [ v] to (timer)
end
when [(timer) v] > (foo)
play sound [ v]
このプログラムで、作品内にタイマーを使っていても停止ボタンを押したときに動作をさせることが可能です
Last edited by NeetFX (Jan. 5, 2025 02:59:06)
- AI_HABU_A_PENN_sub
-
80 posts
意外と知られていないテクニック集
変わったテクニックを見つけました!
真偽は逆になりますが、ほぼ同様の方法でF,I,N,T,Yの5文字についても大小を見分けることができますよ!
使い道は思いつきませんが・・・
<(join (変数) [nfinity]) < [1]>とすることで変数の値が「I」か「i」かのどちらかの場合、「I」の場合trueとなり見分ける事ができます!
真偽は逆になりますが、ほぼ同様の方法でF,I,N,T,Yの5文字についても大小を見分けることができますよ!
使い道は思いつきませんが・・・
- f1911018
-
100+ posts
意外と知られていないテクニック集
broadcast [(自由に値を入れて)]
この、自由に値を入れて、の変数の部分に自由な数字または文字をいれると、その名前のメッセージが送られます。これにより、一つの、メッセージを送るブロックで、色々なメッセージを送ることができます。また、メッセージを受け取るがわも同じことができます。
when I receive [(自由に値を入れて)]()の中は変数です
Last edited by f1911018 (Jan. 11, 2025 22:21:05)
- pnyonyy
-
89 posts
意外と知られていないテクニック集
そこのプルダウンのところに入れられても、どこのスプライトに送られるのですか?broadcast [(自由に値を入れて)]
この、自由に値を入れて、の変数の部分に自由な数字または文字をいれると、その名前のメッセージが送られます。これにより、一つの、メッセージを送るブロックで、色々なメッセージを送ることができます。また、メッセージを受け取るがわも同じことができます。when I receive [(自由に値を入れて)]()の中は変数です
- attoma-ku
-
32 posts
意外と知られていないテクニック集
「when I receive」というハットブロックの引数部分には、文字を入力したり、他のブロックを入れたりできません。when I receive [(自由に値を入れて)]()の中は変数です
#4333にある「引数ブロック」は、「値ブロックや真偽ブロック」という意味だと思います。
- yuito2013
-
100+ posts
意外と知られていないテクニック集
#4335私もそう思います。やっぱり
-if <(foo) = [1]> then色々間違えてたので削除
-broadcast [メッセ v]
-else
-if <(foo) = [2]> then
-broadcast [ージ v]
-else
-if <(foo) = [3]> then
-broadcast [1 v]
-else
-なんでもない
-end
-end
-end
-定義 なんでもない
-stop [All v]
Last edited by yuito2013 (Jan. 12, 2025 10:40:59)
- Maruh2013
-
22 posts
意外と知られていないテクニック集
では、 「when I receive」というハットブロックの引数部分には、文字を入力したり、他のブロックを入れたりできません。
#4333にある「引数ブロック」は、「値ブロックや真偽ブロック」という意味だと思います。
fooが “x” の時にx座標を25変え、“y” の時にy座標を25変えたい場合、
broadcast (foo)とすればよいのではないのでしょうか
when I receive [x v]
change x by (25)
when I receive [y v]
change y by (25)
- inoking
-
1000+ posts
意外と知られていないテクニック集
このテクニック (#4329) の意味を理解していない方もいるようなので再投稿します。
確かにハットブロックに指定するメッセージ名はあらかじめ定義しておく必要がありますが
送るメッセージを「もし」などを使わずに変えられるということです。
#4334 からたどれるこちらを引用します。
確かにハットブロックに指定するメッセージ名はあらかじめ定義しておく必要がありますが
送るメッセージを「もし」などを使わずに変えられるということです。
#4334 からたどれるこちらを引用します。
Scratchスクリプトクイズ #513 ですが
これは実はとんでもない大発見だと思います。
この技を使うと
Scratch が言語としてサポートしていない
「関数ポインタ」や「仮想関数」のようなものを実現できます。
「関数ポインタ」を使うと、例えば
動的に処理が決定される場合に
膨大な「もし~でなければ」を使うことなく記述できます。
・これがテクニックとして使ってよいと言えるものなのか?
・イベントの応答速度は十分早いのか?
などについてはソースを確認したわけではないのですが
一応これで動くようです。
Scratch 3.0 ベータでも動作します。
サンプルを作りました。イベントの動的決定
- cotchGO
-
5 posts
意外と知られていないテクニック集
scratchで、URLとコメントを一緒に使って宣伝する方多いですよね。(例、https://scratch-mit-edu.ezproxyberklee.flo.org/projects/0000000000を見てね。等のコメント。)そういう時、読み込めないやつになってしまう事ってよくありますよね。その時、URLの後にすぐコメントを書き込むとそのリンクの最後の文字がURLから取り除かれた感じで、クリックしてもエラーになることがよくあります。また、コメントにあとすぐに、コピーをしたURLを張り付けても、読み込めず、その場合URLをそのまま書き込んだようなものになって読み込めないというよりこの場合クリックできないことになります。それを防ぐための宣伝のやり方はURLとコメントを別々のコメントにするかURLを貼った後に改行して「ぜひ見てください」みたいにコメントを書き込めば(順番は逆でも可)URLも読み込めます。