編寫一個時鐘小遊戲涉及建立一個可視化界面,其中時鐘會顯示目前時間,并且使用者需要嘗試在規定的時間内點選或按下按鈕。讓我們使用JavaFX來實作這個時鐘小遊戲。首先,確定你已經正确安裝JavaFX,并在項目中設定好相關的依賴。
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
public class ClockGame extends Application {
private static final int GAME_TIME_SECONDS = 10;
private static final int BUTTON_SIZE = 100;
private static final String BUTTON_TEXT = "Click Me!";
private static final String TIME_FORMAT = "HH:mm:ss";
private static final Font CLOCK_FONT = new Font(40);
private static final Font BUTTON_FONT = new Font(20);
private Text clockText;
private Button clickButton;
private int score;
private void updateClockText() {
SimpleDateFormat sdf = new SimpleDateFormat(TIME_FORMAT);
clockText.setText(sdf.format(new Date()));
}
private void updateTimeAndScore() {
updateClockText();
score = 0;
}
@Override
public void start(Stage primaryStage) {
clockText = new Text();
clockText.setFont(CLOCK_FONT);
clockText.setFill(Color.BLACK);
clickButton = new Button(BUTTON_TEXT);
clickButton.setPrefSize(BUTTON_SIZE, BUTTON_SIZE);
clickButton.setFont(BUTTON_FONT);
clickButton.setOnAction(e -> {
if (score > 0) {
score--;
}
});
StackPane root = new StackPane();
root.getChildren().addAll(clockText, clickButton);
StackPane.setAlignment(clockText, Pos.TOP_CENTER);
StackPane.setAlignment(clickButton, Pos.BOTTOM_CENTER);
Scene scene = new Scene(root, 300, 200);
primaryStage.setTitle("Clock Game");
primaryStage.setScene(scene);
primaryStage.show();
updateTimeAndScore();
new Thread(() -> {
try {
int remainingTime = GAME_TIME_SECONDS;
while (remainingTime >= 0) {
Thread.sleep(1000);
remainingTime--;
updateClockText();
}
score = 0;
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
new Thread(() -> {
try {
Random random = new Random();
while (true) {
Thread.sleep(random.nextInt(3000) + 1000); // Random time interval between 1 and 4 seconds
score++;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
}
public static void main(String[] args) {
launch(args);
}
}
在上述代碼中,我們使用了JavaFX來建立一個簡單的時鐘小遊戲。遊戲界面中心有一個顯示目前時間的文本,并在底部有一個按鈕。遊戲開始後,按鈕會随機在1到4秒之間的時間間隔内變為可點選狀态,玩家需要盡快點選按鈕。遊戲倒計時10秒,玩家的得分将在10秒内點選按鈕的次數,如果玩家在10秒内未點選按鈕,則得分為0。
請注意,由于本示例隻是一個簡單的實作,可能存在一些優化和改進的空間,比如改進随機按鈕出現的時間間隔和美化界面等。希望這個示例能幫助你了解如何使用JavaFX建立時鐘小遊戲。
遊戲頁面截圖