
銀行やコンビニなどにあるATMはお金を出し入れすることができる機械です。
ATMの機能全てを完全に再現するのは難しいため、人物(ユーザー)の認証機能付きのATMを簡易的に作成してみましょう。
ATMに持たせる機能を整理

通常のATMはキャッシュカードを挿入して、暗証番号を入力することで、様々な取引をすることができます。
今回は、以下の要件で作成していこうと思います。
- ユーザーの名前を入力:キャッシュカードの代わり
- 暗証番号(数字4桁):通常のATMと同じ
- お預入れ
- お引出し
- 残高照会
プログラム作成前の準備

まずは「ユーザー」という名前のスプライトを作成し、コスチュームに5人を登録しました。
名前は上から、ギガ、ゴボ、ナノ、ピコ、テラですね。
コードは簡単なので作ってしまいましょう。

次に、3つのリストを作成します。
名前は「ユーザー名」「暗証番号」「口座残高」としました。

このコードは、どこに書いても問題ありませんが、今回はステージのコードとして作成しました。
リセット機能のようなものですが、旗が押されたときにしない理由は、毎回実行するたびに口座残高がリセットされてしまうのを防ぐためです。
基本的には作成後、最初の1回だけ実行する目的です。

上のコードでは、暗証番号の数字をそのまま保存していますが、実際に使用されているプログラムでは、暗号化したものをデータベースに保存し、万が一、情報が漏れても簡単に突き止めることができないようにします。
(今回は省略します・・)
ATMのプログラム(認証機能)を作成

ATMのスプライトは、これと思うものを描くか、用意してください。

ユーザー認証を受け取ったあとのコードです。
名前と暗証番号を入力してもらい、それがリストの内容と一致する場合のみ取引が開始できるという認証機能です。
リストのことがよく分からないという場合は、以前リストの使い方を説明する記事を書いたので、そちらで復習してみてください。
ボタンのプログラムを作成

取引開始を受け取ったあとのボタンのプログラムを作成していきましょう。
Scratch星人は、ボタンというスプライトに4つのコスチューム(ボタン初期化・ボタン1-お預入れ・ボタン2-お引出し・ボタン3-残高照会)を作成して、クローンを使ってプログラム管理しています。
もし、クローンが苦手という場合は、ボタン1〜3を3つのコスチュームに分けて作成しても大丈夫です。

こちらがボタンのコードです。
難しそうに見えますが、ひとつずつ意味を考えていけば理解できるはずです。
つまずくポイントは2つだと思いますが、それも過去の記事を読めばクリアできます。
- ボタン表示の「T」と「F」は真偽値をあらわしています。
- ボタンIDという変数は、このスプライトのみ(ローカル変数)です。
ATMのプログラムに取引機能を追加

ボタンから送られてくる「お預入れ」「お引出し」「残高照会」いずれかの処理を上記で作成しています。
- お預入れ:入力された金額を現在の残高と足してリストに反映させる
- お引出し:入力された金額を現在の残高から引いてリストに反映させる
- ただし、残高不足の場合は処理を実行しない
- 残高照会:現在の口座残高を表示
上記者向けの機能追加提案
ここまでのコードで一通りの機能は完成しました。
どうでしょう。難しかったですか?
簡単だったという人は、ぜひ機能追加に挑戦してみてはいかがですか?
(回答は記事にしていませんが・・)
- 入力金額対策:現在の仕様では「0」や「マイナス」の金額も入力出来てしまいます。それらの入力を制限するような機能を追加してみましょう。
- 続けて取引:いずれかの処理が終わると「すべてを止める」でプログラムが終了します。これを残高照会→お引出しなどのように続けて取引できるように改良すると、より便利です。
- 暗証番号:間違った入力回数で制限を設けることで、より本物のATMらしくなると思います。
- ユーザー追加・削除:実際のATMにはありませんが、そのような機能があっても面白いと思います。
- 送金:ユーザー間でお金を送金できる機能を追加してみましょう。
上記の機能は下にいくほど難易度が上がりますので、ぜひ頑張って実装してみてください。
まとめ
簡単なATMを作成してみました。
しかし、その中にはプログラミングの基本が分かっていないと実装できない処理などがあり、学ぶことがあったのではないでしょうか。
今回のように、身の回りにあるモノの仕組みを考えて、自分で作ってみるということは、プログラミング上達のための練習には最適です。
ぜひ様々なものをスクラッチで作成してみてください✌︎(‘ω’✌︎ )
コメント