
ファミレスや回転寿司など、身近な飲食店の注文方法のひとつに、席からタブレット端末を使用する方法があります。
この記事では有名なチェーン店のひとつである「幸楽苑」さん注文システムをプログラムしてみます。
クローンの使い方や、注文の送信、取り消しなど、役立つ内容が盛りだくさんなので、最後まで読んでみてください。
なお、今回の記事は、レベル高めなので、スクラッチの基礎が出来ている人向けの内容となりますので、以下の記事の内容が理解出来ていることが前提となります。
今回使用した、画像などは、幸楽苑公式ホームページから引用させていただきました。
著作権等の問題が発生した際には、記事を削除しますのでご了承ください。
はじめに
今回作成するタブレットメニューは、素材が多く、自分で用意するのは大変だと思います。
スクラッチ星人のスクラッチプロジェクトをリミックスして、使用することをお勧めします。
もしくは、自分のオリジナル画像で作成しても大丈夫です。

幸楽苑さんの画像は、絶対に加工や改変をしないでくださいね。
タブレット注文システムの機能
まずは、システムの流れを確認してみましょう。

トップ画面です。
5つの選択肢から、ひとつを選びます。
試しにらーめんを選んでみます。

らーめんの一覧が表示されます。
ここでは、塩らーめんを選んでみます。

「注文する」ボタンを押します。

リストに品名と金額が追加されます。

商品削除を押して、オーダーNo.(商品名の左の数字)を入力すると、一覧から削除されます。
商品を追加したい場合は一覧に戻るボタンを押すことで、2品、3品と追加可能です。
最後に合計金額を確認し、注文確定ボタンを押すと・・・

この画面が表示され、一定時間経過すると、トップ画面に戻ります。
ここまでが一連の流れになります。
様々な機能が盛り込まれています。
変数の役割

- オーダーID:それぞれの商品に個別の番号を割り当てるためのカウンタ変数
- オーダーNo.:商品選択した後、個別表示させるために使用する変数
- オーダーリセット:注文内容を格納したリストを削除するために真偽値で管理
- カテゴリーID:オーダーIDと同様の役割、カテゴリー(らーめん、ドリンクなど)を管理するために番号を割り当てるカウンタ変数
- カテゴリーNo.:カテゴリーIDを割り当てるための変数
- カテゴリーリセット:個別メニューを一覧表示するために真偽値で管理
- 金額カウント:注文商品の単価を特定する際にしようするカウンタ変数
- 合計金額:注文商品の合計金額を格納する変数
- 自分のID:クローンの識別に使用する個別ID(ローカル変数で作成)
文字にすると難しく感じるかもしれません。。
それぞれに役割を持たせていますが、複雑になるほど、事前に紙に書くなどして、頭の中と作品の完成形をイメージし、理解することが大切です。
リストについては、データベースのような役割を持たせた商品名と単価のリストと、オーダーを取りまとめたものになります。
コードの解説
全てを解説すると長くなってしまうので、最もキモとなるクローンの部分を紹介します。

このような作品でクローンを使用する場合、大切なのは、それぞれのクローンを識別するIDを持たせることです。
先ほど、変数の役割でも書きましたが、ローカル変数(このスプライトのみ)で作成することで、個々に番号を割り振ることができます。
実はこの作品はクローンの部分が理解できれば、さほど難しくありません。

そうは言っても、Scratch星人も作成中に「クローンが思い通りに消えてくれない」などのトラブルがありました。
変数の大切さ
トラブルを解決するカギは、1にも2にも「変数」です。
真偽値で管理をしたり、別の変数に格納し直すなどして、自分のやりたいことを実現するために、分かりやすくしていくことが大切です。
変数が増えると、ややこしく、複雑に感じてしまいますが、変数を理解して使いこなしていくことがプログラミングで一番大切なことと言っても過言ではありません。
まとめ
飲食店のタブレット注文システムについて、お伝えしました。
解説が少なくなってしまったので、不明点などあれば、コメントで質問いただければ、可能な限りお答えします。
今回のような作品の作成には、それなりに時間がかかるので大変です。
しかし、完成した時の達成感が大きいので、ぜひ皆さんもチャレンジしてみてください( ✌︎’ω’)✌︎






コメント