提供: Japanese Scratch-Wiki

2018年3月11日 (日) 05:09時点における227kei (トーク | 投稿記録)による版 (ペンブロック)

この記事は、ブロックを使わずにその機能を再現するスクリプト代用ブロック一覧である。 これらは、どのようにブロックが動作するかを理解し、別のプログラミング言語でブロックを再作成するために使用することができる。


イベントブロック

イベントブロックの代用ブロック

制御ブロック

制御ブロックの代用ブロック

動きブロック

動きブロックの代用ブロック

モーターブロック

モーターブロックの代用ブロック

見た目ブロック

見た目ブロックの代用ブロック

音ブロック

音ブロックの代用ブロック

演算ブロック

演算ブロックの代用ブロック

ペンブロック

ペンブロックの代用ブロック

調べるブロック

ブロック 回避策
[] と聞いて待つ
(質問) と言う
(すべて v) 番目を [答え v] から削除する
[カウント v] を [0] にする
<<[マウスのポインター v] に触れた> かつ <マウスが押された>> まで繰り返す
もし <[a v] キーが押された> なら
[カウント v] を (1) ずつ変える
[A] を (カウント) 番目に挿入する( [答え v] )
end
もし <[b v] キーが押された> なら
[カウント v] を (1) ずつ変える
[B] を (カウント) 番目に挿入する( [答え v] )
end
もし <[c v] キーが押された> なら
[カウント v] を (1) ずつ変える
[C] を (カウント) 番目に挿入する( [答え v] )
end
もし <[d v] キーが押された> なら
[カウント v] を (1) ずつ変える
[D] を (カウント) 番目に挿入する( [答え v] )
end
もし <[e v] キーが押された> なら
[カウント v] を (1) ずつ変える
[E] を (カウント) 番目に挿入する( [答え v] )
end
もし <[f v] キーが押された> なら
[カウント v] を (1) ずつ変える
[F] を (カウント) 番目に挿入する( [答え v] )
end
もし <[g v] キーが押された> なら
[カウント v] を (1) ずつ変える
[G] を (カウント) 番目に挿入する( [答え v] )
end
もし <[h v] キーが押された> なら
[カウント v] を (1) ずつ変える
[H] を (カウント) 番目に挿入する( [答え v] )
end
もし <[i v] キーが押された> なら
[カウント v] を (1) ずつ変える
[I] を (カウント) 番目に挿入する( [答え v] )
end
もし <[j v] キーが押された> なら
[カウント v] を (1) ずつ変える
[J] を (カウント) 番目に挿入する( [答え v] )
end
もし <[k v] キーが押された> なら
[カウント v] を (1) ずつ変える
[K] を (カウント) 番目に挿入する( [答え v] )
end
もし <[l v] キーが押された> なら
[カウント v] を (1) ずつ変える
[L] を (カウント) 番目に挿入する( [答え v] )
end
もし <[m v] キーが押された> なら
[カウント v] を (1) ずつ変える
[M] を (カウント) 番目に挿入する( [答え v] )
end
もし <[n v] キーが押された> なら
[カウント v] を (1) ずつ変える
[N] を (カウント) 番目に挿入する( [答え v] )
end
もし <[o v] キーが押された> なら
[カウント v] を (1) ずつ変える
[O] を (カウント) 番目に挿入する( [答え v] )
end
もし <[p v] キーが押された> なら
[カウント v] を (1) ずつ変える
[P] を (カウント) 番目に挿入する( [答え v] )
end
もし <[q v] キーが押された> なら
[カウント v] を (1) ずつ変える
[Q] を (カウント) 番目に挿入する( [答え v] )
end
もし <[r v] キーが押された> なら
[カウント v] を (1) ずつ変える
[R] を (カウント) 番目に挿入する( [答え v] )
end
もし <[s v] キーが押された> なら
[カウント v] を (1) ずつ変える
[S] を (カウント) 番目に挿入する( [答え v] )
end
もし <[t v] キーが押された> なら
[カウント v] を (1) ずつ変える
[T] を (カウント) 番目に挿入する( [答え v] )
end
もし <[u v] キーが押された> なら
[カウント v] を (1) ずつ変える
[U] を (カウント) 番目に挿入する( [答え v] )
end
もし <[v v] キーが押された> なら
[カウント v] を (1) ずつ変える
[V] を (カウント) 番目に挿入する( [答え v] )
end
もし <[w v] キーが押された> なら
[カウント v] を (1) ずつ変える
[W] を (カウント) 番目に挿入する( [答え v] )
end
もし <[x v] キーが押された> なら
[カウント v] を (1) ずつ変える
[X] を (カウント) 番目に挿入する( [答え v] )
end
もし <[y v] キーが押された> なら
[カウント v] を (1) ずつ変える
[Y] を (カウント) 番目に挿入する( [答え v] )
end
もし <[z v] キーが押された> なら
[カウント v] を (1) ずつ変える
[Z] を (カウント) 番目に挿入する( [答え v] )
end
もし <[0 v] キーが押された> なら
[カウント v] を (1) ずつ変える
[0] を (カウント) 番目に挿入する( [答え v] )
end
もし <[1 v] キーが押された> なら
[カウント v] を (1) ずつ変える
[1] を (カウント) 番目に挿入する( [答え v] )
end
もし <[2 v] キーが押された> なら
[カウント v] を (1) ずつ変える
[2] を (カウント) 番目に挿入する( [答え v] )
end
もし <[3 v] キーが押された> なら
[カウント v] を (1) ずつ変える
[3] を (カウント) 番目に挿入する( [答え v] )
end
もし <[4 v] キーが押された> なら
[カウント v] を (1) ずつ変える
[4] を (カウント) 番目に挿入する( [答え v] )
end
もし <[5 v] キーが押された> なら
[カウント v] を (1) ずつ変える
[5] を (カウント) 番目に挿入する( [答え v] )
end
もし <[6 v] キーが押された> なら
[カウント v] を (1) ずつ変える
[6] を (カウント) 番目に挿入する( [答え v] )
end
もし <[7 v] キーが押された> なら
[カウント v] を (1) ずつ変える
[7] を (カウント) 番目に挿入する( [答え v] )
end
もし <[8 v] キーが押された> なら
[カウント v] を (1) ずつ変える
[8] を (カウント) 番目に挿入する( [答え v] )
end
もし <[9 v] キーが押された> なら
[カウント v] を (1) ずつ変える
[9] を (カウント) 番目に挿入する( [答え v] )
end
もし <[右向き矢印 v] キーが押された> なら
[カウント v] を (1) ずつ変える
end
もし <[左向き矢印 v] キーが押された> なら
[カウント v] を (-1) ずつ変える
end
もし <[スペース v] キーが押された> なら
[カウント v] を (1) ずつ変える
[] を (カウント) 番目に挿入する( [答え v] )
end
(0.001) 秒待つ
end
Warning メモ: この方法だと、アルファベットや数字しか使えない。
([スプライト v] までの距離)
([平方根 v] \( (((([x座標 v] \( [任意のスプライト v] \)) - (x座標)) * (([x座標 v] \( [任意のスプライト v] \)) - (x座標))) + ((([y座標 v] \( [任意のスプライト v] \)) - (y座標)) * (([y座標 v] \( [任意のスプライト v] \)) - (y座標))))  \)::operators)
(マウスのx座標)
ずっと
 [マウスのポインター v] へ行く
 [マウスの位置 v] を (x座標) にする
(マウスのy座標)
ずっと
 [マウスのポインター v] へ行く
 [マウスの位置 v] を (y座標) にする
(2000年からの日数)

ここでは、d = 2000年からの日数とする:

[d v] を ((((367) * (年)) - ([切り下げ v] \( (((7) * ((年) + ([切り下げ v] \( (((月) + (9)) / (12)) \)::operators))) / (4)) \)::operators)) + ((([切り下げ v] \( (((275) * (月)) / (9)) \)::operators) + (日)) - (730530))) にする
[d v] を ((<(d) < [-36435]> + <(d) < [-72990]>) - <(d) > [36585]>) ずつ変える
1800年-2199年までは正しい。

PicoBoardブロック

ブロック 回避策
<[Aがつながれた v]::extension>
<([抵抗-A v] センサーの値) < [10]>//抵抗A〜D

データブロック

変数ブロック

ブロック 回避策
(変数)
([全てのスプライトの変数 v] \( [ステージ v] \))
([このスプライトの変数 v] \( [スプライト1 v] \))
[ v] を [] にする
[変数 v] を (((変数) * (-1)) + (量)) ずつ変える
Warning メモ: 数字以外では動作しない。
[ v] を () ずつ変える
[変数 v] を ((変数) + (量)) にする

リストブロック

ブロック 回避策
(リスト::list)
[カウント v] を [0] にする
[all are 1 v] を [true] にする
<<(all are 1) = [false]> または <(カウント) > ([リスト v] の長さ::list)>> まで繰り返す
[カウント v] を (1) ずつ変える
もし <(((カウント) 番目( [リスト v] )) の長さ) > [1]> なら
[all are 1 v] を [false] にする
end
end
もし <(all are 1) = [true]> なら
[report v] を [] にする
[カウント v] を [0] にする
([リスト v] の長さ::list) 回繰り返す
[カウント v] を (1) ずつ変える
[report v] を ((report) と ((カウント) 番目( [リスト v] ))) にする
end
でなければ
[report v] を ((1 v) 番目( [リスト v] )) にする
[カウント v] を [1] にする
(([リスト v] の長さ::list) - (1)) 回繰り返す
[カウント v] を (1) ずつ変える
[report v] を ((report) と ([] と ((カウント) 番目( [リスト v] )))) にする
end
end
( v) 番目( [ v] )を [] で置き換える
(場所) 番目を [リスト v] から削除する
(項目) を (場所) 番目に挿入する( [リスト v] )
[ v] に [] が含まれる
[report v] を [false] にする
[カウント v] を [0] にする
([リスト v] の長さ::list) 回繰り返す
[カウント v] を (1) ずつ変える
もし <((カウント) 番目( [リスト v] )) = (thing)> なら
[report v] を [true] にする
[このスクリプト v] を止める
end
end
[] を [ v] に追加する
[thing] を (最後 v) 番目に挿入する( [リスト v] )

削除されたブロック

ブロック 回避策
シーン [シーン1 v] を開始 ::control
[シーン1 v] を送る
<> が真のとき ::control hat
@ がクリックされたとき
ずっと
  もし <. . .> なら
    . . .
  end
end
もし <> なら、ずっと{}::control
ずっと
もし <. . .> なら
. . .
end
一斉に {} ::control
定義 一斉に //画面を再描画しないで実行
. . .
クローンを作る ::control
[自分自身 v] のクローンを作る
コスチュームを (1) ずつ変える ::looks
コスチュームを ((コスチューム #) + (1)) にする
背景を (1) ずつ変える ::looks
背景を ((背景 #) + (1)) にする
何も言わない ::looks
[] と言う

または

[] と考える
すべてのスプライトを隠す ::looks
[すべてのスプライトを隠す v] を送る
[すべてのスプライトを隠す v] を受け取ったとき //すべてのスプライトに置く
隠す
透明スタンプ (50)::pen
[幽霊 v] の効果を (...) にする
スタンプ
[幽霊 v] の効果を (0) にする
(() の絶対値 ::operators)
([絶対値 v] \( () \)::operators)

または
演算ブロックを参照

(sqrt ()::operators)
([平方根 v] \( () \)::operators)

または
演算ブロックを参照

<うるさい ::sensing>
<(音量::sensing) > [30]>
(Scratch開始からの日数::sensing)
((2000年からの日数) - (2692))
(ユーザーID::sensing)
@ がクリックされたとき
もし <<[☁ ユーザー v] に (ユーザー名) が含まれる> ではない> なら
 (ユーザー名) を [☁ ユーザー v] に追加する
end
<((ユーザーID) 番目( [☁ ユーザー v] )) = (ユーザー名)> まで繰り返す
 [ユーザーID v] を (1) ずつ変える
end

または

([あなたのユーザーID:] と (check user id)) と言う

または

もし <(ユーザーID) = [ここに必要なユーザーID番号を挿入]> なら
 . . .
end

作りたいものに応じて使い分ける。

Warning メモ: これはクラウドリストが追加されるまで機能しませんが、他のユーザーからクラウドリストエンジンをバックパックすることもできる。
Comment
//スクリプト領域のどこかを右クリック→"コメントを追加"

実験ブロック

ブロック 回避策
(カメラのモーション::sensing)
(ビデオの [モーション v] \( [このスプライト v] \))
(カメラの向き::sensing)
(ビデオの [向き v] \( [このスプライト v] \))
(カウンター::control)
(カウンター) //変数を使用
カウンターを増加する::control
[カウンター v] を (1) ずつ変える
カウンターをクリア::control
[カウンター v] を [0] にする
<> の間繰り返す {} :: control
<<. . .> ではない> まで繰り返す
. . .
end
for each [v v] in (10) {} :: control
[i v] を [0] にする
(...) 回繰り返す
[i v] を (1) ずつ変える
. . .
end

存在しないブロック

ブロック 回避策
<[ v]を受け取った?::events>
[メッセージ v] を受け取ったとき
[メッセージを受け取った v] を [true] にする
. . .
[メッセージを受け取った v] を [false] にする

または

[メッセージ v] を受け取ったとき
[メッセージを受け取った v] を [true] にする
(0.5)秒待つ
[メッセージを受け取った v] を [false] にする

なら

もし <(メッセージを受け取った) = [true]> なら
. . .

このブロックが存在しないのは、精度が低すぎるからです。上の二つは、メッセージが終了したときの回避策で、緑の旗がクリックされている状態でのみ動きます。 このスクリプトでは、「メッセージ」は、0.5秒間送られます。

@ がクリックされたとき
[メッセージを受け取った v] を [false] にする

[メッセージ v] を受け取ったとき
[メッセージを受け取った v] を [true] にする

そして単純に、

<(メッセージを受け取った) = [true]>

他のメッセージに対しては、falseを返す。

[ほかのすべてのメッセージ (ここは置き換える) v] を受け取ったとき
[メッセージを受け取った v] を [false] にする
[すべてを止めて、もう一度緑の旗を押す v]を止める
[緑の旗がクリックされた v]を送る

メモ:Scratch 1.xのオフラインでのみ動作します。

(1)秒繰り返す{} :: control
タイマーをリセット
<(タイマー) > [1]> まで繰り返す
. . .
end

または

[タイマー offset v] を ((タイマー) + (1)) にする
<(タイマー) > (タイマー offset)> まで繰り返す
. . .
end
spawn {} :: control cstart
[Spawn v] を受け取ったとき
. . .

 [Spawn v]を送る
<クローン?::control>
クローンされたとき
[クローン? v]を[true]にする //「このスプライトのみ」の変数を用意します。クローンでなければ、falseになる。

または

[クローン? v] を [true] にする
[自分自身 v] のクローンを作る
[クローン? v] を [false] にする
x座標を()、y座標を()ずつ変える::motion
x座標を((x座標) + (X))、y座標を((y座標) + (Y))にする

または

x座標を (X) ずつ変える
y座標を(Y)ずつ変える
()秒で x座標を()、 y座標を()ずつ変える::motion
 ()秒で x座標を((x座標) + (X)) y座標を((y座標) + (Y))にする
()秒で()歩動かす::motion
(seconds)秒でx座標を((x座標) + (([sin v]\((向き)\) * (歩数)))、y座標を((y座標) + (([cos v]  \((向き)\)) * (歩数)))にする
x座標()y座標()に向ける::motion
point in 向き (([atan v]\((((X) - (x座標))\) / ((Y) - (y座標)))) + (<(y座標) > (Y)> * (180)))
(x座標()、y座標()との差::sensing)
([へ v]\(((((x座標) - (任意のx)) * ((x座標) - (任意のx)\))) + (((y座標) - (任意のy)) * ((y座標) - (任意のy)))))
<聞いている途中?::sensing>
[聞いている途中? v] を [true] にする
[...]と聞いて待つ
[聞いている途中? v] を [false] にする
<スプライトがクリックされた::sensing>
このスプライトがクリックされたとき
[スプライトがクリックされた v] を [true] にする
<<<マウスが押された> かつ <[マウスのポインター v]に触れた>> ではない>まで待つ
[スプライトがクリックされた v] を [false] にする
すべてのスプライトを表示する::looks
[すべてのスプライトを表示する v]を送る

and

[すべてのスプライトを表示する v] を受け取ったとき //すべてのスプライトに入れること
表示する
前のコスチューム::looks
コスチュームを ((コスチューム #) - (1)) にする
前の背景::looks
背景を((背景 #) - (1))にする

または

背景を[(前の背景の名前) v]にする
(コスチューム名::looks)
([コスチューム名 v]([任意のスプライト v]))
後ろに下がる::looks
([10^ v]\((309)\))層下げる

または

@ がクリックされたとき
[スプライト v] を (1) ずつ変える

全てのスプライトに置く:

((スプライト)- (1))層下げる
(() ^ ():: operators)
([10 ^ v]\(((power)\) * ([log v]\((base)\))))

または

([e ^ v]\(((power) * ([ln v]\((base)\)))\))
Warning メモ: 負の数の累乗には対応していない。(例 (-2)5.
<true::operators>
<<> ではない> //中にブロックは入れない。

または

<[0] = [0]> //両方に同じものを入れる。
<false::operators>
<<<> ではない> ではない> //内側のところにはブロックをいれない。 

または

<<> かつ <>> //中にブロックは入れない。

または

<<> または <>> //中にブロックは入れない。

または

<[0] = [1]>
<[] ≠ []::operators>
<<[] = []> ではない>
<[] ≥ []::operators>
<<[] < []> ではない>

または

<<(入力1) > (入力2)> または <(入力1) = (入力2)>>
<[] ≤ []::operators>
<<[] > []> ではない>

または

<<(入力1) < (入力2)> または <(入力1) = (入力2)>>
(もし <> なら [] でなければ []::operators)
もし <> なら
[report v] を [true] にする
でなければ
[report v] を [false] にする

または

(((true) * <>) + ((false) * <<> ではない>))
Warning メモ: 数字のみ使える。文字列を使いたいときは、一つ目のものを使うこと。
(()番目から()番目\([]\)::operators)
[report v] を [] にする
[count v] を (a)にする // aは一番目のの文字
<(count) = ((b) + (1))> まで繰り返す // bは最後の文字
[report v] を ((report)と(letter (count)((text)))) にする
[count v] を (1) ずつ変える
end
(digit ()\(()\)::operators)
(([floor v](((number)) / ([10 ^ v]\((([floorv]\((digit)\))\) - (1))))) mod (10))
(round () to the nearest ()::operators)
((round ((round what) / (to the nearest))) * (to the nearest))

または

((round ((number) * ([10 ^ v]\((number of places)\)))) / ([10 ^ v]\((number of places)\)))
([ v]の効果::looks)
ずっと
[色 v] の効果を (effect) にする
<音 [ v]が再生されている::音>
[playing v] を [true] にする
終わるまで [任意の音 v] の音を鳴らす
[playing v] を [false] にする
[ v]の音を (1)拍鳴らす::音
[任意の音 v] の音を鳴らす
(1)拍休む
すべての音を止める
(instrument::音)
ずっと
instrument を (instrument) にする
change item (1 v)\([ v]\) by (1)::リスト
(1 v)番目\([任意のリスト v]\)を(((1 v)番目([任意のリスト v]) + (1))で置きかえる
もし <> なら、ずっと {}::control
ずっと
もし <> なら
(::obsolete) がクリックされたとき::hat events
ずっと
タイマーをリセット
end
[タイマー v] > (0.1) のとき
...
(10) + (10) = (10)のとき::hat operators
もし <((10) + (10)) = [10]> なら
<<> xor <>::operators>
<<<bool> = <other bool>> ではない>