编写一个时钟小游戏涉及创建一个可视化界面,其中时钟会显示当前时间,并且用户需要尝试在规定的时间内点击或按下按钮。让我们使用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创建时钟小游戏。
游戏页面截图