2011年4月29日金曜日

Androidでゲーム ブロック崩し編                 12回目:数字画像を使って機数の表示と設定

機数の設定を行う。

ボールが画面の下に落ちたら、機数を1減らす。

大まかな流れ
ボールが画面の下に落ちる

カウント変数を1減らす

ボールが初期位置に出てきて、移動を開始

機数の表示は、文字列では無く数字画像を使用する。

数字画像の表示方法や設定情報は
Androidでゲーム ブロック崩し編 9回目:数字画像を使って点数の表示
でも、扱っている。

初期設定値は3。
コンストラクタの中身には
count=3;
と、記述。

Ballを設定しているクラスファイルの描画メソッドの中に、数字画像の表示と、
配列の中身に桁の計算を記述する。

こんな感じ
※機数の表示は2桁の表示としたい。
なので、0だけの画像は2個、横に連なっている画像を表示させる

//0が2個の画像
canvas.drawBitmap(img2,264,100,null);

//数字画像の呼び出し
//数字画像のよびだしも2桁分のみの設定。
//配列の中身は、1桁目が9の時、10に表示が変わる時の1上がる計算
canvas.drawBitmap(img3[count%10],280,100,null);
canvas.drawBitmap(img3[count/10],264,100,null);

次に、ボールの移動制御を設定しているメソッド内で、ボールが画面下に落ちたら、
機数を減らす設定とボールの初期位置に出てきて、移動を開始する設定を作る。

画面下に来た場合の条件式の中に機数を減らす設定と、
ボールを初期位置に戻す設定を記述する。

こんな感じ
down_Count(1);
//スタート時のボールの位置はx=150,y=250に設定している
setPos(150,250);

down_Count()メソッドは
public void down_Count(int count) {
//thisを忘れると、カウントしてくれない。
this.count-=count;
}

初期位置に戻すメソッドsetPos()は、
public void setPos(float x,float y) {
this.x=x;
this.y=y;
}

と、設定を作っておいた物。

ただ、このまま機数を減らして0よりも小さくなってしまったら、
「Sorry!」の警告ダイアログがでてしまうので、これを回避する設定を作る。

作るといっても、count変数が0よりも小さくなってしまったら、ゲームを止めるように設定するだけ。

Ballを設定しているクラスファイルの中で、ゲームオーバーになった時のメソッドを作成する。
そして、そのブロック内に設定情報を記述する。

今回の設定内容では、countが0よりも小さくなってしまったら、ボールを初期位置に戻して、
移動を止めて、ゲームオーバーの文字列を表示させるだけのものを作成する。

全体の流れは以下の通り




















コードはこんな感じ
public void gameOver() {
//countが0よりも小さくなってしまったら
if(count<0) {
//カウントに0を代入
count=0;
//移動を止める為、移動設定をしている変数に0を代入
move_x=0;
move_y=0;
//ボールを初期位置に戻す
setPos(150,250);
//0よりも小さくなってしまったらフラグをtrueに設定する
flg=true;
}
}

描画メソッドは、条件式にてフラグがtrueの時に、文字列を表示するように設定する。
こんな感じ
//フラグがtrueの場合
if(flg==true) {
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
paint.setTextSize(25);
canvas.drawText("ゲームオーバー",75,300,paint);
}

Ballクラスで設定したgameOverメソッドをMainSurfaceViewを設定しているクラスファイルの、
runメソッド内で呼び出して
記述するだけ。


動画は機数の初期設定を3ではなく、1で設定している。



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

0 件のコメント:

コメントを投稿