2014年8月14日木曜日

モグラ叩きゲームで学ぶアンドロイドプログラミング (6/8)

前回は、もくらを叩くとスコアが+1されるところまでやりました。
今回は、もぐらを叩いたら次の場所にもぐらが出現するようにします。

全体のソースコードは以下にあります。
https://gist.github.com/mrp1q7z/f1ef3c7940cb58366de2

スコアを+1するタイミングでもぐらを表示してやります。(148行目)
printMole();
mButtonClickedに上記処理を追加します。

実行してみます。


もぐらを叩くと別の場所にもぐらが現れるようになりました。
が、前の位置にもぐらが残ったままになります。

もぐらを表示するときに、前のもぐらを消すようにします。(130行目〜)
if (mMoleButton != null) {
    mMoleButton.setBackgroundResource(R.drawable.bg_button);
}


実行してみます。


前のもぐらが消えるようになりました。

だんだんゲームらしくなってきました。
が、タイムが0になったのにゲームが続けられます。
これを直します。

タイムアウトしたら半透明の幕を出して操作できないようにします。
レイアウトファイルを修正します。


赤い部分が変更で、黄色い部分が追加したところです。
黄色い部分は「android:visibility="invisible"」にして、表示しないようにしておきます。

プログラムソースの方も変更します。
ゲームオーバーの幕を保持する変数を宣言します。(26行目)
private RelativeLayout mGameOver;

変数に値をセットします。(37行目)
mGameOver = (RelativeLayout) findViewById(R.id.game_over_container);

ゲームオーバーしたら幕を表示するようにします。(108行目)
mGameOver.setVisibility(View.VISIBLE);

幕をクリックしたときの処理を記述します。(152行目〜)
private View.OnClickListener mGameOverClicked = new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        mGameOver.setVisibility(View.INVISIBLE);
        mScore = 0;
        String strScore = String.valueOf(mScore);
        mScoreText.setText(strScore);
        mGameTime = 60;
        gameStart();
    }
};

クリックと処理を紐付けます。(38行目)
mGameOver.setOnClickListener(mGameOverClicked);

実行してみます。


今日はここまで。次回に続く。




0 件のコメント:

コメントを投稿