2016-04-16 24 views
-3

我正在JavaFX上制作一个简单的游戏。 The picture of my program is here在面向对象编程中将Int值更改为字符串

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

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

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

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); 
    } 
} 

回答

1

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

1

像这样简单:

int healthLevel = mainCharacter.getHealthLevel(); 
String.valueOf(healthLevel); 
//or 
Integer.toString(healthLevel);