スポンサーリンク
※サイト運営にサーバーは必須です※
~ ロリポップ! はコスパのよい初心者向けサーバーです~
目次
はじめに
「無限計算トレーニング」という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
~ギャンブルに絶対儲かる必勝法があるのだろうか?~
私(サイト主)はこの疑問に対して非常に興味を持ち、プログラミングで検証してみました。
このサイトを応援してもいいかなと思う人はぜひとも購入を検討してみてください。