見出し画像

M5StickC Plus とUIFlowでプログラミング(9) - じゃんけんプログラム応用(関数)

 今回は、ゲームの実質的なプログラムの中身は進みません。

関数

 関数という機能があります。前回の変数が数値や文字列に対しての箱に対して、関数は、処理を入れておく箱のようなものです。いくつかの処理をまとめて名前をつけることができます。プログラムが進んでくると、「これ、何やっているんだっけ?」とプログラムの見通しが悪くなったり、何回も同じ処理が出てきたりします。こんなとき、いくつかの処理をまとめて一つの機能として分かりやすい名前をつけて関数にすることでプログラムの見通しをよくしたり、同じ処理は関数を呼んであげることで何回も同じ処理を書かないようにすることができます。

画像1

中央エリアの「関数」に関数ブロックがあります。

関数には種類があって、単純に処理をまとめただけのものと、「返す」とついている、値を返すもの(要は変数扱いにできるもの)とあります。前者も後者も「引数」(ひきすう)と呼ばれる値を関数に渡して、内部で使用することができます。

画像2

今回は、処理をまとめるだけなので、「返す」のない方を使用します。引数も要りません。

画像3

前回のじゃんけんプログラムの「Setup」から「ずっと」までの流れがこれです。この中で、「ずっと」の前までと、「ずっと」の中身を関数化しましょう。繰り返しになりますが、単純に名前をつけただけなので、本質的にプログラムの内容は変わりません。単純に、人間が理解や再利用しやすくなるだけです。ただ、今後、プログラムが入り組んでくるのでプログラムの内容を「こういう処理」と抽象的に扱えるようになるのは大切なことです。別に、関数を使わなくてもプログラムは書けますが、関数を使ったほうが分かりやすくなるでしょう。

「ずっと」の前は、初期化処理ですので、「初期化」という関数を作成します。関数ブロックをプログラミングエリアに置いて「dosomething」のところに関数名を入力します。日本語でOKです。

画像4

 そうしたら、「関数」の中に「初期化」というブロックができます。

画像5

「初期化」ブロックをおくことで、関数「初期化」の中身が実行されます。関数「初期化」の中に、「ずっと」の前までを移動させましょう。代わりに「初期化」ブロックをおいておきます。

画像6

同じように、「ずっと」の中は「自分の手を表示」なので、関数「自分の手を表示」を作ります。

画像7

すると、

画像8

メインの処理がとてもすっきりしました。比較すると一目瞭然ですし、「何をやっているのか」が明確になりますね。
関数を使う前のブロックをもう一度掲載しておきます。比較してみてください。

画像9

さて、同じようにボタンAが押されたときの処理、ボタンBが押されたときの処理も関数化してしまいます。

画像10

非常にすっきりしました。関数群は以下のとおりです。

画像11

プログラム的には前回と変わっていませんので、これでも、同様に動きます。

実行して確かめてみましょう。


この記事が気に入ったらサポートをしてみませんか?