mBlockを使ってArduinoを動かしてみた16:コードブレーカー完成して遊んでみた(小学生こう君のブログ )
こんにちは!こう君です。
今回はいよいよ最終回です。今回は、がんばって作ったコードブレーカーで遊びます。
ゲームのルールはここです。
mBlockを使ってArduinoを動かしてみた10:コードブレーカーゲームのルール
第10回から第15回までで解説したプログラムを、お父さんがつなげてくれました。
(父 注:記事末尾で解説します。)
では、早速遊んでいきます。 弟と一緒に遊びました。
スプライト(パンダ)をクリックすると、3つのスイッチで数字の入力ができます。
最初に、1234と入れてみました。するとついたLEDは緑が1つ、赤が2つでした。
2回目、3回目と入力をしました。しかし、ずっと赤2つだけと、緑1つ赤2つが交互になって、なかなか当たりません。色々試した結果、ちょうど8回目で正解できました。
正解した時、音もLEDも、しっかり動きました!
これで、Arduinoを使ったブログは終了です。
これからは、たまに他の内容の番外編を投稿したいです。
ここからは、お父さんにプログラムの解説をしてもらいます。
父の解説:プログラムの統合
すでに前回の記事までで要素要素のプログラムは作っていたので、こう君自身にプログラムを合体していってもらおうと思っていたのですが、mBlockのエディタだと大きなプログラムの編集が難しく、さらに以下に書く通り、思った通りに動かない問題があって、結局、父がプログラム統合を行いました。
mBlockの制約によって一部プログラムを書き直しました。
Arduino側のプログラム
第14回に書いた、サーボモータが「ブロードキャスト」を介してだとスプライト側から駆動できなかった問題に続いて、今回プログラムを統合するとブロードキャストを介して動くスクリプトと動かないスプリトがあり、困りました。
結局、「mBlockのブロードキャストを介してArduino側で動かせるメッセージは10個まで」という制約があることを見出しました。これがバグなのか、仕様なのかはわかりませんが、とにかく使用したバージョン(v5.2.0)にはそういう制約があるようです。
そこで、Arduino側で受け取るメッセージが10個になるようにプログラムを組みなおしました。
具体的には、
第13回の「syokika」を、「switch-wait」の中に統合
して数を減らしました。
スプライト側のプログラム
Arduino側のメッセージを増やせないことがわかったので、スプライト側のプログラムを少し冗長にして対応しました。具体的には、3通りの場合
(i) n-red≠0 ∩ n-green≠0
(ii) n-red≠0 ∩ n-green=0
(iii) n-red=0 ∩ n-green=0
のそれぞれで、n+1回目の入力へ進む部分(「千の位はいくつ?」)を作りました(9回目だと失敗の状態へ遷移する)。もう少し美しく書きたかったですが、何とか動いて良かったです!
バックナンバー:
mBlockを使ってArduinoを動かしてみた1:セットアップ(小学生こう君のブログ )
mBlockを使ってArduinoを動かしてみた2:LEDライト点滅(小学生こう君のブログ )
mBlockを使ってArduinoを動かしてみた3:LEDで信号機(小学生こう君のブログ )
mBlockを使ってArduinoを動かしてみた4:スイッチ取り付け(小学生こう君のブログ )
mBlockを使ってArduinoを動かしてみた5:早押しボタン(小学生こう君のブログ )
mBlockを使ってArduinoを動かしてみた6:音を出す(小学生こう君のブログ )
mBlockを使ってArduinoを動かしてみた7:モータを回す(小学生こう君のブログ )
mBlockを使ってArduinoを動かしてみた8:パソコン画面のキャラクターと連動(小学生こう君のブログ )
mBlockを使ってArduinoを動かしてみた9:液晶ディスプレイ(小学生こう君のブログ )
mBlockを使ってArduinoを動かしてみた10:コードブレーカーゲームのルール(小学生こう君のブログ )
mBlockを使ってArduinoを動かしてみた11:コードブレーカーの暗号を作る(小学生こう君のブログ )
mBlockを使ってArduinoを動かしてみた12:コードブレーカーの暗号判定(小学生こう君のブログ )
mBlockを使ってArduinoを動かしてみた13:コードブレーカー判定結果の出力(小学生こう君のブログ )