スポンサーリンク
※サイト運営にサーバーは必須です※
~このサイトもエックスサーバーを使用しています~
目次
はじめに
「無限計算トレーニング」というAndroidアプリをリリースした。
Google Playのダウンロードページ:https://play.google.com/store/apps/details?id=com.kaen.calculation_app
アプリ概要
足し算、引き算、掛け算、割り算の問題を出してくれる。いわゆる、四則算の問題がでる。
選択肢は2つだけ。
子供の教育用の計算アプリや脳トレアプリとして使用できる。
時間制限が存在しており、正解数(スコア)が増えるにつれて、制限時間が短くなっていく。また、問題の難易度もあがる。
(アプリの画面は以下のような感じ)
1問でも間違えると、そこでGameOver。
GameOverした際、正しい答えに対応するボタンは青色に、間違った答えに対応するボタンは赤色になって表示される。
Resetボタンを押すと、スコアが0になり、ゲームが再開される。
もしも、ベストスコアが出た場合は、「High Score!!」と表示される。
ちなみに、このアプリを作った中の人のベストスコアは56。
……56……なんだか微妙……
作った当初は、100ぐらい頑張ればいけるだろうと思ってはいたのだが……
計算力に自信のある人はぜひ挑戦してみてください
※ちなみに、このアプリは英語版の説明もある。Google翻訳を駆使して作成した説明文なので、文法的に間違っている可能性は否定できない。アプリの中身は、日本語版と英語版で差はない。
計算のアルゴリズム
誤答作成の手順
このアプリを作る当初は、選択肢を4択にしたいなー、とか思っていた。
でも、いざ作ると、4択って2択と比べると、少し手間がかかることに気づいた。
例えば「4+3=□」みたいな問題を生成した時
x=4
y=3
z=x+y
という感じで、答え(z=7)を用意する。
ネックになるのが、誤答の作り方だ。
このアプリでは、1~(正解の数-1)を正解の数(ここでは7)に足し算(あるいは、引き算)して誤答を生成している。
※誤答の数を負の数にしたくなかったので
3択以上のものを作りたい場合は、正解の数に加える乱数が重複しているとマズいので、重複しない乱数を生成する必要がある。
あと、この誤答の作り方だと、小さな数だと4択作れず、破綻する。
例えば、1×1=□の場合。
上のやり方だと、誤答は1に1足した「2」または1から1引いた「0」しか作れない。4択目を作成できない。
以上のように、4択にする場合は、誤答を作るアルゴリズムを少し考え直す必要があったため、結局2択にした。
余りのでない割り算の問題の作成
これは簡単。あらかじめ掛け算を作った後、割り算を作り直せばよい。
例えば、xとyに適当な乱数をふる。
x×y=z
このときのzの値を覚えておく。
z÷x=y
x、y、zのどれかを空欄にすれば、余りの出ない割り算の問題は生成できる。
この考え方は、引き算の問題を作るときにも、使用していている。引き算の最終的な答えが負にならないようにしたい場合は、足し算を作ってから、上と似た要領で引き算をつくればよい。
スコアに応じた難易度変更
正解の数(score)が増えるにしたがって扱う数字を大きくすることで、難易度を上げている。
※もしかしたら、あとで難易度を調整するかも?
以下はリリース当初の難易度
<足し算、引き算の場合>
生成する乱数は1~(10 * score)
scoreが10を超えると3桁の足し算引き算が現れてくる可能性がある
<掛け算、割り算の場合>
生成する乱数は1~ [7+ (int)(score / 5)]
scoreが15を超えると2桁の掛け算、割り算が現れてくる可能性がある。
<制限時間>
1 + (100 / score)秒
最低で1秒は確保されている。
scoreが0の時は、例外処理で、制限時間は120(秒)
scoreが10の時の制限時間は、11(秒)
scoreが50の時の制限時間は、3(秒)
個人的な体感では、scoreが30~40ぐらいから、まじめに計算する余裕がなくなってくる。
クレジットのような何か
フォントは、Droid Serifを使用した。
アイコンは、icooon-monoからダウンロードしたものを加工した。
あとがき的な何か
今年の抱負の一つとして、そこそこやりがいのあるRPGのゲームを作りたいなと思っている。
このアプリは、RPGに必要なセーブ機能の実装(このアプリの場合はHigh Score)や時間ゲージの作成の練習的な側面もあった。
※時間ゲージはHPゲージなどに応用が可能
このアプリを通して、二つの機能のコードの書き方がある程度わかった。
とはいえ、まだ、RPGを作るために必要なパーツをきちんと実装できるか自信がない。
もう少し、手ごろなアプリを作成して、経験を積みたい。
関連記事
アプリのダウンロード(Google Play):https://play.google.com/store/apps/details?id=com.kaen.calculation_app
~プログラミングを勉強してみませんか?~
TechAcademy [テックアカデミー] は無料の体験講座が用意されているので、気軽に体験できます。
※私(サイト主)も無料体験講座を実際に受けてみました(→感想)