アンドロイドアプリサンプルソース canvas描画&SQLite初級編 | ゲームアプリの攻略情報から人気のスマホサービス・アプリを特集して紹介 | スマホ情報は≪アンドロック≫

アンドロイドアプリサンプルソース canvas描画&SQLite初級編

イントロダクション

AndRockアプリ『パズル「Match The Color」』の開発情報をご紹介します。
このアプリでは、表示にSurfaceViewとcanvasを使用して開発しています。
また、得点の保存にはsqliteを利用しています。
ここでは、canvasとsqliteの使い方を解説していきます。

パズル「Match The Color」

機能解説

画面上部の問題と解答を表す四角形は、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な変数として宣言しています。

Config.javaでの定数指定
/** スライダーの段階数 */
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++;
}
最後にDBに保存
/**
 * トータルスコアをデータベースに記録します。
 */
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() );
}

こうして蓄積されたスコアの中から、もっとも優れたスコアを、
タイトル画面で取得して画面に表示しています。

DBからハイスコアを取得
// ハイスコアの取得
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段階上下に調整してみると、正解になるかもしれません。



あなたにオススメの記事

この記事を共有する

  • このエントリーをはてなブックマークに追加

オススメ新着記事

Recommended by

スマホ情報のAndRockを共有する



follow us in feedly


アンドロイド携帯向けアプリの人気ランキングページです。ビジネスに、遊びに、とてもお役立ちのアンドロイドアプリが勢ぞろい。どのアプリも人気のある「10個」です。厳選されたラインナップ。もしかしたらあなたの携帯ライフを劇的に変えるアプリも現れるかもしれません!日々変わるこのアプリのランキング動向を、ぜひチェックしてください。




人気・定番のアンドロイドアプリレビュー

ファイナルファンタジー15 新たなる王国 (Final Fantasy XV)

ファイナルファンタジー15 新たなる王国 (Final Fantasy XV)

圧倒的クオリティでプレイする新たなFF15!

AnExplorer

AnExplorer

痒いところに手が届くシンプル高機能なファイラーアプリ

ジョジョの奇妙な冒険 スターダストシューターズ

ジョジョの奇妙な冒険 スターダストシューターズ

最強のジョジョキャラを育てて「メダルシューティングバトル」を闘い抜けッッ!

Wizardry Schema

Wizardry Schema

やりこみ要素満載の本格RPG!




スマートフォン、アンドロイド、アプリの使い方を解説

LINE アプリの使い方 完全マニュアル(Android,iPhone)

6000万ダウンロードを突破した無料通話・チャットが使える神アプリLINEの使い方のまとめ


Viberの使い方、設定まとめ (Android , iPhone)

無料通話のできるViberの使い方から、初期設定、日本語化などなどのまとめ


Skypeの使い方、設定(Android , iPhone)

無料通話・無料チャットの定番Skypeの使い方まとめ


無料・おトク電話アプリ「050 plus」のまとめ

スマートフォンで月額を抑えたい人におススメのアプリ!「050 plus」の使い方を解説




ドラゴンボールZドッカンバトル攻略情報
ONE PIECE トレジャークルーズ攻略情報
LINE アプリの使い方 完全マニュアル(Android,iPhone)
インスタグラム完全使い方ガイド
iPhone説明書
LINEで絶対使いたいLINEスタンプ検索

アプリ人気ランキング

Androidアプリ
iPhone/iOSアプリ

新着スマホ情報


▼アプリ・記事の新着一覧へ

LINEで使えるオススメのスタンプアプリ まとめ20選

スマホアプリ カテゴリ一覧

スマートフォンサイト
QR-code AndRock(アンドロック)は、スマートフォンでもご利用いただけます。 QRコードスキャナーで読み取ってご利用ください。
Follow Us