取り合えず、ブロック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 件のコメント:
コメントを投稿