2017-07-15 2 views
0

Salut J'essaie de créer un jeu basé sur le texte avec les nouvelles fonctionnalités de javafx. Je rencontre des difficultés pour assigner une valeur à mes boutons, puis j'utilise cette valeur dans une instruction switch. Quelqu'un a des suggestions? Ou si quelqu'un connaît des didacticiels sur les jeux de texte avec javafx faites le moi savoir.Javafx Texte basé sur le jeu, déclaration de changement de bouton

Je pense que le problème peut être que lorsque la méthode qui contient l'instruction switch est appelée, l'instruction switch est effectuée sur les valeurs qui sont déjà attribuées et l'appel est terminé. Ce n'est pas ce que j'essaie d'accomplir. Voici mon code dans la classe du contrôleur:

package sample.view; 

import java.io.*; 

import javafx.fxml.FXML; 
import javafx.scene.control.TextArea; 
import javafx.scene.image.ImageView; 
import sample.Main; 
import javafx.scene.control.Button; 
import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

import static java.lang.System.out; 
import javafx.scene.control.*; 
import sample.chapter1; 

public class gameScreenController { 
    public Button button0; 
    public Button button1; 
    public Button button2; 
    public Button button3; 
    public TextArea textArea; 
    public ImageView image1; 
    public ImageView image2; 
    public String question = "0"; 
    public String choice = ""; 
    public Label label; 

    /* 
    this method is used when the user clicks button1 
    */ 


    public gameScreenController() { 
    } 

    @FXML 
    public void button0() { 
     textArea.setText(setTextArea("ch1Start")); 

     button1.setText("what a beautiful poem"); 
     button2.setText("She know nothing. She got nothing"); 
     button3.setText("..."); 
     button0.setVisible(false); 
     chapter1(); 
    } 

    @FXML 
    public void button1() { 
     choice = "c1"; 
     out.println("c1"); 



    } 

    /* 
    this method is used when the user clicks button2 
    */ 
    @FXML 
    public void button2() { 
     choice = "c2"; 
     out.println("c2"); 
    } 

    /* 
    this method is used when the user clicks button3 
    */ 
    @FXML 
    public void button3() { 
     choice = "c3"; 
     out.println("c3"); 

    } 

    @FXML 
    public String setTextArea(String fileName) { 

     String line; 
     String content = null; 

     try { 
      FileReader fileReader = new FileReader(fileName); 
      BufferedReader buffer = new BufferedReader(fileReader); 

      while ((line = buffer.readLine()) != null) { 
       out.println(line); 
       content += line + '\n'; 
      } 
      buffer.close(); 
     } catch (FileNotFoundException ex) { 

      out.println("Unable to open file " + fileName + "."); 

     } catch (IOException ex) { 
      out.println("error reading file " + fileName + "."); 
     } 
     return content; 
    } 



    public void chapter1() { 

     switch (question) { 
      case "0": 
       switch (choice) { 
        case "c1": 
         textArea.setText(setTextArea("hi")); 
         out.println("it worked"); 
         question = "1"; 
         break; 
        case "c2": 
         out.println("it worked"); 
         break; 
        case "c3": 
         out.println("it worked"); 
         break; 


       } break; 
      case "1": 
       break; 
    } }} 

C'est le code que je suis en train de répliquer dans JavaFX:

public class ChoiceHandler implements ActionListener 
{ 
    public void actionPerformed(ActionEvent event) 
    { 
     // takes in button click -> youtChoice variable 
     String yourChoice = event.getActionCommand(); 

     switch (position) 
     { 
      case "townGate": 
       switch(yourChoice) 
       { 
        case "c1": flirt(); break; 
        case "c2": talkGuard(); break; 
        case "c3": leave(); break; 
        case "c4": break; 
       } 
      case "talkguard": 
       switch (yourChoice) 
       { 
        case "c1": townGate(); break; 

       } 
      case "flirt": 
       switch (yourChoice) 
       { 
        case "c1": townGate(); break; 

       } 
      case "outside": 
       switch (yourChoice) 
       { 
        case "c1": townGate(); break; 
        case "c2": break; 
        case "c3": break; 
        case "c4": break; 
       } 


     } 
     } 
    } 

Répondre

0

Je ne sais pas ce que vous pensez exacly quand vous dites « attribution une valeur à un bouton '.

Il y a plusieurs options:

  • que vous avez déjà écrit dans le code, vous pouvez utiliser une chaîne ou entier. Vous modifiez la valeur de cette variable lorsque vous cliquez sur le bouton
  • Vous étendez la classe Button, par ex. :

    public class MyButton extends javafx.scene.control.Button { 
    
    private String value; 
    
    public MyButton() { 
        super(); 
    } 
    
    public MyButton(String text) { 
        super(text); 
    } 
    
    public void setValue(String newValue) { 
        value = newValue; 
    } 
    
    public String getValue() { 
        return value; 
    } 
    } 
    

Vous pouvez en apprendre beaucoup sur JavaFX dans les didacticiels en ligne d'Oracle: Click here

+0

Je ne suis pas essayer de changer la valeur du bouton. J'essaye de changer la variable "choice" et comment cette variable interagit avec mon instruction switch. –