好的,以下是一个简单的弹窗游戏示例,使用 JavaFX 实现:
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class PopupGame extends Application {
private int score = 0; // 记录得分
@Override
public void start(Stage primaryStage) {
Button startButton = new Button("开始游戏");
Label scoreLabel = new Label("得分:0");
Label resultLabel = new Label(); // 显示结果
VBox root = new VBox(10, startButton, scoreLabel, resultLabel);
root.setAlignment(Pos.CENTER);
Scene scene = new Scene(root, 300, 200);
startButton.setOnAction(e -> { // 点击开始按钮事件
PopupPane popupPane = new PopupPane();
popupPane.setOnScoreChange(score -> { // 监听得分变化
this.score += score; // 更新总得分
scoreLabel.setText("得分:" + this.score); // 更新显示的总得分
if (score > 0) { // 猜对了,显示“恭喜你!”
resultLabel.setText("恭喜你!");
} else { // 猜错了,显示“很遗憾”
resultLabel.setText("很遗憾");
}
popupPane.hide(); // 隐藏弹窗
});
popupPane.show(); // 显示弹窗
});
primaryStage.setScene(scene);
primaryStage.setTitle("弹窗游戏");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
class PopupPane extends Stage {
private int answer;
PopupPane() {
this.answer = (int)(Math.random() * 100) + 1; // 随机生成答案
Label promptLabel = new Label("请输入一个1-100之间的整数:");
Label resultLabel = new Label(); // 显示结果
Button submitButton = new Button("提交");
VBox root = new VBox(10, promptLabel, submitButton, resultLabel);
root.setAlignment(Pos.CENTER);
Scene scene = new Scene(root, 300, 200);
setScene(scene);
setTitle("猜数字游戏");
submitButton.setOnAction(e -> { // 点击提交按钮事件
try {
int guess = Integer.parseInt(promptLabel.getText().substring(8)); // 获取输入框中的数字
if (guess == answer) { // 猜对了
resultLabel.setText("恭喜你猜对了!");
onScoreChange(1); // 分数加一
} else { // 猜错了
if (guess > answer) {
resultLabel.setText("你猜的数字太大了!");
} else {
resultLabel.setText("你猜的数字太小了!");
}
onScoreChange(-1); // 分数减一
}
} catch (NumberFormatException ex) { // 输入不是整数
resultLabel.setText("请输入一个有效的整数!");
}
promptLabel.setText("请输入一个1-100之间的整数:"); // 清空输入框
answer = (int)(Math.random() * 100) + 1; // 随机生成新的答案
});
}
void onScoreChange(int score) {} // 定义得分变化监听器,由 PopupGame 类实现
}
在上面的代码中,PopupPane
类继承了 Stage
类,用于显示弹窗。当点击 开始游戏
按钮时,会创建一个新的 PopupPane
实例,并显示出来。玩家需要在输入框中输入一个整数,如果猜对了,则分数加一;否则分数减一。每次猜完后,程序会随机生成一个新的答案。
希望这个示例能够帮助您完成您自己的弹窗游戏。