山傘のプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

JavaFX でゲームプログラミング超入門 その5

パックマンのようなゲーム2

前回に続き、パックマンのようなゲームを作っていきたいと思います。
f:id:yamakasa3:20180325223517p:plain

今回追加した処理は、得点と制限時間です。得点は黄色の丸の場所に移動すると、得点が1増加します。全てのポイントを取得すると、プレイヤを動かすことが出来なくなり、制限時間も止まります。
また、制限時間が0になるまでプレイヤを動かすことができます。

参考動画

www.youtube.com

タイマーに関するコード

10から0まで1秒ごとに数字が減少していきます。

import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import javafx.util.Duration;

public class TimerSample extends Application{
	public static void main(String[] args) {
		launch(args);
	}
	@Override
	public void start(Stage stage) throws Exception{

		stage.setTitle("Time");
		stage.setHeight(100);
		stage.setWidth(300);
		Label label = new Label();
		label.setText("10");
		label.setFont(new Font(20));

		Group g = new Group();
		g.getChildren().add(label);
		Scene scene = new Scene(g);

		Timeline timer = new Timeline(new KeyFrame(Duration.millis(1000), new EventHandler<ActionEvent>(){
            @Override
            public void handle(ActionEvent event) {
                label.setText(String.valueOf(Integer.parseInt(label.getText()) - 1));
            }
        }));
        timer.setCycleCount(10);
        timer.play();
		stage.setScene(scene);
		stage.show();

	}
}

f:id:yamakasa3:20180325225107p:plain