Scratch!でカルタ読み上げツール

2017 新年あけましておめでとうございます。

さて、、新年あけて早1週間。娘(7歳)は3DSはないのに、昨年後半からポケモンにはまり、、お年玉でポケモンカルタを購入してきました。

とはいえ我が家は、3人家族。土日に娘と私が遊ぶときは、たいてい妻は何かしら用事をしてくれています。

こうなると本来のカルタ遊びができません。。。こういうときに兄弟って大事なんですね。

と、言っていても仕方ないので、、カルタ読み上げのためのツールを、Scratch!で作ってみることにしました。

Scratchの便利なとこ

Scratchを使ったのはこんな感じで便利な点が多かったからです。

  • 娘さんもたまに触っていた
  • カルタを読み上げるのを簡単に音声データに保存できる
  • 画面が簡単につくれる

 

頭の中で考えた流れ

  1. 45枚のカルタを読み上げて、音声データを作る(このカルタは、、「い、う、えの重複+ん」が取り除かれているので45音)
  2. 3つのボタン(新しいカルタを読む、再度読む、最初から)を配置する
  3. 「最初から」を押して開始。最初に、これから読む45枚分の順番をランダムで決める
  4. 「新しいカルタを読む」を押すと、次のカルタの音声ファイルを再生する
  5. 「再度読む」を押すと、(4)と同じカルタの音声ファイルを再生する

 

1. カルタの読み上げ

労力としては、、これが一番大変。これは娘さんと分担して読み上げつつ、録音してきます。

こんな感じで、、「あ」のカルタについては、「あ」というファイル名を設定して、後から再度録音したいときに見つけやすいようにしています。

ここで1回悲劇が。。1度全部いれたあと、、不用意にデフォルトの猫のスプライトを消したら、、、音も消えました><。そう、スプライトに紐付けてしまっていたのです。;_;。今回の場合、音はステージに設定して再度録音しました。

2. ボタンの配置

ボタンというか、3つのスプライトをとりあえず作成。後ほど画像に変更する予定です。

 

3. 最初からの動作(Resetスプライト)

Scratchの知識が乏しいこともあり、45枚分のカードをランダムに配置するために、

  1. 1から45までの数字を保存したリスト(readlist)を作る
  2. 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のプロジェクトは公開していません。あしからず。。