fusigi-Web

52,携帯(FlashLite)で暗算の答の入力と判定

 携帯電話(FlashLite)で暗算の問題を作ってみた。暗算のフラッシュカードが出てくるのだが、その答を携帯電話のキーで入力する。そのアルゴリズムを考えるのが面白い。FlashLiteのActionScriptで問題提示と答の入力ができるようにプログラムした。一桁だけ答を入れるのだったらとても簡単だ。ただ、キーを変数で受けて表示するだけだ。でも答が一桁の暗算なんて簡単すぎる。二桁の答を入力できるようにするためには工夫が必要だった。以下がその方法。
 基本は2で割れるかどうかということ。(count)という変数を作っておき、そこに1を足していく。当然、偶数と奇数ができるわけだから、それを2で割った場合(%2)、あまりが(0)の時と、(0以外)の場合ができる。それを(if)文と比較演算子(!=)、(==)で判定している。そして一の位だけの場合は入力された変数(z)を別の変数(z1)で逃がしておく。十の位までの表示は一の位は別の変数(z1)だから、先に入れた変数(z)を10倍して、後から入れた一の位(z1)と足す。
 これを全てのキーに割り当てておく。もっとスマートな方法があると思うが、自分の理解できる範囲で作成しているので、この程度が妥当なところだ。
 
 on (press,keypress"1") {
count=count+1;
if (count%2!=0)
{ z=1;z1=1;}
else if(count%2==0)
{z1=1;z=z*10+z1;
}
      }
 これを百の位まで答を入力させることは、それなりに一つの壁だった。2週間以上考えていたが、ある日の夕方、お茶を飲みながらある方法が思いついた。
 それは当たり前ではあるが、3で割る方法だった。とりあえず試してみたらすぐにうまくいった。課題は3で割ったときに答がいくつになるのかということを工夫することだけだった。なんでやってみなかったのだろうか。できてしまうといつもそう思う。
 後はこれをボタンに仕込み、どの問題でもこの方法で入力できるようにした。
 よくある携帯電話の問題は、選択肢から選ぶつまらないものが多いが、このFlashでの入力判定だと、いくらでも複雑な選択ができるようになる。また、本当はFlashLite2だったら、文章の問題にも対応できると思う。この入力部分の工夫は可能性を広げる大切な課題だと思う。しばらく忙しくて携帯サイトの問題を作れなかったが、また作成してみようと思う。