コードの記述 その8 スコアの表示

やっぱりゲームですので、友だちと競いあわねばなりません。というわけで、次は終了時に得点を表示するようにしてみましょう。

まず、MainCanvas( )関数の手前に得点用の変数scoreを宣言を追加し、0で初期化します。

    int appearTerm = 900;
    Image bangImage;
    int score = 0;
    
    MainCanvas() {

次に122行目近辺に、得点の追加用のコードを追加します。得点は、敵機が画面の下のほうへ消えてしまうたびに10点プラスすることにしましょう。

            for (id = 0; id < enemyList.size(); id++) {
                Enemy enemy = (Enemy)enemyList.elementAt(id);
                boolean f = enemy.move();
                if (! f) {        //画面の外にはみ出したら
                    enemyList.removeElementAt(id);    //敵機をリストから削除
                    score += 10;    //得点の追加
                }
            }

最後に、ゲームオーバー時に得点を表示するコードを追加します。132行目近辺から以下のコードを追加してください。

            if (hitCheck()) {
                tm1.stop();        //tm1タイマーを止める
                tm2.stop();        //tm2タイマーを止める
                g.drawImage(bangImage, fighter.xpos - 4, fighter.ypos - 4);
                
                //スコアの表示
                g.setColor(g.getColorOfName(Graphics.YELLOW));
                g.fillRect(0, 20, Display.getWidth(), 100);
                g.setColor(g.getColorOfName(Graphics.RED));
                g.setFont(Font.getFont(Font.SIZE_LARGE));
                g.drawString("得点: " + score + "点", Display.getWidth() / 8, 80);
            }

ここで保存し、「ビルド」、「実行」と進めます。

画面イメージ

ゲームオーバーすると得点が出ますので、しばらくゲームを楽しんでください。