Discuss Scratch

inoking
Scratcher
1000+ posts

意外と知られていないテクニック集

mpg18 wrote:

ハートやほしを押したら動くシステムてどうすればいいですか。
悪用される可能性があり、そうでなくても間違った使い方しかされないので教えられません。
私の今の署名の一番下を見てください。

これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」として遊ぶためのものではない

・「『報告乱用されたそれは間違いです。Scratch チームは問題のない作品を手動で非共有にすることはありません。」※自動の場合は「多数報告された」というメッセージあり
・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている
honnkon
Scratcher
55 posts

意外と知られていないテクニック集

#3964
#3978
厳密にやる場合
@greenFlag が押されたとき::events hat
ずっと
[FPS v]を((1)/(((2000年からの日数)-(2000年からの日数保存))*(86400)))にする//わかる人にはわかるような感じ(説明が難しい)
[2000年からの日数保存 v] を (2000年からの日数) にする
[色 v] の効果を (0) にする//画像効果をなくすなどでも可(ただし画像効果関係の動作をさせていない場合)。1フレームだけ遅延できればOK
end
みたいな感じでできます。
2000年からの日数保存を作りたくないのなら
定義 FPS(2000年からの日数保存)
[FPS v]を((1)/(((2000年からの日数)-(2000年からの日数保存))*(86400)))にする
[色 v] の効果を (0) にする//うまくいかなかったらこのブロックだけに1回繰り返すを入れる
FPS(2000年からの日数)

FPS()//これを実行すればずっとFPSが計測(?)される

どもども。署名でーす。署名についてはこちらへどうぞ。(最終更新:2024/04/27 15:58ごろ)
キーワード2「は」。1から順番に並べると文ができるので、それをコメントする。
自分のサイト
https://www.honnkon.tech

セーブコードマネージャー作ってみた(何か特殊なものの共有にも使えるかも)

JavaScriptだけだといろいろやるのには無理があるか。

=================宣伝======================================

ボールゲーム
https://scratch.mit.edu/projects/935455978/
スイカゲームのようなもの!本日のスコアランキング、昨日のスコアランキング、全期間でのスコアランキング付き!

https://scratch.mit.edu/projects/888203639/ 的当てゲーム
https://scratch.mit.edu/projects/888190209/ ビル経営ゲーム(v6)パッケージ版
https://scratch.mit.edu/projects/890766250/ 鉛筆クリッカー
https://scratch.mit.edu/studios/33863663/ 短編アニメ(現在休止中 再開は不明)
https://scratch.mit.edu/studios/34232284/ スクラニメ
https://scratch.mit.edu/projects/900505681/ ∞ Fizz Buzz

Brainf*ckのインタープリンタ作ってみました
https://scratch.mit.edu/projects/945473537/

HQ9+のインタープリンタ作ってみました
https://scratch.mit.edu/projects/945470350/

「Hello, World!」の比較
https://scratch.mit.edu/projects/934847040/

===========================================================










































ここまで見るほど暇なら秘密のキーワードを見つけてくれるのかな?



























キーワード3「限」。キーワードは5つ。






キーワード1「円周率」。もう全部見つけたかな?




















キーワード4「りが」。もう全部見つけたかな?
やっほー。この文字が見えているという事は何かしたんだね。
何かっていうのはDevtoolsを使ってるか拡張機能を使ってるかその他のことをしてるってことね。
ちなみに隠し文字があるけど、見つけられたかな?
キーワードが入っているよ。キーワード5「ない」。もう全部見つけたかな?
「まだ見つけてない!」という人は、探してみてね。
すべて見つけたらプロフィール(https://scratch.mit.edu/users/honnkon)にコメントしてね。
kinnniku_pi-mann
Scratcher
100+ posts

意外と知られていないテクニック集

#3993
やってみましたがInfinityになるだけで何も起こりませんでした。

好きな証明発表ドラゴン
________________________
|                        | _,
|〇〇だから~~であり△△と考えるのが☐☐でしょう |=^ ‘~,
|                        | //:I /¯
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ ’-'‛–>
Scratch短歌
質問に 答えるときは 投稿日 その後の投稿 必ずチェック(字余り)
sasami19
Scratcher
58 posts

意外と知られていないテクニック集

#3993
ブロック定義のほうですが
[色 v] の効果を (0) にする
の場所が違うと思います。
この方法だとブロック定義を実行するときと変数の保存が同時に実行されるため
((2000年からの日数) - (2000年からの日数保存::custom))
の答えが0になり、Infinityになってしまいます。正しくは
定義 FPS(2000年からの日数保存)
[色 v] の効果を (0) にする
[FPS v] を ((1) / (((2000年からの日数) - (2000年からの日数保存::custom)) * (86400))) にする
FPS(2000年からの日数)
です。

ささみです。
連載小説「夢寐(むび)」を書いてます(更新頻度激遅)。
kinnniku_pi-mann
Scratcher
100+ posts

意外と知られていないテクニック集

#3995
正常に動作しましたが、見えにくいので
ずっと
[カウント v] を (1) ずつ変える
end

ずっと
(1) 秒待つ
[FPS v] を (カウント) にする
[カウント v] を [0] にする
end
のほうがよさそうですね。

Last edited by kinnniku_pi-mann (Jan. 7, 2024 01:37:23)


好きな証明発表ドラゴン
________________________
|                        | _,
|〇〇だから~~であり△△と考えるのが☐☐でしょう |=^ ‘~,
|                        | //:I /¯
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ ’-'‛–>
Scratch短歌
質問に 答えるときは 投稿日 その後の投稿 必ずチェック(字余り)
inoking
Scratcher
1000+ posts

意外と知られていないテクニック集

sasami19 wrote:

定義 FPS(2000年からの日数保存)
[色 v] の効果を (0) にする
[FPS v] を ((1) / (((2000年からの日数) - (2000年からの日数保存::custom)) * (86400))) にする
FPS(2000年からの日数)
(一時的な答えの正確さは別として)
上のような例は無限に再帰呼び出しされているため、原理的にはスタックオーバーフローなどでいつか破綻します。
再帰呼び出しには帰還条件が必要です。

これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」として遊ぶためのものではない

・「『報告乱用されたそれは間違いです。Scratch チームは問題のない作品を手動で非共有にすることはありません。」※自動の場合は「多数報告された」というメッセージあり
・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている
scratch-takayama
Scratcher
1 post

意外と知られていないテクニック集

クラウド変数付きのプロジェクトで、作品内で登録すると自動でメッセージじがくる仕組みを作っていました。どうやるのでしょう。ちなみに、@takechi-scratchさんの、https://scratch.mit.edu/projects/870204802/です。知ってる方ぜひお願いします。
kouhei-1
Scratcher
500+ posts

意外と知られていないテクニック集

ここで質問する前に@takechi-scratchさんに聞いてみてください。

「自由」についてあなたが考える定義を自由に私のプロフィールに投稿してください。

This signature final update: 2024-04-10 21:07(JST)
kouryou118103
Scratcher
1000+ posts

意外と知られていないテクニック集

[順番確認 v] を受け取ったとき
[順番 v] を [0] にする
(([順番 v] の長さ :: list)の長さ) 回繰り返す
< ([list v] の(順番)番目 :: list)キーが押された> まで待つ
<< ([list v] の(順番)番目 :: list)キーが押された>ではない>まで待つ
[順番 v] を (1) ずつ変える
end


[どれかの v] キーが押されたとき
もし < < ([list v] の(順番)番目 :: list)キーが押された>ではない > なら
[このスプライトの他のスクリプト v] を止める:: stack
[順番確認 v] を送る
end
これでできると思います。

追記
2つ目のスクリプトで、ハットブロックから1つ目のスタックブロックに移行するのに時間がかかるのでそこでバグが発生するかもしれません。

Last edited by kouryou118103 (Jan. 28, 2024 11:42:47)

KiHa_47Kei
Scratcher
100+ posts

意外と知られていないテクニック集

#4001
リストのところに文字を入れるということですか?

重要 これは署名と言って、本文とは関係ありません。
—————-解説—————-          —————-ああ—————-
広島県在住、10代。              |ああぁああああああああ。
主に撮り鉄をしています。           |あああああああ。あああああああああ?ああああ。
よく山陽本線のどこかの踏切に出没しています。 |あああああああああああああああああ!!
他サイトにアカウントを持っています。     |ああああああああああああああああ。
こう見えて初心者です。            |ああああぁあああああああぁああああ。
103系、105系500番台、113系、115系が好きです。|あああああああ。ああああ!!
kouryou118103
Scratcher
1000+ posts

意外と知られていないテクニック集

そういうことです。

質問は質問コーナー.でお願いします。
inoking さんありがとうございました

Last edited by kouryou118103 (Jan. 28, 2024 12:49:54)

-_make_game_-
Scratcher
11 posts

意外と知られていないテクニック集

既出だったらごめんなさい
定義 FPS算出
[FPS v] を ((1) / ((タイマー) - (FPS計算用))) にする
[FPS計算用 v] を (タイマー) にする
定義 main
ゲームの処理
FPS算出
[ゲームスタート v] を受け取ったとき
ずっと
main
end
でFPS算出機能付きのゲームを作成できます。定義「main」は「画面を再描画せずに実行する」を入れないと正しく動作しないので注意してください。また、
<マウスが押された>
などのブロックは True か False のどちらかを返しますが、
(() + <マウスが押された>)
にするとTrueなら1を、Falseなら0を返すようになります。実用性はあまり無いかもしれませんが…(苦笑)

ユーザーネームが「ゲーム作り」ですが、ゲーム以外の作品も作っています。
scratchを開いたとき::events hat
もし <[暇] = [True]> なら::control
[何でも良いから何かプログラムを作ろう!]と言う::looks
end
なお、これは「署名」と言って上の本文とは全く関係が無く、投稿をすると自動的に表示される物です。
_inosisisamaaonly
Scratcher
8 posts

意外と知られていないテクニック集

[return v] を  ([e^ v] \( (([in v] \( (A) \))) * (B)) \)) にする

これはA(A=>0)を底数とするB乗の値を返す式です。例えばA=10 B=1.5とでもすると≒32の値が返ってきます。これはscratchが上手くなればなるほど使う場面が増えてくるので覚えておきましょう。

Last edited by _inosisisamaaonly (Jan. 31, 2024 04:09:56)


僕らは綺麗に生き続けることができる。
綺麗にのんびり暮らそうじゃないか。
kouryou118103
Scratcher
1000+ posts

意外と知られていないテクニック集

(((B) * ((A) の [ln v]::operators)) の [e ^ v]::operators)
これで
((A)^(B)::operators)
が作れますが、A>=0の時しか動作しません。
HexaHorn6530
Scratcher
4 posts

意外と知られていないテクニック集

スクラッチは30fps(1秒間に30回描画される)なので、描画に関係するブロックを挟むことで比較的正確に時間を測り、かつ他の条件も並列することができます。
⚑ がクリックされたとき
[フレーム数_30fps v] を [0] にする
[1秒あたりのループ回数 v] を [0] にする
[実際に測った時間(秒) v] を [0] にする
タイマーをリセット
< < (フレーム数_30fps) = [300] >または <[スペース v] キーが押された>> まで繰り返す
表示する
隠す
[フレーム数_30fps v] を (1) ずつ変える
[1秒あたりのループ回数 v] を ((フレーム数_30fps) / (タイマー)) にする
end
[実際に測った時間(秒) v] を ((フレーム数_30fps)/(30)) にする
上のサンプルコードでは、300フレーム、すなわち10秒を正確に測るだけでなく、この間にスペースキーが押されればループから抜ける事ができる。他の条件をいくらでも並列できるのは意外と便利です。タイマーでfpsを計測するコードも含まれています。「1秒あたりのループ回数」は30に近くなるはずです。これは分かりやすくするためのものなので、抜いて良いです。
また、
隠す
では1フレームの遅延が発生しないことに注意。おそらく「描画しないブロック」に該当するからであろう。
条件分岐などが大量に含まれる大きなループでは、1Fの遅延を挟むだけで処理が必要以上に頻繁には行われなくなり、軽くなります。タイマーのスクリプト以外にも
表示する

表示する
隠す
を挟むのは大いに意義があると思います。

Last edited by HexaHorn6530 (Feb. 8, 2024 07:26:34)


※これは署名です。本文とは一切関係ありません。
先日、自作GUIのカーソルの横移動を実現。さて、次はスライダーと切り替えスイッチを実装して、変数とかリストをGUIで操作できるようにするだけですね。嗚呼、たいへん。
HexaHorn6530
Scratcher
4 posts

意外と知られていないテクニック集

_inosisisamaaonly wrote:

[return v] を  ([e^ v] \( (([in v] \( (A) \))) * (B)) \)) にする

これはA(A=>0)を底数とするB乗の値を返す式です。例えばA=10 B=1.5とでもすると≒32の値が返ってきます。これはscratchが上手くなればなるほど使う場面が増えてくるので覚えておきましょう。

kouryou118103 wrote:

(((B) * ((A) の [ln v]::operators)) の [e ^ v]::operators)
これで
((A)^(B)::operators)
が作れますが、A>=0の時しか動作しません。
上の2つを(自分の解釈で)解説します。AのB乗を考える。
((A)の(In ))はネイピア数eを何乗すれば( )の数になるか?という値を返す。(wikiより。)
((A)の(e^ ))はネイピア数e = 2.71828…を何乗かしたときの結果を返す。(wikiより。) つまり、
((A) の [ln v]::operators)
はネイピア数eを何乗すればAになるか?という値を返す。これよりe^((A)の(In )) = A
つまり
(((A) の [ln v]::operators) の [e ^ v]::operators)
= A
両辺をB乗すると{e^((A)の(In )))}^B = A^B
指数は(a^2)^2 = a^4のように計算できるから、A^B = e^{((A)の(In ))*B}
これをスクラッチのブロックで表すと、A^Bは、
(((B) * ((A) の [ln v]::operators)) の [e ^ v]::operators)
となる。

※これは署名です。本文とは一切関係ありません。
先日、自作GUIのカーソルの横移動を実現。さて、次はスライダーと切り替えスイッチを実装して、変数とかリストをGUIで操作できるようにするだけですね。嗚呼、たいへん。
AKYARA
Scratcher
36 posts

意外と知られていないテクニック集

絶対もう書かれていますが、移動のプログラムを手っ取り早く組む時、私は
ずっと
x座標を (<[右向き矢印 v] キーが押された> - <[左向き矢印 v] キーが押された>) ずつ変える
y座標を (<[上向き矢印 v] キーが押された> - <[下向き矢印 v] キーが押された>) ずつ変える
end
と書いています、早く組めて斜め移動にも対応してるのでオススメです

Last edited by AKYARA (Feb. 7, 2024 07:12:52)


で、俺が生まれたってわけ。
inoking
Scratcher
1000+ posts

意外と知られていないテクニック集

#4006:

HexaHorn6530 wrote:

スクラッチは30fps(1秒間に30回描画される)なので、描画に関係するブロックを挟むことで比較的正確に時間を測り、かつ他の条件も並列することができます。

~略~

上のサンプルコードでは、300フレーム、すなわち10秒を正確に測るだけでなく、この間にスペースキーが押されればループから抜ける事ができる。他の条件をいくらでも並列できるのは意外と便利です。「(10) 秒待つ」とは違うのだよ、「(10) 秒待つ」とは。
なお、タイマーでfpsを計測するコードも含まれています。「1秒あたりのループ回数」は30に近くなるはずです。これは分かりやすくするためのものなので、抜いて良いです。タイマーは重たいですし。
(「比較的正確に」とはありますが)
フレーム回数で時間が計れるのは一定の条件を満たしたときだけです。

時間を計るのなら
素直に「2000年からの日数」や「タイマー」で経過時間を計ったほうがよいでしょう。

また、「タイマーは重たい」はどこから来たのでしょう?
「重い」とは実行が遅くなるという意味ですか?

これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」として遊ぶためのものではない

・「『報告乱用されたそれは間違いです。Scratch チームは問題のない作品を手動で非共有にすることはありません。」※自動の場合は「多数報告された」というメッセージあり
・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている
HexaHorn6530
Scratcher
4 posts

意外と知られていないテクニック集

inoking wrote:

#4006:
(「比較的正確に」とはありますが)
フレーム回数で時間が計れるのは一定の条件を満たしたときだけです。

時間を計るのなら
素直に「2000年からの日数」や「タイマー」で経過時間を計ったほうがよいでしょう。

また、「タイマーは重たい」はどこから来たのでしょう?
「重い」とは実行が遅くなるという意味ですか?
「重い」とは実行が遅くなるという意味です。なぜかというと、以前私がゲームを作っていた時に、タイムアタックの記録用にタイマーを使ったらいきなり実行速度が遅くなり、それ以来あまり使うのを極力避けるようになったからです。タイマーは常に動作しているというのを初めて知りました。あの時実行速度が遅くなったのはタイマーを変数のようにステージに表示していたことが原因かもしれません。私の知識不足と思い込みでした。すみません。私はフレーム単位での時間の計測を「◯◯フレーム以上ボタンが押されていればプログラムAを実行し、◯◯フレーム以内にボタンが離されていればプログラムBを実行する」のような使い方をしています。タイマーほどではないですが、短時間であれば比較的正確に時間を測れますし、同じタイマーを共有することによって生じる条件分岐、計算などを気にしなくて良いので手軽に使っています。
例えばこんな感じ。↓
⚑ がクリックされたとき
[フレーム v] を [0] にする
ずっと
表示する
もし <[右矢印キー v] キーが押された> なら
x座標を (5) ずつ変える
<<<[右矢印キー v] キーが押された> ではない> または <(フレーム) = [30]>> まで繰り返す
表示する
[フレーム v] を [1] ずつ変える
end
もし <(フレーム) = [30]> なら
<<[右矢印キー v] キーが押された> ではない> まで繰り返す
x座標を (10) ずつ変える
end
end
[フレーム v] を [0] にする
end
end
しかし、長い時間を測ったり、精度を重視したりするのならタイマーで時間を計ったほうが良いのではないかと思います。
※「ずっと」の中の最初の「表示する」は処理を軽くするためのものです。
2024/03/14 追記 : 「0秒待つ」でも約1Fの遅延が発生するとのことです。「表示する」などよりも扱いやすいと思いました。

Last edited by HexaHorn6530 (March 14, 2024 02:36:29)


※これは署名です。本文とは一切関係ありません。
先日、自作GUIのカーソルの横移動を実現。さて、次はスライダーと切り替えスイッチを実装して、変数とかリストをGUIで操作できるようにするだけですね。嗚呼、たいへん。
inoking
Scratcher
1000+ posts

意外と知られていないテクニック集

HexaHorn6530 wrote:

私はフレーム単位での時間の計測を「◯◯フレーム以上ボタンが押されていればプログラムAを実行し、◯◯フレーム以内にボタンが離されていればプログラムBを実行する」のような使い方をしています。タイマーほどではないですが、短時間であれば比較的正確に時間を測れますし、同じタイマーを共有することによって生じる条件分岐、計算などを気にしなくて良いので手軽に使っています。
はい、特性を理解したうえで使うぶんには何の問題もありません。
「単にフレーム回数で時間が計測できる」ではないということが言いたかったので。
なお、タイマーの使い方についてはこちらも読んでみてください。

Last edited by inoking (Feb. 8, 2024 03:08:32)


これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」として遊ぶためのものではない

・「『報告乱用されたそれは間違いです。Scratch チームは問題のない作品を手動で非共有にすることはありません。」※自動の場合は「多数報告された」というメッセージあり
・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている

Powered by DjangoBB