コンテンツにスキップ

指導要領:Scrach スクラッチレース!

概要

  • 対象:スクラッチ初心者(初回でもよい)

  • 対象人数:10人位まで

  • 対応:Scratch2.0オフライン版

  • 必須環境:共有フォルダ

  • 時間:60分〜90分

サンプルファイル

sb2 20180624さいたま前半.sb2

sb2 20180624さいたま後半.sb2

Pythonプログラム、テンプレートなどファイル一式のダウンロード

zip scratch-racing.zip

GitHub リポジトリ

解説

「色に触ったら」の条件分岐で自動運転レースカーのレースを行う。

Scratch2.0のファイル形式.bz2はzip形式であり、中にはJSON形式で表現されたScratchのスクリプトと画像、音声データが入っている。

これを利用し、子どもたち一人ひとりが作成したレースカーの保存ファイルを集め、レースを行う。

ルール

  • 5周するスピードを競います。

  • コースアウト(道から車体全体がはみ出す)すると「クラッシュ」して停止。

  • 中央部の黄色い障害物にぶつかっても停止します。

事前準備

  1. Scratch2.0オフライン版をすべてのPCに用意する。

  2. 先生用にpython3が動く環境を用意する。

  3. githubからファイルを一式ダウンロードする。

  4. car_template.sb2を共有フォルダにコピーし、参加者全員分作ってファイル名を参加者の名前にする。

  • 例:竹林、山田、佐藤の3名の参加者がいたら、car_template.sb2をコピーしたファイル、竹林.sb2山田.sb2佐藤.sb2の3ファイルを作って共有フォルダに置く。

授業手順

その1:個人用スクラッチファイルを開く

  1. 共有フォルダから自分の名前の.sb2ファイルを開いてもらう。ダブルクリックすればScratch2.0オフラインエディターが起動する。

  2. ステージの背景から、皆で同じサーキットを選ぶ。

その2:レースカーを描く

ポイント 講師がレースカーを描くときは、あまり詳細に書かないようにしてください。詳細に書くと、子どもたちも真似をするのでここでかなり時間をとられます。

  1. 「新しいスプライトを描く」からレースカーを描いてもらう。このとき、以下のことを板書して子どもたちに徹底させる。
  • 右向きで描く

  • レース場にある色(緑と灰色と黄色)は使わない

  1. 中心点がレースカーの真ん中になるようにする。

  1. 上部ボタンで大きさを縮小してコース(灰色)に入るようにする。

  2. レースカーの名前を設定する。

  • これを設定しないと順位表に名前が表示されません。

その3:レースカーをプログラミングする

  1. レースカーをスタート地点に持ってくる。
  • このとき、レースカー全体が灰色のコースに入っていること、先頭がスタートラインにあることを確認。

  1. 「緑旗がクリックされたとき」「x座標を◯◯、y座標を◯◯にする」「90度に向ける」

    • この段階で緑旗クリックで最初の位置に戻ることを確認させる。

    • 「x座標を◯◯、y座標を◯◯にする」の数字は自分で入力しなくても自動的に入ることを理解させる。

  1. 「ずっと」「10歩進む」を追加して走らせます。
  • 実際に走らせてコースアウトすることを確認させてください。

  • ここまでの授業が長いので、「いよいよ走らせるよ〜」などと言って盛り上げてください。コースアウトした時に歓声が上がりますw

  1. どうしたらよいかを子どもたちに質問して考えさせます。
  • 「コースアウトしそうになったら右に曲がれば良い」ということを導き出させます。
  1. 「ずっと」の中に、「色に触れた時」「(右に)15度回す」を入れる。

    • 色の指定のしかたを子どもたちに示してください。

    • これでレースカーは右回りするようになります。

その4:チューニングする

安定して5周を周回できるように調整します。

チューニングポイント

  • 「10歩動かす」の歩数

  • 「15度回す」の度数

  • 中心点の調整

ポイント うまくいかない子には、「中心点を後ろにずらす」と良いということを早めに教えてあげてください。これが一番安定性に影響するようです。

その5:共有ディレクトリへの保存

子どもたちのチューニングが終わったら、「ファイル」「保存」から自分たちのファイルを保存させます。もともと共有フォルダのファイルをそのまま開いているので上書き保存します。

その6:先生のマージ作業

  1. 手元のcircuit.sb2を編集して、背景を子どもたちに選ばせたコースに設定します。

  2. コースによってはスタート地点のチェッカースプライト(_bar_)が開始地点にないので移動してください。

  3. circuit.sb2の中央の黄色い障害物(_seats_)を適切な位置に置きます。

  4. carsフォルダに子どもたちのレースカー(.sb2ファイル)を集めます。

  5. carsのすぐ上のディレクトリで以下のコマンドを実行しレース(racing.sb2)を生成します。

> python merge.py
  1. racing.sb2を実行します。おおいに盛り上げてください。

サーキット一覧

| サーキット| 画像|特徴|

| --- | --- | --- |

|練習| 練習.png| 右回りカーブのみ。コース左右色違い|

| A |Aコース.png| 左回りのカーブもあり。コース左右色違い。 |

| B |Bコース.png| 左回りのカーブもあり。コース左右同色 |

| C |Cコース.png| 左回りのカーブもあり。コース左右同色 |

| D | Dコース.png| ヘアピンコース。コース左右色違い|

| E | Eコース.png| ヘアピンコース。コース左右同色 |

| F | Fコース.png | 交差ありのコース。左右色違い |

| G |Gコース.png | 交差ありのコース。左右同色 |

左右同色のサーキットへの対応

  1. レースカーに左右色違いの「触覚」を作ります。

  1. プログラムを以下のようにします。

問題点

  • 現状では「灰色に触れていない」とコースアウトになるため、他のレースカーにすっぽり重なるとコースアウト扱いになってしまう点。

  • 授業では色判定を使わせるものの、たとえばコースのラインを配列にしてそれを沿わせるようなプログラムを規制できない点。

  • 数字のパラメータを調整して速いレースカーを作ったら勝てるが、そのパラメータ調整があまりにも場当たり的でロジックの学習という要素がない点。