スマホアプリならアンドロック
スマホアプリ(アンドロイド)レビューやスマホ情報はアンドロック
AndRockアプリ『パズル「Match The Color」』の開発情報をご紹介します。
このアプリでは、表示にSurfaceViewとcanvasを使用して開発しています。
また、得点の保存にはsqliteを利用しています。
ここでは、canvasとsqliteの使い方を解説していきます。
画面上部の問題と解答を表す四角形は、canvasのdrawRectを使って描画しています。
Paint paint = new Paint(); paint.setColor( Color.rgb( (int)((255 / ( Config.COLOR_RANGE - 1 ) ) * question_color[ Config.COLOR_RED ]), (int)((255 / ( Config.COLOR_RANGE - 1 ) ) * question_color[ Config.COLOR_GREEN ]), (int)((255 / ( Config.COLOR_RANGE - 1 ) ) * question_color[ Config.COLOR_BLUE ])) ); canvas.drawRect( x, y, x + width, y + height, paint );
// 現在の色を表示 Paint paint = new Paint(); paint.setColor( Color.rgb( (int)((255 / ( Config.COLOR_RANGE - 1 ) ) * slider_color[ Config.COLOR_RED ]), (int)((255 / ( Config.COLOR_RANGE - 1 ) ) * slider_color[ Config.COLOR_GREEN ]), (int)((255 / ( Config.COLOR_RANGE - 1 ) ) * slider_color[ Config.COLOR_BLUE ])) ); canvas.drawRect( color_box, paint );
三色の色は6段階で変化するようになっています。
この数値はConfig.javaでstaticな変数として宣言しています。
/** スライダーの段階数 */ public static final int COLOR_RANGE = 6;
本来は、この値を変更すれば試験管の表示も切り替わるようにしたかったのですが、
今回は時間の関係上、6段階固定での開発となりました。
各色各段階ごとに画像を用意し、切り替えています。
(ですので、定数として宣言する意味は無くなってしまいました)
ちなみに、各色6段階存在するので、色の種類は6×6×6=216種類となります。
問題をすべて解き終えたら、各問題を解くのにかかった時間を合計し、DBに保存します。
/** * ラップタイムを記録する */ public void setLapTime() { score[ now_lap ] = System.currentTimeMillis() - start_time; now_lap++; }
/** * トータルスコアをデータベースに記録します。 */ public void saveScore() { // トータルスコアを計算 long total_time = 0l; for( int i = 0; i < Config.QUESTION_MAX; i++ ) { total_time += (int)( score[ i ] / 10 ) * 10; } // スコアの記録 this.temp_query.delete( 0, this.temp_query.length() ).append( "INSERT INTO D_Score( score ) VALUES( " + total_time + " )" ); this.sdb.execSQL( this.temp_query.toString() ); }
こうして蓄積されたスコアの中から、もっとも優れたスコアを、
タイトル画面で取得して画面に表示しています。
// ハイスコアの取得 this.temp_query.delete( 0, this.temp_query.length() ).append( "SELECT score FROM D_Score ORDER BY score ASC LIMIT 1" ); this.temp_cursor = sdb.rawQuery( this.temp_query.toString(), null ); this.hiscore = 0; if( this.temp_cursor.moveToFirst() ) { this.hiscore = this.temp_cursor.getInt( this.temp_cursor.getColumnIndex( "score" ) ); } this.temp_cursor.close();
データベースの作成、初期化などの処理は、
長くなるのでここでは解説しません。
以下のようなサイトを参考にしていただければと思います。
Androidアプリのデータ保存方法の一つ「SQLite」の使い方 SQLiteOpenHelper編 (mucchinのAndroid戦記)
アンドロイド端末は解像度もサイズも色々あるので、
それらに対応させるのが大変でした。
画像を扱っていると、たまに想定したサイズや位置からずれることがあり、
「何が原因なんだろう」と長時間悩んでしまったんですが、
よくよく調べてみるとアンドロイドの画像やサイズを自動調整する機能が働いてしまっているのが原因でした。
座標がそれほど重要ではないアプリなら便利な機能かもしれませんが、
ゲームのように座標を管理しなければならない場合は注意する必要がありそうですね。
◎グラフィック
当初、タイトル画面などはもっと適当に作った画像だったんですが、
社内の人に「デザインに統一感が無い」とダメ出しを受けて
今のデザインになりました。
グラフィックデザインって難しいです。
◎ゲームのヒント
同じ色に見えるのに正解にならない場合、
少ない色の量が間違っている可能性が高いです。
1段階上下に調整してみると、正解になるかもしれません。
アンドロイド携帯向けアプリの人気ランキングページです。ビジネスに、遊びに、とてもお役立ちのアンドロイドアプリが勢ぞろい。どのアプリも人気のある「10個」です。厳選されたラインナップ。もしかしたらあなたの携帯ライフを劇的に変えるアプリも現れるかもしれません!日々変わるこのアプリのランキング動向を、ぜひチェックしてください。
2024年シリーズ1 セレクション第2弾の評価ランキングを紹介します! 第・・・
プロスピA(プロ野球スピリッツA)の攻略情報をまとめたページです。 基本・・・
2024年シリーズ1 セレクション第1弾の評価ランキングを紹介します! 最・・・
2024年シリーズ1 TS第3弾の評価ランキングを紹介します! 前回はイチロ・・・
現役の選手・監督・コーチが全盛期の能力になって登場するTS(タイムスリッ・・・
2024年シリーズ1 エキサイティングプレイヤー第2弾の評価ランキングを紹介・・・
この記事では、エキサイティングプレイヤーに続くシリーズ1の目玉スカウト「プ・・・