Brauche Hilfe bei Java Programm

  • Ich versuche ein Text Adventure zu programmieren (hoffentlich kennen das einige). Aber ich komme nicht weiter. Ich versuche, so zu programmieren, dass wenn ich "Öffne Schrank" zum ersten Mal eingebe, die jTextArea1 "Der Schrank wurde geöffnet. Da liegt ja eine Taschenlampe drin!" ausgibt und zum beim zweiten Mal
    "Der Schrank wurde bereits geöffnet!" ausgibt. Aber wenn ich beim Programm zum zweiten Mal "Öffne Schrank" eingebe, verändert sich gar nichts und die jTextArea1 zeigt nicht den Text an, den ich will. Kann mir jemand helfen?

    public class NewJPanel extends JPanel {
    static private JButton jButton1;
    static private JTextArea jTextArea1;
    static private JTextField jTextField1;
    static private JButton jButton2;
    static int level = 0;
    static boolean SchlüsselIstErreichbar = false;
    static boolean TaschenlampeIstErreichbar = false;
    static boolean KommodeIstOffen = false;
    static boolean SchrankIstOffen = false;
    static boolean asdf = false;


    public static void main(String[] args) {
    JFrame frame = new JFrame("Lost in Rooms");
    AnchorLayout frameLayout = new AnchorLayout();
    frame.getContentPane().setLayout(frameLayout);


    {
    jTextArea1 = new JTextArea();
    frame.getContentPane().add(jTextArea1, new AnchorConstraint(47, 977, 78, 14, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL));
    jTextArea1.setPreferredSize(new java.awt.Dimension(624, 23));
    jTextArea1.setEditable(false);
    jTextArea1.setVisible(false);
    jTextArea1.setText("Du befindest dich in einem Raum. Das einzige, was du erkennen kannst, sind eine Kommode, ein Schrank und ein Bett. Du hast drei Optionen: Öffne Schrank, Öffne Kommode oder Öffne Tür!");

    }
    {
    jTextField1 = new JTextField();
    jTextField1.setVisible(false);
    frame.getContentPane().add(jTextField1, new AnchorConstraint(891, 688, 979, 332, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL));
    jTextField1.setPreferredSize(new java.awt.Dimension(137, 23));
    jTextField1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
    jTextField1ActionPerformed(evt);
    }
    });


    }
    {

    jButton2 = new JButton();
    frame.getContentPane().add(jButton2, new AnchorConstraint(513, 688, 673, 332, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL));
    jButton2.setText("Spiel beenden");
    jButton2.setPreferredSize(new java.awt.Dimension(137, 42));
    jButton2.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
    jButton2ActionPerformed(evt);
    }
    });
    }
    frame.getContentPane().add(new NewJPanel(), new AnchorConstraint(1, 1, 1, 1, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL));
    {
    jButton1 = new JButton();
    frame.getContentPane().add(jButton1, new AnchorConstraint(215, 688, 395, 332, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL));
    jButton1.setText("Spiel starten");
    jButton1.setPreferredSize(new java.awt.Dimension(137, 47));
    jButton1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
    jButton1ActionPerformed(evt);
    }
    });
    }
    frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    frame.pack();
    frame.setSize(Toolkit.getDefaultToolkit().getScreenSize());
    frame.setVisible(true);


    }


    public NewJPanel() {
    super();
    initGUI();

    }


    private void initGUI() {
    try {
    setPreferredSize(new Dimension(Toolkit.getDefaultToolkit().getScreenSize()));
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    private static void jButton1ActionPerformed(ActionEvent evt) {
    level++;
    if (level == 1) {
    jButton1.setVisible(false);
    jButton2.setVisible(false);
    jTextField1.setVisible(true);
    jTextArea1.setVisible(true);
    }


    }

    private static void jButton2ActionPerformed(ActionEvent evt) {
    System.exit(0);
    }

    private static void jTextField1ActionPerformed(ActionEvent evt) {
    String eingabe = jTextField1.getText();
    if (eingabe.equalsIgnoreCase("Öffne Schrank")) {
    asdf = true;
    }
    if (asdf == true && SchrankIstOffen == false) {
    SchrankIstOffen = true;
    jTextArea1.setText("Der Schrank wurde geöffnet. Da liegt ja ein Schlüssel drin!");
    }


    if (asdf != true && SchrankIstOffen != true) {
    jTextArea1.setText("Der Schrank wurde bereits geöffnet!");

    }

    }


    }


  • if (asdf != true && SchrankIstOffen != true) {
    jTextArea1.setText("Der Schrank wurde bereits geöffnet!");

    }

    Du zeigst das nur an, wenn SchrankIstOffen nicht true (also false) ist.

    Btw kann man das, da es sich um boolean-Werte handelt, auch kuerzer schreiben:

    PHP
    if (asdf && SchrankIstOffen) {
        jTextArea1.setText("Der Schrank wurde bereits geöffnet!");
    }

    Ex-PP-Tutor und genereller [strike]Besser[/strike]Schlechterwisser

  • Du zeigst das nur an, wenn SchrankIstOffen nicht true (also false) ist.

    Btw kann man das, da es sich um boolean-Werte handelt, auch kuerzer schreiben:

    PHP
    if (asdf && SchrankIstOffen) {
        jTextArea1.setText("Der Schrank wurde bereits geöffnet!");
    }

    Wird die Variable asdf eigentlich auch irgendwann wieder false?

  • Wird die Variable asdf eigentlich auch irgendwann wieder false?

    Es handelt sich hierbei um das Redundancy Pattern. SchrankIstOffen und asdf haben immer die gleiche Belegung, falls der GC mal zu gierig ist und eins davon frisst.. :X

    Ex-PP-Tutor und genereller [strike]Besser[/strike]Schlechterwisser

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!