
自動販売機を知らないという人はいないのでは?と思うほど、道を歩けば、多くの自販機を見かけます。
「お金を入れて飲みものを買う」機械ですが、この記事では、基本動作をプログラムしてみます。
完成後にたくさん改造して欲しいので、やる気のある方こそ、ぜひ最後まで読んでチャレンジしてみてください。
作成する自動販売機の仕様
あまり複雑にすると大変なので、以下のようなシンプル仕様で作成していきます。
- お金は100円玉のみ(おつり機能は無し)
- ジュースは1種類(値段:120円)
- 在庫を管理(購入可能か売り切れを判定)
用意するスプライト
同じでなくても大丈夫なので、とりあえず最低限の4つを用意してください。
自動販売機(本体)

自動販売機(ボタンだけ)

購入可能状態に点灯させるために使用します。
お金(100円)

ジュース

プログラムの作成
それでは、実際にコードを作成していきます。
自動販売機(本体)のコード

とてもシンプルなコードなので、解説などは省略します。
自動販売機(ボタンだけ)のコード
このコードはバグが発生しますので、後ほど、正しく修正していきます。

ポイントは2つです。
- お金が120円以上投入されていれば購入可能(購入可能=T)
- 購入可能と在庫の有無両方がTの時のみ購入を送る(実行する)
お金(100円)のコード

ジュースのコード

在庫の有無をずっとに入れてリアルタイムで判定しています。
(T=在庫あり、F=在庫なし)
バグを発見しよう
プログラムをやっていく上で、バグを避けて通ることは出来ません。
しかし、バグは、どこを直せばいいか分かりづらく、面倒になって投げ出す人も少なくありません。
せっかくなので、今回発生するバグを見つけてみましょう。
ヒントは以下の画像です。
出来れば、動作確認をして、自分で発見するまでは記事を読み進めないことをおすすめします。

見つけることが出来ましたか?
ジュースの在庫が0なので「売り切れです」と表示されていますが、お金が300円投入されているので「購入可能」な状態になっています。
これは完全にバグですね・・。
バグを修正しよう

ぜひ、自分でプログラム修正にチャレンジしてみてください!
ちょっと無理そうという場合は、以下に回答のコードを載せるので、確認してみてください。

「ずっと」の中身に変更を加えました。
修正前は、購入可能の判断は「お金が120円以上投入されているか」という条件だけでしたが、その中で「在庫の有無」も条件に追加することで、無事、バグを解消することができます。

実は、このバグは、実際にスクラッチ星人が作成中に発生したので、確認しながらコードを修正しました。
この修正を自分で考えて出来るかどうかが、プログラミングスキルの向上に深く関わってきます。
まとめ
自動販売機を作成するプログラムを紹介しました。
バグを見つけて、修正する大切さも伝わったと思います。
さて、記事はここで終わりますが、最初にも言った通り、自分の力で、このプログラムをどんどん改造してみて下さい。
何をすればいいか分からない人のために、いくつか改造例を紹介します。
- ジュースの種類を増やす(在庫や値段も別々に管理)
- お金の種類を増やす(おつり機能も実装)
- 当たり機能(数字が揃ったら一本プレゼント、など)
今回、皆さんにお伝えしたかったのは、プログラミングは、「作る→直す→チェックする→さらに拡張する」という作業に進んで、繰り返し取り組むことで、スキルがどんどん向上するということです。
大変ですが、上達したいという人は、ぜひ頑張ってみてください(*^▽^*)


コメント