# Java QUIZ-Spiel Fragen und Antworten generieren?!



## KMS (8. Feb 2014)

Hallo Leute!

Aufgrund des Info-Unterrichtes muss ich ein "Spiel" programmieren.
Meine Idee hierbei ist es, ein kleines Quiz zu erstellen.
Ich habe schon etwas Erfahrung mit Java gemacht, aber derzeit bin
ich vollkommen aufgeschmissen.

In diesem Quiz wollte ich jetzt natürlich immer meine Fragen neu laden und die
dazugehörigen Antworten.
Alle Fragen habe ich untereinander als "*Fragen.txt*" gespeichert.
Die Antwort zur Frage in der ersten Zeile, steht zum Beispiel in der
ersten Zeile der Datei "*Antworten.txt*" nach diesem Muster: Antwort1$Antwort2$Antwort3$Antwort4$

Mein Problem ist es, dass ich nicht hinbekomme, die Antwortmöglichkeiten
auszulesen, also nacheinander, und dass das Programm auch die Antworten
auf die 4 Buttons jedes Mal unterschiedlich anordnet.
Dazu sollen die Fragen auch am besten ständig zufällig ausgewählt werden.

Wenn ich das Spiel nämlich wiederholt spiele, kenne ich ja mittlerweile die Fragen
und weiß, wo die Antworten stehen.
Wäre es also möglich, die Fragen jedes Mal zufällig zu wählen und die dazugehörigen
Antworten jedes Mal auf die Buttons anders zu verteilen?

Könnte man auch programmieren, dass wenn eine Frage schon einmal gewählt wurde,
sie dann "disabled" ist und nicht mehr gewählt wird?

*Vielen Dank schon mal im Voraus!*


----------



## JavaMeister (8. Feb 2014)

Ja, alle deine Anforderungen können in java erfüllt werden.


----------



## KMS (8. Feb 2014)

Vielen Dank für die konstruktive Antwort.


----------



## Barista (10. Feb 2014)

> Alle Fragen habe ich untereinander als "Fragen.txt" gespeichert.
> Die Antwort zur Frage in der ersten Zeile, steht zum Beispiel in der
> ersten Zeile der Datei "Antworten.txt" nach diesem Muster: Antwort1$Antwort2$Antwort3$Antwort4$



Zeilenweise einlesen mit 


```
List<String> lineStrList = new ArrayList<>();

        try ( BufferedReader reader =
                new BufferedReader(
                        new FileReader( "C:/eingabe.txt" ) ) )
        {
            String lineStr;
            while ( ( lineStr = reader.readLine() ) != null )
            {
                lineStrList.add( lineStr );
            }
        }
```

Antwort aufteilen mit String.split



> Wäre es also möglich, die Fragen jedes Mal zufällig zu wählen und die dazugehörigen
> Antworten jedes Mal auf die Buttons anders zu verteilen?



Collections.shuffle



> Könnte man auch programmieren, dass wenn eine Frage schon einmal gewählt wurde,
> sie dann "disabled" ist und nicht mehr gewählt wird?



Benutzt Du Swing? Dann JButton.disable oder enable( false )


----------



## Machareder (11. Feb 2014)

> Vielen Dank für die konstruktive Antwort


was erwartest du hier? Das es dir jemand komplett schreibt?


----------



## Beatsleigher (16. Feb 2014)

Also, wenn du alle Fragen in einer Datei speichern (bzw. aus einer Datei laden willst), dann würde ich die Datei ungefähr so aufbauen:


```
### Fragen und Antworten: Quiz ###
Frage::Wie viel Bier kann ein Kamel trinken?;200 Liter
Frage::Wie viele Knöpfe hat ein Xbox-Controller?;16
```

Diese würde ich dann ungefähr so auslesen:

```
import java.io.*;

public class Class {
    BufferedReader reader = null;
    String[] questions;
    String[] answers;

    public Class() {
        try {
            reader = new BufferedReader(new FileReader("Fragen.txt"));
            String line = "";
            String fragen;
            String antworten;
            while ((line = reader.readLine()) != null) {
                if (line.startsWith("Frage::")) {
                    String[] temp;
                    String[] temp1;
                    temp = line.split("Frage::");
                    temp1 = temp[1].split(";");
                    fragen += temp1[0] + "\n";
                    antworten += temp1[1] + "\n";
                }
            }
            questions = fragen.split("\n");
            answers = antworten.split("\n");
        } catch (IOException ex) {

        }
    }
}

/**
 * Ja, ich weiß, dass es noch einfacher geht, aber soll er man alleine herausfinden, wie das geht.
 */
```

Und dann kannst du die Fragen und Antworten in den Arrays mittels Random zufällig auswählen und dann anzeigen.


----------

