2017 新年あけましておめでとうございます。
さて、、新年あけて早1週間。娘(7歳)は3DSはないのに、昨年後半からポケモンにはまり、、お年玉でポケモンカルタを購入してきました。
とはいえ我が家は、3人家族。土日に娘と私が遊ぶときは、たいてい妻は何かしら用事をしてくれています。
こうなると本来のカルタ遊びができません。。。こういうときに兄弟って大事なんですね。
と、言っていても仕方ないので、、カルタ読み上げのためのツールを、Scratch!で作ってみることにしました。
Scratchの便利なとこ
Scratchを使ったのはこんな感じで便利な点が多かったからです。
- 娘さんもたまに触っていた
- カルタを読み上げるのを簡単に音声データに保存できる
- 画面が簡単につくれる
頭の中で考えた流れ
- 45枚のカルタを読み上げて、音声データを作る(このカルタは、、「い、う、えの重複+ん」が取り除かれているので45音)
- 3つのボタン(新しいカルタを読む、再度読む、最初から)を配置する
- 「最初から」を押して開始。最初に、これから読む45枚分の順番をランダムで決める
- 「新しいカルタを読む」を押すと、次のカルタの音声ファイルを再生する
- 「再度読む」を押すと、(4)と同じカルタの音声ファイルを再生する
1. カルタの読み上げ
労力としては、、これが一番大変。これは娘さんと分担して読み上げつつ、録音してきます。
こんな感じで、、「あ」のカルタについては、「あ」というファイル名を設定して、後から再度録音したいときに見つけやすいようにしています。
ここで1回悲劇が。。1度全部いれたあと、、不用意にデフォルトの猫のスプライトを消したら、、、音も消えました><。そう、スプライトに紐付けてしまっていたのです。;_;。今回の場合、音はステージに設定して再度録音しました。
2. ボタンの配置
ボタンというか、3つのスプライトをとりあえず作成。後ほど画像に変更する予定です。
3. 最初からの動作(Resetスプライト)
Scratchの知識が乏しいこともあり、45枚分のカードをランダムに配置するために、
- 1から45までの数字を保存したリスト(readlist)を作る
- readlistから1つづつ、ランダムに値を取り出して、別のリスト(readrand)に入れていく
という手法にしました。
実際には、2つの変数とリスト(is_read, current、readrand)の初期化も行っています。
4. カルタの読み上げ
カルタ音声を再生するのは、ステージスクリプトで、、こんな感じ。
お判りのとおり、、1〜45の場合、それぞれ、あ〜をの音声を再生するように条件ブロックを設定しました。
最後に、is_read変数を0にしています。これは後述で、、「読み上げ」イベントを送信する前にis_readを1にしているためです。
(is_readによって、読み上げ中は、別の読み上げイベントを無視するようにしています。)
そして、、イベント送出側(New Oneスプライト)のスクリプトはこんな感じ。
is_readを判定した上で、現在の読み上げするカード番号(current)を+1した上で、イベントを送出しています。
これで、、読み上げはできるようになりました。
5. カルタの再読み上げ
こちらは、Repeatスプライトのスクリプトで、現在のカード番号を+1せずに単に読み上げイベントだけを送出します
こちらで、、一応完成しました。
実際の動作環境
タッチパネルでやったほうがやりやすいと思い、、SurfaceのChromeで動作させました。
実際便利でした。
今後の課題
子供と遊んだ結果、、使えました!!。これで親子二人のときも楽しく戦えますw
あと、子供が一人でも練習できそうです。もしかすると、ほかの用途でも使えそうですね。
とはいえ、使いづらいところもあり
- 読んでいる最中の表示がないので、読み終わりがわかりにくいため、、さっと取れた場合に、いつnew oneを押せばいいかわからなかった
- いちいちボタンを押すのも実は手間。
は、改善したほうがよさげでした。
それぞれ、、
- 読んでいるときは、、「読み上げ中」みたいな表示をする
- 何秒間隔かで、、自動読み上げしていく機能をつける
で、対応してみようと思いますが、、それはまた次回。
*読み上げデータは、カルタ作られてる方の著作物なため、Scratchのプロジェクトは公開していません。あしからず。。