2011年4月22日金曜日

Androidでゲーム ブロック崩し編                 8回目:点数の文字列表示

ブロックを壊したら、点数をカウントする。

取り合えず、ブロック1個50点としたい。

作る時の大まかな流れ
カウントをするクラスファイルを作成
               ↓
SurfaceViewを設定しているクラスファイルにある
交差判定処理の中にカウント計算をするメソッドを呼び出す。
               ↓
SurfaceViewを設定しているクラスファイルにある
描画処理メソッドでカウントの描画処理メソッドを呼ぶ。


SurfaceViewを設定しているクラスファイルにて直接作らない理由は、
のちのち、数字画像を使って、点数を表示する仕組みを作るための
前準備として。


最初は、テストとして文字列で点数をカウントしたい。
なので、必要な物はPaintクラスを使用する。

AndroidのPaintクラスを呼んで、アンチエイリアスを有効にして、テキストサイズを決めて
表示する文字の色を決めておく。
メソッドは
アンチエイリアス・・・setAntiAlias()
テキストサイズ・・・・・setTextSize()
文字の色・・・・・・・・・setColor()

こんな感じ
paint.setAntiAlias(true);
paint.setTextSize(15);
paint.setColor(Color.CYAN);


事前にPaintクラスのインスタンスを作っておく必要がある。

そして、CanvasクラスのdrawText()メソッドを呼び引数に設定する。
こんな感じ
canvas.drawText("点数:"+count, 10, 200, paint);

次は、SurfaceViewを設定しているクラスファイルに、Countを設定してクラスファイルを
呼び出すようにしなければならない。

どういう時に点数のカウントを行わないといけないか?
と言う話になるのだが、もちろんブロックにボールがぶつかった時、
点数が加算されるという仕組みにしなければいけない。

と、なると、何処にCountのクラスファイルで作ったカウントの計算をするメソッドを
呼び出すかと言うと交差したらどういう処理を行うかと、設定を行っているメソッドの
中に記述しなければいけない。

一例として
/**
 * ボールとブロックの交差処理
 */
public void block_collisionDetection() {
for(int i=0;i<NUM_BLOCK1;i++) {
if(block1[i].collideWith(ball)) {
ball.move_x=-ball.move_x;
ball.move_y=-ball.move_y;

//ボールとブロックがぶつかったら
//ブロックを消す
block1[i].die();

//点数のカウント
//ブロック1個:50点
count.count(50)
}
}
}

てな感じ。他にも色んな方法があるはず。

計算する為の仕組みまでは出来たので、最後に、描画処理を行えば
画面に点数が表示される。

android reference:Paint
android reference:Canvas


※ボールの動きやボールとブロックがぶつかった時の細かい処理は行っていない

その他のブロック崩し関連

0 件のコメント:

コメントを投稿