2014年1月8日

2年前に作ったAndroid用オセロゲームを真面目に改善した時のメモ


コンピュータの思考ルーチンの強化


得点テーブルを使うのは序盤のみ。
自分の全滅は最低の評価、相手の全滅は最高の評価。

中盤は独自の評価関数を使う。
  •   自分が打てる場所を多く、相手の打てる場所を少なく。
  •   確定石のプラス評価。
  •   Wingのマイナス評価。
  •   X打ち、C打ちのマイナス評価
終盤は完全読み切り。
ゆらぎ(Randomness)の実装。(毎回同じ手を打たない様に。)

Javaコードのパフォーマンス改善


盤面のオブジェクトを手番が進むたびにコピーする代わりに、事前に60要素の配列を準備して入れておく様に変更。
これだとUndoして一つ前の状態に戻すには配列のインデックスをマイナス1するだけ。

盤面の状態を表すのにオブジェクトの配列ではなくintの配列を使う。(System.arraycopyが使えるので高速。)

オブジェクトの生成を極力避ける。
  •  Pointオブジェクトは最初にnewしてset()メソッドで使い回す。
  •  ArrayListは最初にfinal修飾子付きでnewしてclear()で初期化して使い回す。

ループの終了判定に.size()や.lengthを参照しない。


広告の表示方法への工夫


ゲーム中は表示せず、終了後にふわっと現れる様に。


UIの改善


コンピュータ思考中のプログレス表示と処理中アイコン表示を追加。


JUnitを使った単体テスト


思考ルーチンのデバッグには単体テストが不可欠だった。




以上

2013年12月18日

ASP.NET MVCでリフレクションを使って任意のオブジェクトの一覧をCSV形式で返す

ASP.NET MVCで任意のオブジェクトのIEnumerableを受け取ってCSVファイルを出力するクラスを作ったので、久しぶりにGitHubに上げておこうと思う。

https://github.com/mikehibm/CSVResult


何も大した事はしていないけれど、リフレクションを使った例として今度の勉強会で使おうかと思っている。
上の様なデータが


この様にCSV形式でダウンロードされる。上はExcel 2010で開いた所。

CSV形式と言うと、データの中に引用符(ダブルクォート)やカンマが含まれていた場合の処理が面倒だ。

今回は
  • ダブルクォートは二重化する。("→"")
  • カンマは全角に変換する。
  • 改行コードは「|」に変換する。
というとりあえずのルールで実装してみた。

検索して調べた限りではカンマが含まれる場合は項目全体をダブルクォートで囲めば良いと書いてあるケースが多かったけれども、それだとExcel 2010でどうしても列がずれてしまうので、苦肉の策として全角にしてしまった。^^;

改行コードについても同じく、ダブルクォートで囲むだけではExcel 2010では上手く行かないみたいなので適当に「|」に変換する事にした。まあ実際に使う際には適宜仕様に合わせて変更すればいいかなと思う。



















 

2013年11月6日

子供向けにぜひおすすめしたい算数アプリ4選

cocos2d-x を使って子供向けの算数ドリルのアプリを作ろうとしていて、そのための参考に既存のアプリを調べていたら「これはすごい!」と思えるものがいくつか見つかったのでメモしておこうと思う。

Google Playで「算数」や「Math」で検索して大体200位ぐらいまでの結果の中から良さそうなものを選んで、かれこれ40個ほどをインストールして実際に動かしてみた上で厳選した結果なので、子供向けの算数アプリを探している方にはぜひ参考にして頂ければと思う。



第4位


Math Is Fun:陽気な数学


グラフィックがいい味を出している。ドリルというよりはパズル的。結構考えないと行けないのでどちらかと言うと高学年向けかも。大人でも遊べる。

Android app on Google Play  




第3位


Mathemagica Free - Kids Math


独特のグラフィックで最初はとっつきにくい感じがしたけれど、やってみるとなかなか面白い。問題のパターンが多くて、よく考えられている。
算数を始めたばかり、というレベルから高学年まで幅広いレベルに対応した問題が用意されているので、ぜひ有料版を買って長く遊びたい。

Android app on Google Play 




第2位


おサルさんの算数 ― 空飛ぶアドベンチャー


最初にこれをやってみた時は感動した。きれいなグラフィックと軽快な横スクロールでシューティングゲーム風のプレイは斬新だ。
子供はきっとのめり込むと思う。

Android app on Google Play  




そして一番「すごい!」と思ったのはこれ!


第1位


Hudriks Math For Kids


『美しいグラフィック、3Dアニメーション、特殊効果が、小学校に通うあなたのお子様にとって、算数の学習を忘れられないほど楽しいものにしてくれます。』

確かに美しく描かれたキャラクターと背景のグラフィックが素晴らしい! キャラクターが飛び跳ねるアニメーションの時にはちゃんと影の大きさも変わる。このクオリティの高さにはただただ脱帽。(見た感じ多分開発環境はUnityだろうな。) 
ワクワクさせられる音楽も良い。
ストーリーモードでは面倒な設定やレベル選択の必要も無く簡単な問題から自然に難しい問題に変わっていく辺りも良く考えられていると思う。

Android app on Google Play