# Textbasiertes Rollenspiel Kreuzung



## FriendlyDiamond (15. Jan 2018)

Hey Leute. Ich bin in meinem Textspiel nun an einem Baustein angelangt, bei dem man sich zwischen "nach vorne" und "nach rechts" entscheiden muss. Jedoch kann ich nicht beide Richtungen zur Wahl stellen. Es funktioniert immer nur EINE. Jetzt meine Frage an euch: Wie kann ich beide Buttons programmieren damit sie funktionieren.. Hier drunter ist noch der Code vom ganzen Programm und PS: Ich arbeite mit x und y Koordinaten

```
package game;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import java.awt.Font;

public class ClassGame extends JFrame {

    private JPanel contentPane;
    private int y;
    private int x;
   

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ClassGame frame = new ClassGame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public ClassGame() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 837, 701);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
       
        JTextArea tfAusgabe = new JTextArea();
        tfAusgabe.setFont(new Font("Tahoma", Font.PLAIN, 16));
        tfAusgabe.setEditable(false);
        tfAusgabe.setBounds(104, 195, 603, 335);
        contentPane.add(tfAusgabe);
        tfAusgabe.setLineWrap(true);
        tfAusgabe.setWrapStyleWord(true);
       
       
       
        JButton btnVorne = new JButton("nach vorne");
       
        btnVorne.setBounds(353, 36, 109, 25);
        contentPane.add(btnVorne);
       
        JButton btnZurckZumStart = new JButton("Zur\u00FCck zum Start");
       
        btnZurckZumStart.setBounds(333, 563, 177, 25);
        contentPane.add(btnZurckZumStart);
       
        JButton btnRechts = new JButton("nach rechts");
       
        btnRechts.setBounds(473, 83, 119, 25);
        contentPane.add(btnRechts);
       
        JButton btnLinks = new JButton("nach links");
       
        btnLinks.setBounds(241, 83, 97, 25);
        contentPane.add(btnLinks);
       
        JButton btnHinten = new JButton("nach hinten");
       
        btnHinten.setBounds(355, 124, 107, 25);
        contentPane.add(btnHinten);
       
        JButton btnBeenden = new JButton("Beenden");
        btnBeenden.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                System.exit(0);
            }
        });
       
        if( y == 0 && x == 0){
            tfAusgabe.setText("Nach einer langen Nacht wachst du im Stadtpark auf. "
                    + "Deine einzige Erinnerung ist das weiße Pulver auf dem Marmortisch in der Küche. "
                    + "Vermutlich hast du einen Kuchen für deine Schwester gebacken… "
                    + "Während du über die Ereignisse der vergangenen Nacht rätselst, "
                    + "hörst du eine Unterhaltung zwischen zwei Passanten. "
                    + "„Hast du eigentlich von diesem Mord in der Zeitung gelesen?“ "
                    + "„Ja, dieser Polizist tut mir echt leid. Ich wünsche der Familie viel Glück!“ "
                    + "Du gehst zu den Passanten hin und fragst: „Welcher Mord? Und welcher Polizist?“ "
                    + "„Haben sie nicht davon gehört? Paul Jansen, der Oberkommissar im Gebiet Köln-Nord"
                    +  "wurde gestern Nacht brutal niedergeschlagen. Bisher hat man noch keine Spur vom Täter.“"
                    + " Dir wird komisch, nachdem du den Namen deines Bruders hörst. "
                    + "Du machst dir Gedanken, welche Menschen deinem Bruder etwas angetan haben könnten. Dir fallen direkt 4 Menschen ein (Torben(spielt Fußball), Niklas(wohnt in Hulingen), Sarah(arbeitet im Kiosk), Peter(wohnt noch bei seinen Eltern in Aschaffenburg)) Du machst dir zur Aufgabe diese Personen zu finden und "
                    + "den Mörder zu identifizieren. Du kannst nun nach links, rechts, hinten oder nach vorne gehen! Drücke bitte IMMER 2x die Richtung, in die du gehen willst!");
        }
        btnVorne.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
           
                if(x == -1 && y == 0){
                    x--;
                }else if(x == -2 && y == 0){
                    tfAusgabe.setText("Du gehst leise die Gasse hindurch und befindest dich nun an einem Platz der mit Sonnenlicht erhellt wird. Rechts von dir erblickst du eine Allee mit Birken deren Blätter Orange-Braun gefärbt sind. Vor dir aber entdeckst du eine große grauschimmernde Statue, welche eine schwarze Substanz auf ihrem Arm hat.");
                    btnRechts.setVisible(true);
                    x--;
                }else if(x == -3 && y == 0){
                    tfAusgabe.setText("Du näherst dich dieser Substanz erst langsam und tastest sie zuerst vorsichtig. Dir scheint als wäre nichts schlimmes, doch du konntest nicht wissen, dass sie zu den gefährlichsten Substanzen der Welt gehört. Du stirbst auf der Stelle! Gehe zurück zum Start.");
                    btnRechts.setVisible(false);
                    btnVorne.setVisible(false);
                    btnHinten.setVisible(false);
                    btnZurckZumStart.setVisible(true);
                }else if(x == -2 && y == +2){
                    tfAusgabe.setText("Du befindest dich nun am Ende der Allee und somit vor der zuvor gesehenen Kreuzung. Während du dir Gedanken machst welchen Weg du jetzt gehen sollst, kommt plötzlich die WHO und sperrt die gegenüberliegende und die rechte Ausfahrt. Du gehst verwirrt zu ihnen und fragst sie warum sie diese Ausfahrten versperren. Sie antworten dir, dass sich in diesem Gebiet eine extrem gefährliche Substanz befindet und sie das Gebiet Stück für Stück abgrenzen müssen um diese zu finden. Du bist dir nicht sicher, ob sie von der Substanzen sprechen, welche du eben gesehen hast also gehst du von den Personen der WHO weg und schaust dich um. Du entdeckst links einen kleinen Weg, welcher durch den Seelenwald führt");
                    btnVorne.setVisible(false);
                    btnLinks.setVisible(true);
                }else if(x == -3 && y == +2){
                    tfAusgabe.setText("Du befindest dich nun an auf einer Kreuzung mitten im Wald. An jedem Weg steht jeweils ein Schild, welches dir den Pfad weisen soll.");
                    btnLinks.setVisible(true);
                    btnRechts.setVisible(true);
                }
               
               
               
            }
        });
       
        btnLinks.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
           
            if( x == 0 && y == 0) {
                x--;
               
            }else if (x == -1 && y == 0){
                    btnRechts.setVisible(false);
                    btnLinks.setVisible(false);
                    tfAusgabe.setText("Du befindest dich in einer schmalen dunklen Gasse, du kannst nur weiter geradeaus gehen oder zurück zum Park.");       
            }else if (x == -2 && y == +2){
                tfAusgabe.setText("Du bekommst langsam Angst da du dir, während des Gehens Gedanken machst, woher dieser Namen des Waldes herkommt. Du gehst immer tiefer und tiefer in den Wald hinein und versuchst dich durch Summen von Liedern abzulenken.");
                btnLinks.setVisible(false);
                btnVorne.setVisible(true);
                x--;
            }
           
               
            }
        });
       
        btnRechts.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
               
                if( x == -2 && y == 0) {
                    y++;
                   
                }else if (x == -2 && y == +1){
                        btnRechts.setVisible(false);
                        tfAusgabe.setText("Du gehst tiefen entspannt durch die Allee plötzlich bleibst du stehen und bewunderst die Natur, wie sie sich auf den kommenden Winter vorbereitet.");
                        y++;
                       
                       
                }else if(x == -3 && y == 2){
                    tfAusgabe.setText("Du befindest dich nun am Ende der Allee und somit vor der zuvor gesehenen Kreuzung. Während du dir Gedanken machst welchen Weg du jetzt gehen sollst, kommt plötzlich die WHO und sperrt die gegenüberliegende und die rechte Ausfahrt. Du gehst verwirrt zu ihnen und fragst sie warum sie diese Ausfahrten versperren. Sie antworten dir, dass sich in diesem Gebiet eine extrem gefährliche Substanz befindet und sie das Gebiet Stück für Stück abgrenzen müssen um diese zu finden. Du bist dir nicht sicher, ob sie von der Substanzen sprechen, welche du eben gesehen hast also gehst du von den Personen der WHO weg und schaust dich um. Du entdeckst links einen kleinen Weg, welcher durch den Seelenwald führt.");
                    btnVorne.setVisible(false);
                    btnLinks.setVisible(true);
                }
            }
        });
       
        btnZurckZumStart.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                y = 0;
                x = 0;
                btnRechts.setVisible(true);
                btnLinks.setVisible(true);
                btnVorne.setVisible(true);
                btnHinten.setVisible(true);
                tfAusgabe.setText("Nach einer langen Nacht wachst du im Stadtpark auf. "
                    + "Deine einzige Erinnerung ist das weiße Pulver auf dem Marmortisch in der Küche. "
                    + "Vermutlich hast du einen Kuchen für deine Schwester gebacken… "
                    + "Während du über die Ereignisse der vergangenen Nacht rätselst, "
                    + "hörst du eine Unterhaltung zwischen zwei Passanten. "
                    + "„Hast du eigentlich von diesem Mord in der Zeitung gelesen?“ "
                    + "„Ja, dieser Polizist tut mir echt leid. Ich wünsche der Familie viel Glück!“ "
                    + "Du gehst zu den Passanten hin und fragst: „Welcher Mord? Und welcher Polizist?“ "
                    + "„Haben sie nicht davon gehört? Paul Jansen, der Oberkommissar im Gebiet Köln-Nord"
                    +  "wurde gestern Nacht brutal niedergeschlagen. Bisher hat man noch keine Spur vom Täter.“"
                    + " Dir wird komisch, nachdem du den Namen deines Bruders hörst. "
                    + "Du machst dir Gedanken, welche Menschen deinem Bruder etwas angetan haben könnten. Dir fallen direkt 4 Menschen ein (Torben(spielt Fußball), Niklas(wohnt in Hulingen), Sarah(arbeitet im Kiosk), Peter(wohnt noch bei seinen Eltern in Aschaffenburg)) Du machst dir zur Aufgabe diese Personen zu finden und "
                    + "den Mörder zu identifizieren. Du kannst nun nach links, rechts, hinten oder nach vorne gehen! Drücke bitte IMMER 2x die Richtung, in die du gehen willst!");
               
            }
        });

       
        btnHinten.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                y--;   
            }   
        });
       
       
       
       
       
       
        btnBeenden.setBounds(710, 616, 97, 25);
        contentPane.add(btnBeenden);
       
       
       
       
   
        btnZurckZumStart.setVisible(false);
       
       
    }
}
```


----------



## Danloc (15. Jan 2018)

Hallo FriendlyDIamond,

Ich verstehe deine Frage nicht wirklich. 
Wenn ich mutmaßen würde, willst du erreichen, dass man mehrere Richtungen nacheinander auswählen kann?
Also, man läuft links entlang, dann rechts und wieder links. Erst dann kommt erneut eine Textausgabe deiner Geschichte?
Falls du es so meinst, könnte man das auf unterschiedliche Weise lösen. Du könntest z.B. Beim drücken eines Buttons einen Wert in einer Variable speichern und die darauf zur Auswahl stehenden Buttons anzeigen. Das wiederholst du solange, bis du alle Richtungsangaben hast, die du zur Auswahl stellen wolltest.

Es wäre schön, wenn du deine Frage etwas präziser stellen könntest.



> bei dem man sich zwischen "nach vorne" und "nach rechts" entscheiden muss.Jedoch kann ich nicht beide Richtungen zur Wahl stellen. Es funktioniert immer nur EINE.


Ist das jetzt ein Fakt, wie dein Programm arbeiten soll, oder willst du von diesem Zustand weg kommen? 

Deine Frage lässt mich nebenbei darüber nachdenken, ob ich schon einmal in zwei Richtungen gleichzeitig gelaufen bin. 

Wie gesagt, beschreibe einmal etwas genauer, wie du dir die Bedienung am Ende vorstellst.

Gruß Danloc


----------



## FriendlyDiamond (16. Jan 2018)

Hm.. Also ich habe eine Kreuzung, an der ich mich für Rechts oder Geradeausgehen entscheiden muss. Mein Problem ist aber: Ich kann momentan nur einen Weg auswählen, weshalb auch immer. Wenn ich in meinem Programm die Variable ändere, also statt dem x-Wert den y-Wert schreibe, kann ich nur in die andere Richtung.. Das Problem ist, dass beide Richtungen funktionieren sollen und nicht nur eine


----------



## FriendlyDiamond (16. Jan 2018)

> Wenn ich mutmaßen würde, willst du erreichen, dass man mehrere Richtungen nacheinander auswählen kann?


Eher, dass man mehrere Richtungen gleichzeitig auswählen kann  hoffe das hilft dir irgendwie weiter :c


----------

