import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.io.File; import java.io.IOException; import java.util.List; import java.io.*; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import org.jdom.output.XMLOutputter; /** * * Quizspiel zur Wiederholung von Unterrichtsinhalten * * @version 1.1 from 23.02.2017 * @author Thomas Schaller */ public class Quizspiel extends JFrame { // Anfang Attribute private ImageLabel jLabel1; private ImageIcon jLabel1Icon = new ImageIcon("images/Titelleiste_Netzwerk.png"); private JPanel jPanel1 = new JPanel(null, true); private JLabel jLabel2 = new JLabel(); private JPanel jPanel2 = new JPanel(null, true); private JPanel jPanel3 = new JPanel(null, true); private JLabel jLStatus = new JLabel(); private JPanel jPanel4 = new JPanel(null, true); private JButton jBEnde = new JButton(); private JPanel jPSpieler1 = new JPanel(null, true); private JLabel jLName1 = new JLabel(); private JLabel jLPunkte1 = new JLabel(); private JPanel jPSpieler2 = new JPanel(null, true); private JLabel jLName2 = new JLabel(); private JLabel jLPunkte2 = new JLabel(); private JPanel jPSpieler3 = new JPanel(null, true); private JLabel jLName3 = new JLabel(); private JLabel jLPunkte3 = new JLabel(); private JPanel jPSpieler4 = new JPanel(null, true); private JLabel jLName4 = new JLabel(); private JLabel jLPunkte4 = new JLabel(); private JLabel jLabel4 = new JLabel(); private JButton[][] jBTopics; private int akt_sp = 0; private int sp_anz = 4; private int[] punkte = new int[4]; private Document doc = null; // Ende Attribute public Quizspiel (String title) { super (title); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); int frameWidth = 1026; int frameHeight = 580; setSize(frameWidth, frameHeight); Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); int x = (d.width - getSize().width) / 2; int y = (d.height - getSize().height) / 2; setLocation(x, y); Container cp = getContentPane(); cp.setLayout(null); // Anfang Komponenten jLabel1 = new ImageLabel(jLabel1Icon, "Quiz"); jLabel1.setBounds(2, 2, 1019, 65); jLabel1.setText("Quiz"); jLabel1.setImageIcon(jLabel1Icon); jLabel1.setFont(new Font("Dialog", Font.BOLD, 30)); jLabel1.setForeground(Color.white); cp.add(jLabel1); jLabel4.setBounds(310, 553, 400, 20); jLabel4.setText("(cc) Schaller (ZPG Informatik) - V1.1 (2017)"); jLabel4.setHorizontalAlignment(SwingConstants.CENTER); jLabel4.setFont(new Font("Dialog", Font.PLAIN, 12)); cp.add(jLabel4); setUndecorated(true); jLStatus.setBounds(8, 488, 1011, 57); jLStatus.setText(" Wähle bitte eine Frage..."); jLStatus.setBackground(Color.GRAY); jLStatus.setOpaque(true); jLStatus.setFont(new Font("Dialog", Font.BOLD, 24)); jLStatus.setForeground(Color.WHITE); cp.add(jLStatus); jPanel4.setBounds(0, 0, 1026, 553); jPanel4.setOpaque(false); jPanel4.setBorder(new javax.swing.border.LineBorder(Color.BLACK, 2)); cp.add(jPanel4); jPSpieler1.setBounds(832, 72, 185, 89); jPSpieler1.setOpaque(true); jPSpieler1.setBorder(BorderFactory.createBevelBorder(1, Color.WHITE, Color.BLACK)); jPSpieler1.setBackground(new Color(0xB8CFE5)); jPanel4.add(jPSpieler1); jLName1.setBounds(8, 8, 174, 33); jLName1.setText("Spieler 1"); jLName1.setFont(new Font("Dialog", Font.BOLD, 24)); jLName1.setForeground(new Color(0x000080)); jLName1.setHorizontalTextPosition(SwingConstants.CENTER); jPSpieler1.add(jLName1); jLPunkte1.setBounds(11, 48, 166, 33); jLPunkte1.setText("0 Punkte"); jLPunkte1.setForeground(new Color(0x800000)); jLPunkte1.setFont(new Font("Dialog", Font.BOLD, 24)); jLPunkte1.setHorizontalTextPosition(SwingConstants.CENTER); jPSpieler1.add(jLPunkte1); jPSpieler2.setBounds(832, 160, 185, 89); jPSpieler2.setOpaque(true); jPSpieler2.setBorder(BorderFactory.createBevelBorder(1, Color.WHITE, Color.BLACK)); jPanel4.add(jPSpieler2); jLName2.setBounds(8, 8, 174, 33); jLName2.setText("Spieler 2"); jLName2.setFont(new Font("Dialog", Font.BOLD, 24)); jLName2.setForeground(new Color(0x000080)); jLName2.setHorizontalTextPosition(SwingConstants.CENTER); jPSpieler2.add(jLName2); jLPunkte2.setBounds(11, 48, 166, 33); jLPunkte2.setText("0 Punkte"); jLPunkte2.setFont(new Font("Dialog", Font.BOLD, 24)); jLPunkte2.setForeground(new Color(0x800000)); jLPunkte2.setHorizontalTextPosition(SwingConstants.CENTER); jPSpieler2.add(jLPunkte2); jPSpieler3.setBounds(832, 248, 185, 89); jPSpieler3.setOpaque(true); jPSpieler3.setBorder(BorderFactory.createBevelBorder(1, Color.WHITE, Color.BLACK)); jPSpieler3.setBackground(new Color(0xEEEEEE)); jPanel4.add(jPSpieler3); jLName3.setBounds(8, 8, 174, 33); jLName3.setText("Spieler 3"); jLName3.setFont(new Font("Dialog", Font.BOLD, 24)); jLName3.setForeground(new Color(0x000080)); jLName3.setHorizontalTextPosition(SwingConstants.CENTER); jPSpieler3.add(jLName3); jLPunkte3.setBounds(11, 48, 166, 33); jLPunkte3.setText("0 Punkte"); jLPunkte3.setFont(new Font("Dialog", Font.BOLD, 24)); jLPunkte3.setForeground(new Color(0x800000)); jLPunkte3.setHorizontalTextPosition(SwingConstants.CENTER); jPSpieler3.add(jLPunkte3); jPSpieler4.setBounds(832, 336, 185, 89); jPSpieler4.setOpaque(true); jPSpieler4.setBorder(BorderFactory.createBevelBorder(1, Color.WHITE, Color.BLACK)); jPSpieler4.setBackground(new Color(0xEEEEEE)); jPanel4.add(jPSpieler4); jLName4.setBounds(8, 8, 174, 33); jLName4.setText("Spieler 4"); jLName4.setFont(new Font("Dialog", Font.BOLD, 24)); jLName4.setForeground(new Color(0x000080)); jLName4.setHorizontalTextPosition(SwingConstants.CENTER); jPSpieler4.add(jLName4); jLPunkte4.setBounds(11, 48, 166, 33); jLPunkte4.setText("0 Punkte"); jLPunkte4.setFont(new Font("Dialog", Font.BOLD, 24)); jLPunkte4.setForeground(new Color(0x800000)); jLPunkte4.setHorizontalTextPosition(SwingConstants.CENTER); jPSpieler4.add(jLPunkte4); jBEnde.setBounds(832, 432, 185, 49); jBEnde.setText("Spiel beenden"); jBEnde.setMargin(new Insets(2, 2, 2, 2)); jBEnde.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jBEnde_ActionPerformed(evt); } }); jBEnde.setFont(new Font("Dialog", Font.BOLD, 24)); jPanel4.add(jBEnde); // Ende Komponenten readQuestions(); jLabel1.setText("Quiz: "+doc.getRootElement().getChild("Titel").getValue()); jBTopics = new JButton[getAnzKategorien()][getAnzTopics()]; for (x = 0; x < getAnzKategorien() ; x++) { JPanel jPanel = new JPanel(); jPanel.setBounds(2+193*x, 85, 193, 65); jPanel.setOpaque(false); jPanel.setBorder(BorderFactory.createBevelBorder(0, Color.WHITE, Color.BLACK)); jPanel4.add(jPanel); JLabel jLabel = new JLabel(); jLabel.setBounds(80, 60, 193, 64); jLabel.setText("
"+getKategorie(x)+"
"); jLabel.setHorizontalAlignment(SwingConstants.CENTER); jLabel.setFont(new Font("Dialog", Font.BOLD, 24)); jPanel.add(jLabel); for (y = 0; y < getAnzTopics() ; y++ ) { jBTopics[x][y] = new JButton(); jBTopics[x][y].setText(getTopic(x,y).getChild("Punkte").getValue()); jBTopics[x][y].setBounds(2+193*x, 150+y*65, 193, 65); jBTopics[x][y].setMargin(new Insets(2,2,2,2)); jBTopics[x][y].setFont(new Font("Dialog", Font.BOLD, 36)); jBTopics[x][y].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { button_ActionPerformed(evt); } }); jPanel4.add(jBTopics[x][y]); } // end of for } // end of for setResizable(false); setVisible(true); sp_anz = 0; while (sp_anz <2 || sp_anz > 4) { String s = javax.swing.JOptionPane.showInputDialog( "Bitte Anzahl der Spieler eingeben (2-4):" ); try{ int i = Integer.parseInt( s ); sp_anz = i; } catch (Exception e) { } } // end of while jPSpieler4.setVisible(sp_anz >= 4); jPSpieler3.setVisible(sp_anz >= 3); // end of if } // Anfang Methoden public void button_ActionPerformed(ActionEvent evt) { int x = 0; int y = 0; for (int i=0;i