タイピングゲームにタイマー機能追加|Javaから楽しく学ぶ!ゲームプログラミング専門学校

Javaから楽しく学ぶ!ゲームプログラミング専門学校

ゲームプログラミングとはその名のとおりゲームのプログラムを作ることを指します。『Javaから楽しく学ぶ!ゲームプログラミング専門学校』ではゲームプログラミングについて、実際にゲームプログラムをJAVAプログラミング言語を使用し、作成していきながら詳しく解説していきます。

タイピングゲームにタイマー機能追加

タイピングゲーム制作続き

前回の続きでタイピングゲームを作成していきます。
前回の記事を読まれてない方はまずはこちらからお読みいただければと思います。
タイピングゲーム制作

今回はタイピングにかかった時間を計測する機能を追加してみます。

時間を計測する手段として、Calendarクラスを利用する方法があります。
Calendarクラスは日付や時刻を表示・操作するために用意されたクラスですが、ゲームプログラミングでは時間を計測するためによく使われます。
public class typing_applet extends Applet implements KeyListener{

…省略
private Calendar cal; //カレンダークラス
private long startTime; //ゲーム開始時間
private long endTime; //ゲーム終了時間
private String demoStr; //経過時間文字列

…省略
}

まずはメインクラスであるtyping_appletクラスに上記のフィールドを追加します。

    public void gameStart(){
qetNum = 0;
gameConfig = GAME_CONFIG_PLAYING;
cal = Calendar.getInstance();
startTime = cal.getTimeInMillis();
}
gameStart()メソッドはゲーム開始時に呼ばれるメソッドです。
ゲーム開始時に開始時刻を取得しておきます。
そのためにまず、getInstance()メソッドを使用してCalendarオブジェクトを生成します。

ここで少し違和感を感じられたかもしれません。
オブジェクトの生成を、new演算子ではなくメソッドで行っています。

これは、getInstance()メソッドの戻り値が"static Calendar"と、static演算子がついているから可能であり、通常他のクラスではこのようなことはできません。

Calendarクラスは日付や時刻を管理するクラスであり、new演算子を使ってインスタンスをいくつも作成できるようなしくみは必要ないため、特殊な形となっています。

Calendarオブジェクトを生成したら、getTimeInMillis()メソッドにより現在時刻をlong型で取得します。


    public void gameEnd(){
long sumTime;
cal = Calendar.getInstance();
endTime = cal.getTimeInMillis();
gameConfig = GAME_CONFIG_DEMO;

sumTime = (long)(endTime - startTime) / 1000;
demoStr = "TotalTime : " + sumTime + "sec";
}
gameEnd()メソッドはゲーム終了時に呼ばれるメソッドです。

ゲーム終了時にゲーム終了時刻を取得します。

このときもう一度、getInstance()メソッドを呼び出す必要があります。

これはCalendarオブジェクトには、getInstance()メソッドを呼び出した時点での、日付・時刻の情報が格納されるため、もう一度取得し直す必要があるためです。

ゲーム終了までにかかった時間は「ゲーム終了時刻」から「ゲーム開始時間」を減算してやることでわかります。
またこのとき、getTimeInMillis()メソッドはミリ秒単位表される現在時刻を返しているので、1000で除算してやる必要があります。

サンプルコードは下記からダウンロードできます。
タイピングゲームサンプルコード

これで、タイピングにかかった時間を計測することができました。


タイピングゲームのサンプルはここまでにしますが、ここからさらにゲーム性を高めるための工夫を考えてみてください。

トラックバック:0Edit
Copyright © Javaから楽しく学ぶ!ゲームプログラミング専門学校 All Rights Reserved.
当サイトのテキストや画像等すべての転載転用・商用販売を固く禁じます