Scratch 再帰処理課題10
課題内容
シェルピンスキーのカーペットを描画
※描画に時間がかかるためターボモードの利用推奨
解答
解答を表示する
スプライト1
追加①追加②追加③
@greenFlagが押されたとき x座標を(0)、y座標を(0)にする (90)度に向ける 全部消す [再帰回数を入力してください。]と聞いて待つ [回数 v]を(答え)にする [長さ v]を(330)にする [描画開始x座標 v]を(-165)にする [描画開始y座標 v]を(-165)にする x座標を(描画開始x座標)、y座標を(描画開始y座標)にする シェルピンスキーのカーペット(回数)(長さ)::custom
定義 シェルピンスキーカーペット(回数)(長さ) もし<(回数::custom)>(0)>なら (4)回繰り返す シェルピンスキーカーペット((回数::custom)-(1))((長さ::custom)/(3))::custom (長さ::custom)歩動かす シェルピンスキーカーペット((回数::custom)-(1))((長さ::custom)/(3))::custom ((2)*((長さ::custom)/(3)))歩動かす ↺(120)度回す end でなければ ペンを下ろす 塗りつぶしの四角形描画(長さ::custom)::custom ペンを上げる end
定義 塗りつぶしの四角形描画(長さ) もし<(長さ::custom)>(0)>なら 塗りつぶしの四角形描画((長さ::custom)-(0.1))::custom ペンを下ろす (4)回繰り返す (長さ::custom)歩動かす ↺(90)度回す end ペンを上げる end
解説
解説を表示する
スプライト1
追加①追加②追加③
@greenFlagが押されたとき
緑の旗が押されたとき、スクリプトを開始する
x座標を(0)、y座標を(0)にする (90)度に向ける
スプライトを、原点に移動して、右に向ける
全部消す
白紙状態にする
[再帰回数を入力してください。]と聞いて待つ [回数 v]を(答え)にする
キーボードから入力した数値を変数「回数」に格納する
[長さ v]を(330)にする [描画開始x座標 v]を(-165)にする [描画開始y座標 v]を(-165)にする
変数の初期設定
x座標を(描画開始x座標)、y座標を(描画開始y座標)にする シェルピンスキーのカーペット(回数)(長さ)::custom
描画を開始位置に移動して定義「シェルピンスキーのカーペット」を実行する
定義 シェルピンスキーカーペット(回数)(長さ)
定義「シェルピンスキーのカーペット」が呼び出されたとき、スクリプトを開始する
もし<(回数::custom)>(0)>なら でなければ end
引数「回数」が0になるまで再帰を実行する
(4)回繰り返す シェルピンスキーカーペット((回数::custom)-(1))((長さ::custom)/(3))::custom (長さ::custom)歩動かす シェルピンスキーカーペット((回数::custom)-(1))((長さ::custom)/(3))::custom ((2)*((長さ::custom)/(3)))歩動かす ↺(120)度回す end
引数「回数」を減らして定義「シェルピンスキーのカーペット」を実行して、次の位置へ移動する
塗りつぶしの四角形描画(長さ::custom)::custom
定義「塗りつぶしの四角形描画」を実行する
定義 塗りつぶしの四角形描画(長さ)
定義「塗りつぶしの四角形描画」が呼び出されたとき、スクリプトを開始する
もし<(長さ::custom)>(0)>なら end
引数「長さ」が0になるまで再帰を実行する
塗りつぶしの四角形描画((長さ::custom)-(0.1))::custom
引数「長さ」を減らして定義「塗りつぶしの四角形描画」を実行する
ペンを下ろす (4)回繰り返す (長さ::custom)歩動かす ↺(90)度回す end ペンを上げる
四角形を描画