ZBLOG

能写一个弹窗游戏吗?不要在控制台输入

好的,以下是一个简单的弹窗游戏示例,使用 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 实例,并显示出来。玩家需要在输入框中输入一个整数,如果猜对了,则分数加一;否则分数减一。每次猜完后,程序会随机生成一个新的答案。

希望这个示例能够帮助您完成您自己的弹窗游戏。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=5319

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?