Discuss Scratch

sky_77
Scratcher
500+ posts

質問コーナー3

yukumom wrote:

押されたキーを変数に入れるみたいなことができないですか?
リストなら複数押された時もできます。


░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█████
500+/1000 posts Bar Generator For Signature 署名用バー生成機
foo-eta
Scratcher
1000+ posts

質問コーナー3

yukumom wrote:

押されたキーを変数に入れるみたいなことができないですか?
このブロックではだめですか?
[] と聞いて待つ

Last edited by foo-eta (July 1, 2019 09:36:07)


ここはスクラッチのサイトの中なので、スクラッチのことを話しましょう。
意見・反対意見・指摘いつでもウェルカムです
コミュニティガイドラインチュートリアル
日本語フォーラムのつかいかたチュートリアル
著作権を守ろう
KimiruHamiru
New to Scratch
500+ posts

質問コーナー3

Poteto143 wrote:

() 秒待つ
の働きについて質問です。
「画面を再描写せずに実行する」を有効にした定義ブロックに上のブロックを付けて実行するとものすごく重くなるのは、「何もしない」という動きを繰り返しているから(Pythonで言うならpassを繰り返す)という認識で良いのでしょうか。
ちょっと言葉で説明しにくいのですが、
@greenFlagがクリックされたとき
全部消す
(20)回繰り返す
描画
end
定義 描画
(10)回繰り返す
(どこかの場所 v)へ行く
スタンプ
end
(1)秒待つ
というコードを動かした場合、環境依存かつ大雑把ですが、

この定義ブロックの、
「スタンプのあるループの部分」は

「画面を再描画せずに実行する」がオフの場合は
「スタンプを1つずつ押す」=ネコが1匹ずつ次々に10匹現れる=スタンプ1つにつき1フレーム*10個(10/30秒=0.33秒)使って実行完了

「画面を再描画せずに実行する」がオンの場合は
「スタンプを10個ずつ押す」=ネコが10匹ずつ現れる=スタンプ10個につき1フレーム(1/30秒)使って実行完了

という動作をするけど

「1秒待つの部分」
については、
描画を伴わないブロックなので、設定に関わらず、常に「1秒待つ」=30フレーム(30/30秒) 使って実行完了

という挙動をしているように見えます。

「1秒待つ」がある場合は、定義ブロックの設定がどうであろうと、ターボモードであろうと、そこで「1秒待つ」

というのが、私には期待通りの動作で、「すごく重くなる」ことこそが期待通りなのでは、と思います。
shogimania
Scratcher
52 posts

質問コーナー3

taiyo_o wrote:

アクションゲームを作っています
ステージ13まで作るのですがステージ10
になってステージ11にいこうとすると
ステージ1になってしまいます
どうすればいいですか
https://scratch.mit.edu/projects/317167026/editor

もう一度スクリプトを見直してみてください。

どうも!shogimaniaです!
Sチューブ始めちゃいました!!!!!
shogimania02もフォローお願いします!
when green flag clicked
say [フォローしてくれえええええええええええええええええええええええええ!(笑)]
abee
Scratcher
1000+ posts

質問コーナー3

どこを見直してよいか書かないと、相手に伝わらないと思います。
もし、それが分からないのであれば、無理に答える必要はありません。
このケースでは、
[ステージ v] を [1] にする
が書かれているところの前後が怪しいです。
SYOUI-2
Scratcher
100+ posts

質問コーナー3

yukumom wrote:

押されたキーを変数に入れるみたいなことができないですか?

押されたキーを変数に入れるみたいなことは難しいのですが
入力した文字を変数に入れることができます

証拠 wrote:

[] と聞いて待つ
[変数 v] を (答え) にする

ヘイトスピーチはコミュニティガイドライン違反です、スクラッチで人種差別はやめましょう。
※投稿とは関係ないことが書かれていますがこれは署名と言っていちいち手動で書いていません
↓サブアカウント↓
MSK-collaborationsabusizu2007
amagasakijrw
SYOUI-2
Scratcher
100+ posts

質問コーナー3

yjhgt wrote:

ジャンプのやりかたを教えてください。
こちらをご覧ください

ヘイトスピーチはコミュニティガイドライン違反です、スクラッチで人種差別はやめましょう。
※投稿とは関係ないことが書かれていますがこれは署名と言っていちいち手動で書いていません
↓サブアカウント↓
MSK-collaborationsabusizu2007
amagasakijrw
inoking
Scratcher
1000+ posts

質問コーナー3

Poteto143 wrote:

() 秒待つ
の働きについて質問です。
「画面を再描写せずに実行する」を有効にした定義ブロックに上のブロックを付けて実行するとものすごく重くなるのは、「何もしない」という動きを繰り返しているから(Pythonで言うならpassを繰り返す)という認識で良いのでしょうか。
Scratch の各スプライトは「疑似」マルチスレッドで動作しています。
この辺の詳細は私もよく分かりません。

各スプライトやクローンはそれぞれが1/30秒単位で周期的に動作していますが
描画込みのループがあるとそこでその回の処理を中断します。

「()秒待つ」を入れると
その時点で即座にその回の処理を放棄します。
言わば「yield」のようなものです。

なのですが

「画面を再描画せずに実行する」内で(「()秒待つ」に限らず)待ち処理に入ると
何故か正常に「yield」動作とならず
CPU資源を占有した?ような状態となります。

これが Scratch の設計どおりなのかどうかは分かりませんが
少なくとも Scratch 2.0 のときからこのような動作をしています。
このため「画面を再描画せずに実行する」内に待ち系のブロックを入れてはいけません。

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

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

質問コーナー3

これは単なる推測ですが、おそらく2000年からの時間を再描画時に再計算しているため、1秒待つ等をいれると、1秒以上固まってしまうのだと思います。また、なぜかコードを組む範囲とステージとの再描画のタイミングがリンクしています。これによって、全体的に動作が遅くなっているように感じるのではないかと思います。
2.0の頃は、なぜかページごと重くなってしまっていましたが、3.0では、僕の環境では、ページは重くなりません。
(ただし僕の環境での話です。)

つかれた。もう聞き飽きたよ
Poteto143
Scratcher
1000+ posts

質問コーナー3

KimiruHamiru wrote:

#303

inoking wrote:

#308

ARATAKU wrote:

#309
皆さん、詳しい回答をありがとうございます。

6周年になりました。ありがとうございます
asasmax
New to Scratch
1 post

質問コーナー3

移動のプログラム作るときにバグなのかやっても動作しない時がありますどうしたらよいでしょうか
noyoyama
Scratcher
63 posts

質問コーナー3

asasmax wrote:

移動のプログラム作るときにバグなのかやっても動作しない時がありますどうしたらよいでしょうか
プロジェクトを共有して下さい 文面だけよりもその方が分かりやすいですよ

※ ここの線より下のところは署名といって、手動で書いていません((s-t-p氏発案 ※

これが分かるってあんた何者だよ
inoking
Scratcher
1000+ posts

質問コーナー3

ARATAKU wrote:

これは単なる推測ですが、おそらく2000年からの時間を再描画時に再計算しているため、1秒待つ等をいれると、1秒以上固まってしまうのだと思います。また、なぜかコードを組む範囲とステージとの再描画のタイミングがリンクしています。これによって、全体的に動作が遅くなっているように感じるのではないかと思います。
2.0の頃は、なぜかページごと重くなってしまっていましたが、3.0では、僕の環境では、ページは重くなりません。
(ただし僕の環境での話です。)
「2000年からの日数」は Date オブジェクトのメソッドから換算しているだけなので関係ありません。
ソースコード

Last edited by inoking (July 1, 2019 12:15:24)


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

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

質問コーナー3

rihokahosanntann wrote:

ジャンプが終わった後ちゃんと着地するけど、こざみきに震えます。どうしたらいいですか。
rihokahosanntannさんの
https://scratch.mit.edu/projects/319216318/editor/
に関して言えば、
ずっと
y座標を(-5)ずつ変える
もし<(黒)色に触れた>なら
y座標を(-70)にする
end
end
という部分がコキザミみ震える原因ですね。

「背景」の黒と「ユニコーン」の位置の関係で、地面に触れた時、地面より少し高いy=-70に固定しようとしているために、
地面に触れたとたんに少し浮き上がってまた落ちる、ということが起きているようです。
ずっと
y座標を(-5)ずつ変える
もし<(黒)色に触れた>なら
y座標を(-85)にする
end
end
ぐらいに数字を調整するか、背景かユニコーンの位置か中心を調整すると、とりあえず直ると思います。


以下、余談になるのですが、

「地面に引っ張られる力」と「地面から押し返される力」が釣り合うことが「立って動かない状態」だ。
という考え方で書くなら、
ずっと
y座標を(-5)ずつ変える
もし<(黒)色に触れた>なら
y座標を(5)ずつ変える
end
end
とか書くこともできて、この場合は地面に凹凸があっても(条件付きで、ある程度は、)対応できます。

別な見方として、
「y座標を-85にする」という書き方をするのは、「地面の高さが一定であることが前提
だから、
「もし黒色に触れたなら」という書き方ではなくて「もしy座標 < -85なら」、つまり
ずっと
y座標を(-5)ずつ変える
もし<(y座標) < (-85)>なら
y座標を(-85)にする
end
end
といった書き方の方が、わかりやすいかな、という気もします。
KimiruHamiru
New to Scratch
500+ posts

質問コーナー3

サーバエラーが出て二重投稿になっていたため削除。

Last edited by KimiruHamiru (July 1, 2019 12:51:33)

KimiruHamiru
New to Scratch
500+ posts

質問コーナー3

asasmax wrote:

移動のプログラム作るときにバグなのかやっても動作しない時がありますどうしたらよいでしょうか

色んな状況が考えられるので、「どうすれば直るか」は答えようがないのですが、

1)バグなのかやっても動作しない時がありますどうしたらよいでしょうか
という話では、
() と言う
ブロックを使う、という方法があります。
これを使って

「イベントが正しく発生したか観察する。あるブロックが実行されたかどうか観察する」
[スペース v]キーが押されたとき
[スペースキーが押された!] と言う
本来の処理...

「変数の値がどう変化したかを観察する」
(yの変化量) と言う
[10]秒待つ

など。
「最終的には要らないブロックだけど、デバッグのために仮に入れる」というこの方法は、何が起きているかわからない時には有効だと思います。Scratchは変数の値を画面に出すことができるので、それを直接観察してもよいです。


2)移動のプログラム作るときにバグなのかやっても動作しない時
というテーマで、これまでわたしが経験したのは

[浮力 v] を [-5] にする
といったコードで、数字を全角で「-5」とか全角で入力していたために、自動型変換で数値の「0」と解釈されていた

とかいうのがありました。いまも結構やります。
全角半角はすごく判別しにくい場合もあるので、不安な時は「ほかのソフト(例えばこのフォーラムの入力フィールドとかでも)で確実に半角で入力してScratch画面にカット&ペーストする」とかやることもあります。

ほかには、

「WASDキーで動かすようなプログラム」で、実行時に日本語入力モードになっていて
「WASDが入力されていた」ために動かなかった。

みたいなこともありましたが、これはScratch3では起きないかも?
PIPOsen_0801
Scratcher
16 posts

質問コーナー3

物体が移動するプログラムを作成するとき方法は二つありますよね?
①・・・自分を移動させ、端に触れたら次の情景に変える。
②・・・自分は中央に留まり、情景を移動させる。
私は②の方法で飛行機をmap上に飛んでいるように見せたく試行錯誤しましたが、方向転換が出来ません。
具体的に言うと飛行機が常に前に進んでいる場合は常に情景は後ろに流れます。しかし方向転換をすると、
情景の進む方向がずれたり、そもそもの情景の位置が大幅にずれてしまします。どうすればいいでしょうか?
ずっと
もし <[右向き矢印 v] キーが押された> なら
...
end
end
この<…>の内容を知りたいです。教えてください
GANDAM5
Scratcher
100+ posts

質問コーナー3

PIPOsen_0801 wrote:

物体が移動するプログラムを作成するとき方法は二つありますよね?
①・・・自分を移動させ、端に触れたら次の情景に変える。
②・・・自分は中央に留まり、情景を移動させる。
私は②の方法で飛行機をmap上に飛んでいるように見せたく試行錯誤しましたが、方向転換が出来ません。
具体的に言うと飛行機が常に前に進んでいる場合は常に情景は後ろに流れます。しかし方向転換をすると、
情景の進む方向がずれたり、そもそもの情景の位置が大幅にずれてしまします。どうすればいいでしょうか?
ずっと
もし <[右向き矢印 v] キーが押された> なら
...
end
end
この<…>の内容を知りたいです。教えてください
こんな感じのことでしょうか、背景に置いてあるものが動いているように見える時、自分が回転すると、自機の座標を原点、動かしたいものの座標をx、yとした時、右にθ度回ると対象のxとyは、
(x*cos (θ) + y*sin (θ),x*sin (θ) + y*cos (θ))
になります。これ使えばいけるんじゃ無いかと思います。なんか間違ってたら指摘してください
自機が回るのですね。それなら、
背景のXを移動速度*-sin(θ)、Yを移動速度*-cos(θ)動かせばいいはずです

Last edited by GANDAM5 (July 2, 2019 10:41:12)


※この投稿はGANDAM5のみの意見です

ghostpolice
Scratcher
61 posts

質問コーナー3

ジャンプをしながら、移動するときどうすればいいですか?

最近古見さんはコミュ障です。にはまってます。
作る専アカ @Nekohebi_

キツネとタヌキこれは大変だったな…
inoking
Scratcher
1000+ posts

質問コーナー3

ghostpolice さん、
#1 に書いてあるように
まずは自分で調べたり考えたりしましょう。
Scratch Wiki にも色々出ています。

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

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

Powered by DjangoBB