1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Brauche Hilfe bei Java Programm

  • BeliebigerName
  • 17. November 2013 um 17:43
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • BeliebigerName
    Gast
    • 17. November 2013 um 17:43
    • #1

    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!");

    }

    }


    }

  • Bradon
    Punkte
    518
    Beiträge
    100
    • 17. November 2013 um 17:53
    • #2
    Zitat von BeliebigerName


    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!");
    }
  • emptyvi
    Punkte
    2.037
    Beiträge
    374
    • 17. November 2013 um 18:06
    • #3
    Zitat von Bradon

    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?

  • BeliebigerName
    Gast
    • 18. November 2013 um 16:17
    • #4

    Ja. Wird der Text "Öffne Schrank" nicht eingegeben, dann ist asdf false.

  • Bradon
    Punkte
    518
    Beiträge
    100
    • 18. November 2013 um 20:14
    • #5
    Zitat von emptyvi

    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

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum