Discuss Scratch

popochan7890
Scratcher
82 posts

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

(2000年からの日数)
について。

@greenFlagがクリックされたとき :: events hat
[all] 番目を [list v] から削除する
(2000年からの日数) を [list v] に追加する
(2000年からの日数) を [list v] に追加する
(2000年からの日数) を [list v] に追加する
    ︙ // 同じやつをたくさん
(2000年からの日数) を [list v] に追加する
を実行してlistを書き出してみると、同一フレーム内に行われた処理にも関わらず、後の処理に対応する値ほど大きく(=時間が後)になっていることがわかる。これは
@greenFlagがクリックされたとき :: events hat
[all] 番目を [list v] から削除する
リストに追加 // この定義は再描画しない

定義 リストに追加
(2000年からの日数) を [list v] に追加する
    ︙ // 同じやつをたくさん
(2000年からの日数) を [list v] に追加する
として、再描画しない定義の中で行っても同じ結果だった。

また、リストに入れられた値は、
8624.600163958334
8624.600163958334
8624.600163958334
8624.600163958334
8624.600163958334
8624.600163958334
8624.600163958334
8624.600163969908
8624.600163969908
8624.600163969908
8624.600163969908
8624.600163969908
8624.600163969908
8624.600163969908
8624.600163969908
8624.600163969908
8624.600163969908
8624.600163969908
8624.600163969908
8624.600163969908
8624.600163969908
8624.600163969908
8624.600163969908
8624.600163969908
8624.600163969908
8624.600163969908
8624.600163981482
8624.600163981482
8624.600163981482
8624.600163981482
8624.600163981482
8624.600163981482
8624.600163981482
8624.600163981482
8624.600163981482
8624.600163981482
8624.600163981482
8624.600163981482
8624.600163981482
8624.600163981482
8624.600163981482
8624.600163993056
8624.600163993056
8624.600163993056
8624.600163993056
8624.600163993056
8624.600163993056
8624.600163993056
8624.600163993056
8624.600163993056
8624.600163993056
8624.600163993056
8624.600163993056
8624.600163993056
8624.600163993056
と、飛び飛びになっており、それぞれの差は0.000000011574日~0.000000011575日とほぼ一定になる。
秒に直すと0.0009999936秒~0.00100008秒になり、2000年からの日数を使う際の最小単位は約0.001秒と分かる。日数なのにやたら細かい。

この仕様を使えば、
[時刻1 v] を ((2000年からの日数) * (1000000000000)) にする // でかくしてるのは、小数だと変数に入らないから
… // かかる時間を調べたい処理
[時刻2 v] を ((2000年からの日数) * (1000000000000)) にする
[処理にかかった秒数 v] を (([切り下げ v] \( (((時刻2) - (時刻1)) / (11574)) \)) / (1000000000)) にする
で処理にかかる時間を調べられる。
ちな、1フレームに行われるすべての処理にかかる時間が1/30秒を超えると処理落ちでFPSが下がる(当たり前)。

Last edited by popochan7890 (Aug. 13, 2023 00:53:47)

kinnniku_pi-mann
Scratcher
100+ posts

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

うえの投稿で思いだしましたが、「中を見る」や、「プロジェクトページに移動する」ときはプログラムが一時的に止まるので、FPSを調べれば簡単に中を見たり、プロジェクトページに移動したりしたのを検知できる。また、中を見ているときは、プログラムに再描画をOFFにした繰り返すがある定義ブロックがあると、FPSが大きく下がるので、それを使えば、中を見たかどうかわかる。
inoking
Scratcher
1000+ posts

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

popochan7890 wrote:

(2000年からの日数)
について。
~略~
と、飛び飛びになっており、それぞれの差は0.000000011574日~0.000000011575日とほぼ一定になる。
秒に直すと0.0009999936秒~0.00100008秒になり、更新の速さは知らんけど、2000年からの日数を使う際の最小単位は約0.001秒と分かる。日数なのにやたら細かい。
2000年からの日数は
ソースコード上、ミリ秒単位となっています(例えばこれ
ただ、実測してみるのは悪くないことだと思います。
popochan7890
Scratcher
82 posts

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

ソースコードを見ましたが、確かにミリ秒単位でした。というか実測の結果が合っててちょっとびっくり。Scratchをハックするのは色々発見があって面白いですね。
tomo8er
Scratcher
1 post

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

⚑ がクリックされたとき
ずっと
タイマーをリセット
end
[ タイマー] > (0) のとき
ストップボタンが押された時になります。
popochan7890
Scratcher
82 posts

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

ブロックパレットのカテゴリのアイコンを押すと滑らかにそのカテゴリの先頭までスクロールするが、PCやiPadのスペックが低いとき、ブロックの数が多くなったりしてエディタ画面が重くなるとスクロールに時間がかかる。
こんな時は、移動したいカテゴリ以外のアイコンを押し、スクロール中にすぐに移動したいカテゴリのアイコンを押すと高速でスクロールが完了する。

例えば制御カテゴリに行きたかったら、イベント→制御の順にタターンと(語彙力説明力)押すと速い。
些細なことだがかなりストレスが減る。
sakoppe
Scratcher
5 posts

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

(10[ v] を (1(foo) 歩動かす) ずつ変える) 回繰り返す

end
簡単になめらかな動きができます
inoking
Scratcher
1000+ posts

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

sakoppe wrote:

(10[ v] を (1(foo) 歩動かす) ずつ変える) 回繰り返す

end
簡単になめらかな動きができます
そのようなブロックは置けません。
動きを確認してから、正しい内容で投稿をお願いします。
matuao1208
Scratcher
28 posts

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

((0.1) から (10) までの乱数)
など乱数に少数を使うと、
乱数に少数が使われる

常識かもしれん

関係ないけど見て
廃止•削除されたブロックの代用方法
uppmoonrabbits
Scratcher
100+ posts

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

matuao1208 wrote:

((0.1) から (10) までの乱数)
など乱数に少数を使うと、
乱数に少数が使われる

ちなみに、
(((((0.1) から (10) までの乱数) * (10)) を四捨五入) / (10))
とすると小数第1位までの乱数が発生する。
かける数と割る数を100や1000・・・にすると、小数第2位、小数第3位・・・と発生させることが出来る。
popochan7890
Scratcher
82 posts

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

<[#8baaf7] 色に触れた>
ブロックは、指定された色がほんのちょっと違っても許されることがある
hanya326
Scratcher
100+ posts

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

もし <(☁ score) < (score)> なら
(☁ score) を (score) にする
end

世界記録を更新するプログラム

Last edited by hanya326 (Aug. 19, 2023 23:56:31)

HU_KO
Scratcher
4 posts

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

kusitomo wrote:

りみっくすつり一ってどうやって使うの?
リミックスツリーはプロジェクトのリンクの後ろにremixtree/とつけると使えます
syokaki
Scratcher
100+ posts

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

アウトってコメントが入ったので一旦削除します。

Last edited by syokaki (Aug. 21, 2023 12:24:37)

ito-noizi
Scratcher
100+ posts

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

#3866
こちらによるとRとGは5bit、Bは4bitの誤差のようです。
popochan7890
Scratcher
82 posts

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

定義 処理1
もし <<条件> ではない> なら
… // 条件に当てはまらないときの処理(任意)
[このスクリプト v] を止める
end
… // 処理1の中身
条件に当てはまらない場合にリターンする。メリットはネストが深くならないことぐらいかな?
KRTSD0823
Scratcher
100+ posts

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

数値に少数を使いたい時、普通に考えて
(0.)・・・ ::grey
のように、「0.~」と書きますが、
(.)・・・ ::grey
と、0を抜いて「.~」と書いても同じ動作をします。
実際にプロジェクト内で使っている少数点の0を抜きましたが0.9と同じ動作をしています。

普通

0抜き
inoking
Scratcher
1000+ posts

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

ito-noizi wrote:

こちらによるとRとGは5bit、Bは4bitの誤差のようです。
その投稿は

newmomizi_txt wrote:

これらのブロックは、RGB要素のうちRとGは5bit、Bは4bitの合計14bitで判定される。
なので「5bit、4bit」は誤差のことではありません。

また、その投稿は根拠が示されていないようです。
根拠となる情報はこちらこちらにあります。
hanya326
Scratcher
100+ posts

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

もし <<(ユーザー名) = [a]> または <(ユーザー名) = [b]>> なら

end
は、


[a] を [list v] に追加する
[b] を [list v] に追加する
もし <[list v] に (ユーザー名) が含まれる> なら

end

のように短縮できる
monaka24
Scratcher
10 posts

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

monaka24 wrote:

monaka24 wrote:

「一文字ずつ追加される」吹き出しを使用したい時は、
[ 吹き出し] を [] にする
[繰り返し] を [0]にする
([(好きな文章を入れてください)] の長さ) 回繰り返す
[ 繰り返し] を (1)ずつ変える
[ 吹き出し] を ((吹き出し) と ((繰り返し) 番目\( [(好きな文章)] \)の文字)) にする
(吹き出し) と言う
[(好きな音を選んでね)] の音を鳴らす
(0.1) 秒待つ

end
(0.5) 秒待つ
[] と言う

こうするとできると思います。
ブロック定義にする時は、これ↓
定義 
に繋げて、(好きな文章)の部分に、
(引数(名前はなんでもOK))
引数を埋めます。

まーこんな感じですね。
グチャってなったので送り直しました。(これで3回目(T-T))

一応この説明のプロジェクトのURL貼っておきます。
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/883701102/

Last edited by monaka24 (Aug. 23, 2023 10:19:07)

Powered by DjangoBB