在面向对象的编程中将Int值更改为String

时间:2016-04-16 22:17:56

标签: java javafx

我正在JavaFX上制作一个简单的游戏。 The picture of my program is here

到目前为止,我的代码使用随机数生成器生成随机怪物,每次点击探索按钮时,我的生命值都会减少一个随机数。

我还添加了一个统计信息框。此框将显示我当前的健康状况,饥饿感和保湿水平。

我的问题是,我不确定我应该如何更改统计信息框中的值。每当我的角色被怪物击中时,我都希望改变健康文本。当我这样做时:

dStatBox.setText(mainCharacter.getHealthLevel());

它说我必须将int转换为字符串。我怎么能这样做呢?

我的整个代码如下:

    import java.util.Random;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;

public class Game extends Application {
    public static TextArea dialogue = new TextArea();
    public static TextArea dStatBox = new TextArea();
    Button exploreButton;
    Random r = new Random();
    int ogreDamage = r.nextInt(20) + 1;



    public void start(Stage primaryStage) {
        Character mainCharacter = new Character("Nikki");
        BorderPane pane = new BorderPane();
        HBox top = new HBox();
        VBox gameBox = new VBox();
        VBox explore = new VBox();
        VBox statBox = new VBox();
        exploreButton = new Button("Explore");

        Label stats = new Label("Stats");
        stats.setFont(Font.font(30));
        stats.setFont(Font.font("Helvetica", FontWeight.BOLD, FontPosture.REGULAR, 24));

        statBox.setPadding(new Insets(10,10,10,10));
        statBox.setSpacing(10);
        statBox.setMaxHeight(300);
        statBox.setPrefWidth(300);
        statBox.getChildren().addAll(stats, dStatBox);
        statBox.setAlignment(Pos.TOP_CENTER);
        dStatBox.setEditable(false);

        dStatBox.setText("Health: 100/100\n");

        Label label = new Label("Game Dialogue");
        label.setFont(Font.font(30));
        label.setFont(Font.font("Helvetica", FontWeight.BOLD, FontPosture.REGULAR, 24));

        gameBox.setPadding(new Insets(10,10,10,10));
        gameBox.setSpacing(10);
        dialogue.setMaxHeight(200);
        dialogue.setMaxWidth(470);
        dialogue.setWrapText(true);
        dialogue.setEditable(false);

        gameBox.getChildren().addAll(label, dialogue, exploreButton);
        gameBox.setAlignment(Pos.CENTER);
        top.getChildren().addAll(gameBox, statBox);
        top.setAlignment(Pos.TOP_LEFT);
        pane.setTop(top);

        dialogue.appendText("Welcome to Wild Berries - the Ultimate Survival Game\n");
        dialogue.appendText("How long can you survive for? Only time will tell...\n");

        exploreButton.setOnAction(e -> {
            Random r = new Random();
            int ogreDamage = r.nextInt(20) + 1;
            int randomInt = r.nextInt(3) + 1;
            dialogue.appendText("You begin to explore the wild...\n");

            if(randomInt == 1) {
                dialogue.appendText("A wild Ogre has appeared!\n");
                dialogue.appendText("You have been hurt. -" + ogreDamage + " HP.\n");
                mainCharacter.setHealthLevel(mainCharacter.getHealthLevel() - ogreDamage);

                dialogue.appendText(mainCharacter.getHealthLevel());



                if(mainCharacter.getHealthLevel() <= 0) {
                    dialogue.appendText("You have died. Thank you for playing.");
                }
            }

            if(randomInt == 2) {
                dialogue.appendText("A wild Goblin has appeared!\n");
            }

            if(randomInt == 3) {
                dialogue.appendText("A wild Ghost has appeared!\n");
            }

        });



        Scene scene = new Scene(pane, 800, 450);
        primaryStage.setScene(scene);
        primaryStage.setTitle("Wild Berries GUI");
        primaryStage.show();
    }


    public static void main(String[] args) {
        Application.launch(args);
    }
}

2 个答案:

答案 0 :(得分:1)

我假设mainCharacter.getHealthLevel()正在返回一个int。你应该dStatBox.setText("Health: " + mainCharacter.getHealthLevel());

答案 1 :(得分:1)

这很简单:

int healthLevel = mainCharacter.getHealthLevel();
String.valueOf(healthLevel);
//or
Integer.toString(healthLevel);
相关问题