1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Brauche Hilfe bei Java Programm

  • BeliebigerName
  • 17. November 2013 um 17:43
  • Unerledigt
  • BeliebigerName
    1
    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
    7
    Bradon
    Mitglied
    Reaktionen
    13
    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!");
    }

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

  • emptyvi
    14
    emptyvi
    Logo 2012, Platz 2.
    Reaktionen
    102
    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?


    ¤¸¸.•´¯`•¸¸.•..>> Join the herd, join "My Little Pony @ TU-Wien" <<..•.¸¸•´¯`•.¸¸¤
    ¤¸¸.•´¯`•¸¸.•..>> (100% Twilight Sparkle approved) <<..•.¸¸•´¯`•.¸¸¤


    PP-Tutor WS2011 - WS2014
    EVC-Tutor SS2015


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

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

  • Bradon
    7
    Bradon
    Mitglied
    Reaktionen
    13
    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

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

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 2 Besucher

Rechtliches

Impressum

Datenschutzerklärung