# Quiz-Programm



## P333T (15. Nov 2012)

Hey Leute 

Kann mir jemand mal ein Quellcode oder einfach gleich das ganze Programm geben...
Ich brauche eine Quizprogramm, einfach mit ein paar Buttons und einem exit Button. Zudem möchte ich gerne die Antworten und Fragen in ein Textdokument schreiben, damit es daraus gelesen wird.

Kann mir jemand helfen? :rtfm:


----------



## Tomate_Salat (15. Nov 2012)

P333T hat gesagt.:


> Kann mir jemand mal ein Quellcode oder einfach gleich das ganze Programm geben...



Ja, aber was hätten wir/du davon?

Wenn du zu Faul bist, dass zu schreiben:
Jobbörse - java-forum.org

Ansonsten: hinsetzen, selber machen und bei Problemen kannst du uns gerne Fragen. Das a) kostet dich dann nix und b) lernst du noch was bei.


----------



## P333T (15. Nov 2012)

gut dann eben eine Frage, ich binn jetzt soweit das ich nur noch einen Button hinzufügen möchte der das Programm schließt, wie bekomme ich das hin?


----------



## P333T (15. Nov 2012)

Da möchte ich gerne noch einen Exit Button haben, also oben rechts...



Spoiler





```
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;


public class frmMain extends JFrame{

	/**
	 * @param args
	 */
	//Antwort Schaltflächen
	JButton cmdAnsw1, cmdAnsw2, cmdAnsw3, cmdAnsw4;
	//Textfelder
	JLabel lblInfo, lblFrage;
	//dynamisches Array - schon gestellte Fragen werden abgefragt
	ArrayList <Integer> asked;
	//count - Nr. der aktuell gestellten Frage
	//countRight - Anzahl der richtigen Fragen
	//questMax - max. gestellte Fragen
	int count, countRight, questMax;
	//Klasse mit Fragen/Antworten
	clsQuestions quest;
	int currentQuestion;
	
	
	public frmMain(){
		//Bildschirmgröße abrufen
		Dimension d = getToolkit().getDefaultToolkit().getScreenSize();
		//Größe und Position des Fensters festlegen
		this.setSize(d);
		this.setLocation(0,0);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setResizable(false);
		this.setTitle("Quiz");
		
		this.setUndecorated(true);
		
		
		//Init
		asked = new ArrayList<Integer>();
		quest = new clsQuestions();
		
		count = 0;
		countRight = 0;
		questMax = 5; 
		
		lblInfo = new JLabel();
		lblFrage = new JLabel();
		
		cmdAnsw1  = new JButton();
		cmdAnsw2  = new JButton();
		cmdAnsw3  = new JButton();
		cmdAnsw4  = new JButton();
		
		//Namen der Buttons setzen
		cmdAnsw1.setName("0");
		cmdAnsw2.setName("1");
		cmdAnsw3.setName("2");
		cmdAnsw4.setName("3");
		
		//Aktion beim Klicken hinzufügen
		cmdAnsw1.addActionListener(new ButtonListener(this));
		cmdAnsw2.addActionListener(new ButtonListener(this));
		cmdAnsw3.addActionListener(new ButtonListener(this));
		cmdAnsw4.addActionListener(new ButtonListener(this));
		
		//Buttons auf dem Formular hinzufügen
		getContentPane().setLayout(null); // freies Layout
		getContentPane().add(cmdAnsw1);
		getContentPane().add(cmdAnsw2);
		getContentPane().add(cmdAnsw3);
		getContentPane().add(cmdAnsw4);
		getContentPane().add(lblInfo);
		getContentPane().add(lblFrage);
	
		//Größe und Position der Buttons festlegen
		cmdAnsw1.setBounds(0, d.height - 200 , d.width / 2 - 5 , 50);
		cmdAnsw2.setBounds(d.width / 2 + 5, d.height - 200 , d.width / 2 - 5, 50);
		cmdAnsw3.setBounds(0, d.height - 130 , d.width / 2 - 5 , 50);
		cmdAnsw4.setBounds(d.width / 2 + 5, d.height - 130 , d.width / 2 - 5, 50);
		
		lblInfo.setBounds(10,10,d.width - 10, 32);
		lblInfo.setFont(new Font("Arial", 24,28));
		lblInfo.setText("lblInfo");
		
		lblFrage.setBounds(10,80,d.width - 10, 72);
		lblFrage.setFont(new Font("Arial", 24,34));
		lblFrage.setText("lblFrage");
		//Frage aufrufen
		NextQuestion();
	}
	
	public void Click(String Antwort){
		/*Das Array Lsg. enthält die zugehörige richtige Antwort zur Frage
		das zuletzt hinzugefügte Object in der ArrayList asked enthält den Index
		der aktuell gestellten Frage. "asked.size()" ruft die Anzahl der vorhanden
		Objekte in der ArrayList ab. "-1" da bei 0 angefangen wird. "Integer.parseInt"
		wandelt einen String in einen int Wert um, um ihn vergleichen zu können.*/
		if (clsQuestions.lsg[asked.get(asked.size()-1)] == Integer.parseInt(Antwort)) {
			countRight++;
			//ab hier
			JOptionPane.showMessageDialog(null, "Richtig");
		}else{
			JOptionPane.showMessageDialog(null, "Falsch, das wäre richtig gewesen: "
					+ clsQuestions.antw[currentQuestion][clsQuestions.lsg[asked.get(asked.size()-1)]]);
			//bis hier
		}
		
		//Sind die Fragen gestellt, erscheint eine Auswertung und es wird von vorne begonnen
		if(count == questMax){
			JOptionPane.showMessageDialog(null, "Sie haben " + countRight + " von " + questMax + " Fragen richtig beantwortet." , "Fertig", JOptionPane.PLAIN_MESSAGE);
			asked.clear();
			count = 0;
			countRight = 0;
		}
		NextQuestion();
	}
	
	public void NextQuestion(){
		int i;
		//Zufallszahlengenerator wird initialisiert
		Random r = new Random();
		//Die Schleife wird solange aufgerufen, bis eine Frage gefunden wird, die noch nicht gestellt wurde.
		//ACHTUNG: Gefahr einer Endlosschleife (wenn weniger Fragen vorhanden sind als questMax)
		do{
			i = r.nextInt(clsQuestions.fragen.length);
			//überprüft ob die Frage schon gestellt wurde
		}while(asked.contains(i) == true);
		SetQuestion(i);
	}
	
	public void SetQuestion(int i){
		//Setzt die Texte der Frage auf der Oberfläche
		cmdAnsw1.setText(clsQuestions.antw[i][0]);
		cmdAnsw2.setText(clsQuestions.antw[i][1]);
		cmdAnsw3.setText(clsQuestions.antw[i][2]);
		cmdAnsw4.setText(clsQuestions.antw[i][3]);
		lblFrage.setText(clsQuestions.fragen[i]);
		count++;
		lblInfo.setText("Frage " + count + " von " + questMax + "\n"+ ". Klicken Sie auf das Verb, welches in die Lücke muss. (Mixed Tenses)");
		//fügt die Frage als gestellt hinzu
		asked.add(i);
		currentQuestion = i;
	}

	
	public class ButtonListener implements ActionListener{
		frmMain frm;
		
		public ButtonListener(frmMain f){
			frm = f;
		}
		
		public void actionPerformed(ActionEvent ae) {
			//tempButton verweist auf den geklickten Button
			JButton tempButton = (JButton) ae.getSource();
			frm.Click(tempButton.getName());
			return;
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		frmMain frm = new frmMain();
		frm.setVisible(true);
	}

}
```


----------



## Tomate_Salat (15. Nov 2012)

Das Prinzip kennst du doch:
> Button erstellen
> Button positionieren
> auf Button einen Listener registrieren welcher dann System.exit aufruft.

Dann solltest du dir noch die Konventionen in Java anschauen:
Methoden, Felder, Variablen --> lowerCamelCase
Klassen --> UpperCamelCase


----------

