Scratch 再帰処理課題11
課題内容
樹木曲線を描画
※描画に時間がかかるためターボモードの利用推奨
解答
解答を表示する
スプライト1
追加①追加②追加③
@greenFlagが押されたとき x座標を(0)、y座標を(0)にする (90)度に向ける 全部消す [再帰回数を入力してください。]と聞いて待つ [回数 v]を(答え)にする [左枝縮み率を入力してください。]と聞いて待つ [左枝縮み率 v]を(答え)にする [左枝開き角度を入力してください。]と聞いて待つ [左枝開き角度 v]を(答え)にする [右枝縮み率を入力してください。]と聞いて待つ [右枝縮み率 v]を(答え)にする [右枝開き角度を入力してください。]と聞いて待つ [右枝開き角度 v]を(答え)にする [長さ v]を((330)/(回数))にする [描画開始x座標 v]を(0)にする [描画開始y座標 v]を(-165)にする [描画開始角度 v]を(0)にする x座標を(描画開始x座標)、y座標を(描画開始y座標)にする (描画開始角度)度に向ける 樹木曲線(回数)(長さ)::custom
定義 樹木曲線(回数)(長さ) もし<(回数::custom)>(0)>なら 直線描画(長さ)::custom ↺(左枝開き角度)度回す 樹木曲線((回数::custom)-(1))((長さ::custom)*(左枝縮み率))::custom ↻((左枝開き角度)+(右枝開き角度))度回す 樹木曲線((回数::custom)-(1))((長さ::custom)*(右枝縮み率))::custom ↺(右枝開き角度)度回す 直線描画((-1)*(長さ))::custom end
定義 直線描画(長さ) ペンを下ろす (長さ)歩動かす ペンを上げる
解説
解説を表示する
スプライト1
追加①追加②追加③
@greenFlagが押されたとき
緑の旗が押されたとき、スクリプトを開始する
x座標を(0)、y座標を(0)にする (90)度に向ける
スプライトを、原点に移動して、右に向ける
全部消す
白紙状態にする
[再帰回数を入力してください。]と聞いて待つ [回数 v]を(答え)にする [左枝縮み率を入力してください。]と聞いて待つ [左枝縮み率 v]を(答え)にする [左枝開き角度を入力してください。]と聞いて待つ [左枝開き角度 v]を(答え)にする [右枝縮み率を入力してください。]と聞いて待つ [右枝縮み率 v]を(答え)にする [右枝開き角度を入力してください。]と聞いて待つ [右枝開き角度 v]を(答え)にする
キーボードから入力した数値を変数「回数」「左枝縮み率」・「左枝開き角度」・「右枝縮み率」・「右枝開き角度」に格納する
[長さ v]を((330)/(回数))にする [描画開始x座標 v]を(0)にする [描画開始y座標 v]を(-165)にする [描画開始角度 v]を(0)にする
変数の初期設定
x座標を(描画開始x座標)、y座標を(描画開始y座標)にする (描画開始角度)度に向ける 樹木曲線(回数)(長さ)::custom
描画を開始位置に移動して定義「樹木曲線」を実行する
定義 樹木曲線(回数)(長さ)
定義「樹木曲線」が呼び出されたとき、スクリプトを開始する
もし<(回数::custom)>(0)>なら end
引数「回数」が0になるまで再帰を実行する
直線描画(長さ::custom)::custom
定義「直線描画」を実行する
↺(左枝開き角度)度回す 樹木曲線((回数::custom)-(1))((長さ::custom)*(左枝縮み率))::custom ↻((左枝開き角度)+(右枝開き角度))度回す 樹木曲線((回数::custom)-(1))((長さ::custom)*(右枝縮み率))::custom ↺(右枝開き角度)度回す ((-1)*(長さ::custom))歩動かす
引数「回数」を減らして定義「樹木曲線」を実行する
直線描画((-1)*(長さ::custom))::custom
定義「直線描画」を実行して元の位置に戻る
定義 直線描画(長さ)
定義「直線描画」が呼び出されたとき、スクリプトを開始する
ペンを下ろす (長さ::custom)歩動かす ペンを上げる
線を描画