Scratchでお掃除ロボット
60分のプログラミング体験授業
60分ほどのプログラミング体験授業をすることになりました。
ばりばりのコンピュータサイエンスの方向性ではなくて,学校教育でのプログラミング体験や学習について垣間見るといった方向性です。
マイコンボードやセンサーなどを使った活動も魅力的ですが,事前に受講人数も分からなかったことから,コンピュータ単体で可能な題材を考えなければなりませんでした。
プログラミングのツールといえば,たとえば…
といったプログラミング環境を利用したり,
といった自習できる教材付きのプログラミング環境を利用するといったことが思い浮かびます。
教材付きもアレンジ次第で便利だとは思いましたが,今回は,Scratchを使って独自の教材でやってみることになりました。
お掃除ロボットを動かす
Scratchを使ったプログラミング体験。
ねこ(Scratchキャット)のキャラクターを動かすところから始める定石コースでもよいのですが,GIGA時代に入ってScratchの認知も広がっていますので,別のアイデアを探すことに。
そこに飛び込んできたのが,お掃除ロボットを使ったプログラミング教室のニュース記事。申し訳ないけれど,アイデアを拝借してつくったプロジェクトがこちらです。
https://xcratch.github.io/editor/#https://con3.com/sc2scratch/scrch-prjcts/soujirobo.sb3
Xcratchという拡張Scratch環境を利用したプロジェクトです。
この「お掃除ロボットプロジェクト」は…
スタートボタンで床のタイルが敷き詰められゴミが散らかります。
横0〜7,縦0〜5に分割した「8x6」空間設計です。
変数(横0)〜(横7)(縦0)〜(縦5)で座標指定できます。
掃除機ロボットは定義された移動ブロックで動かせます。
〔時計スタート〕〔時計ストップ〕で時間計測できます。
という建て付けになっています。
掃除機ロボットを動かす
というわけで,スタートボタンを押した直後の
という状態から
という単体ブロックを組み,これをクリックすると
という風に掃除機ロボットが進んで,ゴミを片づけるというわけです。
ゴミを全部片づける
スタートボタンを押してリセット。
もしも全部のゴミを片づけるとすれば…
というブロックを組み,このかたまりをクリックすると
というルートを辿り,ゴミをすべて片づけることができます。
時間を計測する
再度スタートボタンを押してリセット。
時間計測をしたければ…
というブロックを組み,このかたまりをクリックすると
という表示が出て,掃除機ロボットの移動時間を計測してくれます。
ゴミのダウンロード
お掃除ロボットが動きを止めた後も,実はプロジェクト自体は実行が続いています。
まずは一旦,ストップボタンを押して,プログラム全体を止めます。
お掃除ロボットプロジェクトには「ゴミダウンロード機能」が付いていますので,管理者側が用意した新たなゴミの散らかりに挑戦することができるようになっています。
キーボードの[g]キーを押すとダウンロード開始します。
(※下のブロックをクリックする必要はありませんが,ストップキーは押してプログラムを止めておいてください。)
そして,スタートボタンを押してリセットすれば,新たなゴミの散らかりが用意されるというわけです。
ゴミのダウンロード機能には,「ナンバーバンク」というScratch拡張機能を利用しています。
ゴミのダウンロード機能によって,参加者全員が共通の散らかり方をしたゴミの片づけに挑戦できます。それぞれが考えたルートで片づけにかかる時間を計測して比べることも可能です。
担当者用の管理プロジェクト
参加者に利用してもらう「お掃除ロボットプロジェクト」(soujirobo.sb3)には,ゴミのダウンロード機能は付いていますが,ゴミのアップロード機能は付いていません。
新たな散らかりゴミをどのように用意すればいいのでしょうか。
そのための「お掃除ロボット管理プロジェクト」(soujirobo_admin.sb3)は別に用意してあります。
よく似ていますが,管理プロジェクトの「ゴミ」スプライトには…
[スペース]キーによるゴミ生成機能
[u]キーによるゴミアップロード機能
が用意されています。
ここで重要なのは,ゴミアップロード機能とゴミダウンロード機能を使用する場合の(ゴミ名)設定です。
デフォルトでは「お掃除ゴミ」となっていて,参加者用のプロジェクトもその状態に保たれています。
(ゴミ名)は変更しないことが無難である
とだけお伝えしておきます。もし原理を理解していただけるのであれば,生成したゴミの散らかりを別名保存することも可能です。また,ゴミ生成機能を理解できれば,4つになっているゴミの数を変更することも可能です。
その他のスプライトなど
このお掃除ロボットプロジェクトでは,「掃除機」「ゴミ」「タイル」「あか文字」というスプライトが使われています。その他,ステージに初期化のためのコードがいくらか記述されています。
「掃除機」はマス目を動くていで開発されていますが,実際にはScratchの座標(-240〜240/-180〜180)で指定することができます。
「タイル」はスタートボタンを押されると,自身のクローンを作成してステージ画面全部を埋め尽くすようにプログラムされています。掃除機が触れると自らの見た目を赤タイルに変えるという動作をします。
「あか文字」は変数(あか数字)に入力された数字を表示するためのものです。今回は(タイマー)で計測された数字を入力して表示させています。汎用的なスプライトなので,部品として他のプロジェクトで利用することも可能です。
今回は,拡張Scratch環境であるXcratchを利用しました。
そのため,プロジェクトを保存したい場合は「ファイル」メニューから「コンピューターに保存する」を選択して,ファイルを保存しなければなりません。また,保存したものは公式では利用できないので,Xcratchで再度読み込みする必要があります。
拡張機能ナンバーバンクにご興味ある皆様は,リンク先で利用方法などお読みください。応援のお気持ち利用も募っています。どうぞよろしくお願いします。
さいごに…
というわけで,バタバタとお掃除ロボットプロジェクトを組んで,60分のプログラミング体験授業を実施。
最初はぐわぁ〜っとScratchの概要を紹介し…
掃除機ロボットが動くマス目へと変換して,あとは,実際にやって見せながら進めました。
参加者の飲み込みは速く,どのルートがよいのかを考えたり,それをマス目座標に変換するにはどうすればいいのか相談したり,実際にブロックとして組むのに試行錯誤したり。
結果的には,初期パターンと,もうひとパターンをやって時間がやって来たという具合です。
「ゴミダウンロード機能」はややウケしていたように思います。
よろしければ,皆さんの60分ネタも教えてください。
あるいは,お掃除ロボットプロジェクトが気に入っていただければ,どうぞご自由にお使いください。