From 7835d8e99a691bda488e7cccb2949ae9b07267f2 Mon Sep 17 00:00:00 2001 From: Thomas Schaller Date: Sun, 29 Dec 2024 14:01:46 +0100 Subject: [PATCH] =?UTF-8?q?Subtrees=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Quellcodes/alg_gr_highscorespiel/.gitignore | 5 + Quellcodes/alg_gr_highscorespiel/Base64.java | 117 +++ .../alg_gr_highscorespiel/BinaerSpiel.java | 573 +++++++++++ .../alg_gr_highscorespiel/BinaerSpiel.jfm | 891 +++++++++++++++++ .../alg_gr_highscorespiel/JEClasses.jar | Bin 0 -> 105177 bytes .../alg_gr_highscorespiel/MyServer.java | 112 +++ .../MyServerSocketListener.java | 14 + .../alg_gr_highscorespiel/MySocket.java | 196 ++++ .../MySocketListener.java | 17 + .../alg_gr_highscorespiel/ScoreSaver.jar | Bin 0 -> 39537 bytes .../alg_gr_highscorespiel/ScoreSaver.java | 363 +++++++ Quellcodes/alg_gr_highscorespiel/Table.java | 895 ++++++++++++++++++ .../alg_gr_highscorespiel/TableRow.java | 317 +++++++ .../alg_gr_highscorespiel/jdom-1.1.3.jar | Bin 0 -> 151304 bytes Quellcodes/alg_gr_highscorespiel/readme.adoc | 12 + 15 files changed, 3512 insertions(+) create mode 100644 Quellcodes/alg_gr_highscorespiel/.gitignore create mode 100644 Quellcodes/alg_gr_highscorespiel/Base64.java create mode 100644 Quellcodes/alg_gr_highscorespiel/BinaerSpiel.java create mode 100644 Quellcodes/alg_gr_highscorespiel/BinaerSpiel.jfm create mode 100644 Quellcodes/alg_gr_highscorespiel/JEClasses.jar create mode 100644 Quellcodes/alg_gr_highscorespiel/MyServer.java create mode 100644 Quellcodes/alg_gr_highscorespiel/MyServerSocketListener.java create mode 100644 Quellcodes/alg_gr_highscorespiel/MySocket.java create mode 100644 Quellcodes/alg_gr_highscorespiel/MySocketListener.java create mode 100644 Quellcodes/alg_gr_highscorespiel/ScoreSaver.jar create mode 100644 Quellcodes/alg_gr_highscorespiel/ScoreSaver.java create mode 100644 Quellcodes/alg_gr_highscorespiel/Table.java create mode 100644 Quellcodes/alg_gr_highscorespiel/TableRow.java create mode 100644 Quellcodes/alg_gr_highscorespiel/jdom-1.1.3.jar create mode 100644 Quellcodes/alg_gr_highscorespiel/readme.adoc diff --git a/Quellcodes/alg_gr_highscorespiel/.gitignore b/Quellcodes/alg_gr_highscorespiel/.gitignore new file mode 100644 index 0000000..c1f4551 --- /dev/null +++ b/Quellcodes/alg_gr_highscorespiel/.gitignore @@ -0,0 +1,5 @@ +*.class +*.ctxt +*.sh +repo.adoc +*.~lock diff --git a/Quellcodes/alg_gr_highscorespiel/Base64.java b/Quellcodes/alg_gr_highscorespiel/Base64.java new file mode 100644 index 0000000..bb85f31 --- /dev/null +++ b/Quellcodes/alg_gr_highscorespiel/Base64.java @@ -0,0 +1,117 @@ +import java.io.ByteArrayOutputStream; +import java.util.Random; +import java.util.Arrays; +import javax.xml.bind.DatatypeConverter; + +/** + * + * Hilfsklasse zur Konvertierung in Base64 von Strings + * @author Emil Hernvall (https://gist.github.com/emilhernvall/953733) + */ + +public class Base64 +{ + public static String encode(String text) + { + byte[] data = text.getBytes(); + return encode(data); + } + + public static String encode(byte[] data) { + char[] tbl = { + 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P', + 'Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f', + 'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v', + 'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/' }; + + StringBuilder buffer = new StringBuilder(); + int pad = 0; + for (int i = 0; i < data.length; i += 3) { + + int b = ((data[i] & 0xFF) << 16) & 0xFFFFFF; + if (i + 1 < data.length) { + b |= (data[i+1] & 0xFF) << 8; + } else { + pad++; + } + if (i + 2 < data.length) { + b |= (data[i+2] & 0xFF); + } else { + pad++; + } + + for (int j = 0; j < 4 - pad; j++) { + int c = (b & 0xFC0000) >> 18; + buffer.append(tbl[c]); + b <<= 6; + } + } + for (int j = 0; j < pad; j++) { + buffer.append("="); + } + + return buffer.toString(); + } + + + public static String decodeStr(String data) + { + return new String(decode(data)); + } + + public static byte[] decode(String data) + { + int[] tbl = { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; + byte[] bytes = data.getBytes(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + for (int i = 0; i < bytes.length; ) { + int b = 0; + if (tbl[bytes[i]] != -1) { + b = (tbl[bytes[i]] & 0xFF) << 18; + } + // skip unknown characters + else { + i++; + continue; + } + + int num = 0; + if (i + 1 < bytes.length && tbl[bytes[i+1]] != -1) { + b = b | ((tbl[bytes[i+1]] & 0xFF) << 12); + num++; + } + if (i + 2 < bytes.length && tbl[bytes[i+2]] != -1) { + b = b | ((tbl[bytes[i+2]] & 0xFF) << 6); + num++; + } + if (i + 3 < bytes.length && tbl[bytes[i+3]] != -1) { + b = b | (tbl[bytes[i+3]] & 0xFF); + num++; + } + + while (num > 0) { + int c = (b & 0xFF0000) >> 16; + buffer.write((char)c); + b <<= 8; + num--; + } + i += 4; + } + return buffer.toByteArray(); + } +} diff --git a/Quellcodes/alg_gr_highscorespiel/BinaerSpiel.java b/Quellcodes/alg_gr_highscorespiel/BinaerSpiel.java new file mode 100644 index 0000000..3d6af8b --- /dev/null +++ b/Quellcodes/alg_gr_highscorespiel/BinaerSpiel.java @@ -0,0 +1,573 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; +import java.util.Random; + + +/** + * + * BinärSpiel: Man kann eine gewisse Zeit Binärzahlen in Dezimalzahlen umrechnen + * Die Ergebnisse werden an den Server geschickt + * V1.1: Rundenzeit vom Server steuerbar, Fehlerkorrektur + * V1.2: Gesamtzeit vom Server steuerbar + * + * @version 1.2 vom 18.02.2019 + * @author Thomas Schaller + * cc0-Lizenz ZPG IMP Klasse 9 + */ + +public class BinaerSpiel extends JFrame implements MySocketListener { + // Anfang Attribute + private JTextField jTFLoesung = new JTextField(); + private JTextField jTFAufgabe = new JTextField(); + private JButton bLeicht = new JButton(); + private JButton bMittel = new JButton(); + private JButton bSchwer = new JButton(); + private JButton bPruefen = new JButton(); + private JPanel jPanel1 = new JPanel(null, true); + private JLabel lRunde = new JLabel(); + private JLabel lZeit = new JLabel(); + private JPanel jPanel2 = new JPanel(null, true); + private JLabel ltPunkte = new JLabel(); + private JLabel lPunkte = new JLabel(); + private JButton jBVerbinden = new JButton(); + private JButton bRundestarten = new JButton(); + private JLabel lServer = new JLabel(); + private JTextField jTFAdress = new JTextField(); + private JLabel l = new JLabel(); + private JLabel l1 = new JLabel(); + private JLabel l3 = new JLabel(); + private JLabel l2 = new JLabel(); + private JLabel l5 = new JLabel(); + private JLabel l6 = new JLabel(); + private Timer timer1 = new Timer(1000, null); + private JLabel lSpielername = new JLabel(); + private JTextField jTFName = new JTextField(); + private JLabel l4 = new JLabel(); + private JLabel jLMeldung = new JLabel(); + private JLabel lcc2018ThomasSchallerVersion10 = new JLabel(); + private JPanel jPanel3 = new JPanel(null, true); + private JLabel lGesamt = new JLabel(); + private JLabel lGesamtzeit = new JLabel(); + // Ende Attribute + private int spielzeit = 60; + private int restzeit = 0; + private int gesamtzeit = 0; + private int zahl = 0; + private int punkte = 0; + private MySocket client = null; + private int lastLevel = 0; + private boolean spiellaeuft = false; + + + public BinaerSpiel (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 597; + int frameHeight = 276; + 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 + jTFLoesung.setBounds(272, 168, 150, 28); + jTFLoesung.setEditable(true); + jTFLoesung.setEnabled(true); + jTFLoesung.setVisible(false); + jTFLoesung.addKeyListener(new KeyAdapter() { + public void keyPressed(KeyEvent evt) { + jTFLoesung_KeyPressed(evt); + } + }); + cp.add(jTFLoesung); + jTFAufgabe.setBounds(40, 168, 150, 28); + jTFAufgabe.setEditable(false); + jTFAufgabe.setEnabled(true); + jTFAufgabe.setVisible(false); + cp.add(jTFAufgabe); + bLeicht.setBounds(128, 168, 99, 25); + bLeicht.setText("einfach"); + bLeicht.setMargin(new Insets(2, 2, 2, 2)); + bLeicht.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bLeicht_ActionPerformed(evt); + } + }); + bLeicht.setVisible(false); + bLeicht.addKeyListener(new KeyAdapter() { + public void keyPressed(KeyEvent evt) { + bLeicht_KeyPressed(evt); + } + }); + cp.add(bLeicht); + bMittel.setBounds(248, 168, 91, 25); + bMittel.setText("mittel"); + bMittel.setMargin(new Insets(2, 2, 2, 2)); + bMittel.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bMittel_ActionPerformed(evt); + } + }); + bMittel.setVisible(false); + bMittel.addKeyListener(new KeyAdapter() { + public void keyPressed(KeyEvent evt) { + bMittel_KeyPressed(evt); + } + }); + cp.add(bMittel); + bSchwer.setBounds(368, 168, 83, 25); + bSchwer.setText("schwer"); + bSchwer.setMargin(new Insets(2, 2, 2, 2)); + bSchwer.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bSchwer_ActionPerformed(evt); + } + }); + bSchwer.setVisible(false); + bSchwer.addKeyListener(new KeyAdapter() { + public void keyPressed(KeyEvent evt) { + bSchwer_KeyPressed(evt); + } + }); + cp.add(bSchwer); + bPruefen.setBounds(472, 168, 75, 25); + bPruefen.setText("Prüfen"); + bPruefen.setMargin(new Insets(2, 2, 2, 2)); + bPruefen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bPruefen_ActionPerformed(evt); + } + }); + bPruefen.setEnabled(true); + bPruefen.setVisible(false); + bPruefen.setSelected(true); + cp.add(bPruefen); + jPanel1.setBounds(192, 72, 177, 49); + jPanel1.setOpaque(false); + jPanel1.setBorder(BorderFactory.createBevelBorder(1, new Color(0xC0C0C0), Color.BLACK)); + cp.add(jPanel1); + lRunde.setBounds(8, 8, 86, 30); + lRunde.setText("Runde:"); + lRunde.setFont(new Font("Dialog", Font.BOLD, 22)); + lRunde.setForeground(new Color(0x800000)); + jPanel1.add(lRunde); + lZeit.setBounds(88, 8, 83, 30); + lZeit.setText("? sek"); + lZeit.setFont(new Font("Dialog", Font.BOLD, 22)); + lZeit.setForeground(new Color(0x800000)); + lZeit.setHorizontalAlignment(SwingConstants.RIGHT); + jPanel1.add(lZeit); + jPanel2.setBounds(8, 72, 177, 49); + jPanel2.setOpaque(false); + jPanel2.setBorder(BorderFactory.createBevelBorder(1, new Color(0xC0C0C0), Color.BLACK)); + cp.add(jPanel2); + jBVerbinden.setBounds(408, 40, 169, 25); + jBVerbinden.setText("Verbinden"); + jBVerbinden.setMargin(new Insets(2, 2, 2, 2)); + jBVerbinden.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + jBVerbinden_ActionPerformed(evt); + } + }); + cp.add(jBVerbinden); + ltPunkte.setBounds(8, 8, 110, 30); + ltPunkte.setText("Punkte:"); + ltPunkte.setFont(new Font("Dialog", Font.BOLD, 22)); + ltPunkte.setForeground(new Color(0x800000)); + jPanel2.add(ltPunkte); + lPunkte.setBounds(96, 8, 70, 30); + lPunkte.setText("0"); + lPunkte.setForeground(new Color(0x800000)); + lPunkte.setFont(new Font("Dialog", Font.BOLD, 22)); + lPunkte.setHorizontalAlignment(SwingConstants.RIGHT); + jPanel2.add(lPunkte); + bRundestarten.setBounds(120, 160, 353, 41); + bRundestarten.setText("Runde starten"); + bRundestarten.setMargin(new Insets(2, 2, 2, 2)); + bRundestarten.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bRundestarten_ActionPerformed(evt); + } + }); + bRundestarten.setEnabled(false); + bRundestarten.addKeyListener(new KeyAdapter() { + public void keyPressed(KeyEvent evt) { + bRundestarten_KeyPressed(evt); + } + }); + cp.add(bRundestarten); + lServer.setBounds(8, 40, 110, 20); + lServer.setText("Server:"); + cp.add(lServer); + jTFAdress.setBounds(128, 40, 270, 25); + jTFAdress.addKeyListener(new KeyAdapter() { + public void keyPressed(KeyEvent evt) { + jTFAdress_KeyPressed(evt); + } + }); + cp.add(jTFAdress); + l.setBounds(24, 160, 14, 33); + l.setText("("); + l.setFont(new Font("Dialog", Font.BOLD, 24)); + l.setVisible(false); + cp.add(l); + l1.setBounds(256, 160, 14, 33); + l1.setText("("); + l1.setFont(new Font("Dialog", Font.BOLD, 24)); + l1.setVisible(false); + cp.add(l1); + l3.setBounds(192, 160, 10, 33); + l3.setText(")"); + l3.setFont(new Font("Dialog", Font.BOLD, 24)); + l3.setVisible(false); + cp.add(l3); + l2.setBounds(200, 184, 14, 20); + l2.setText("2"); + l2.setFont(new Font("Dialog", Font.BOLD, 11)); + l2.setVisible(false); + cp.add(l2); + l5.setBounds(424, 160, 14, 33); + l5.setText(")"); + l5.setFont(new Font("Dialog", Font.BOLD, 24)); + l5.setVisible(false); + cp.add(l5); + l6.setBounds(432, 184, 16, 20); + l6.setText("10"); + l6.setFont(new Font("Dialog", Font.BOLD, 11)); + l6.setVisible(false); + cp.add(l6); + timer1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + timer1_ActionPerformed(evt); + } + }); + timer1.setRepeats(true); + timer1.setInitialDelay(0); + lSpielername.setBounds(8, 8, 110, 20); + lSpielername.setText("Spielername:"); + cp.add(lSpielername); + jTFName.setBounds(128, 8, 270, 25); + cp.add(jTFName); + l4.setBounds(224, 168, 22, 25); + l4.setText("->"); + l4.setFont(new Font("@System", Font.BOLD, 24)); + l4.setVisible(false); + cp.add(l4); + jLMeldung.setBounds(8, 128, 566, 20); + jLMeldung.setText(""); + cp.add(jLMeldung); + lcc2018ThomasSchallerVersion10.setBounds(8, 216, 566, 20); + lcc2018ThomasSchallerVersion10.setText("(cc) 2018, Thomas Schaller, Version 1.2"); + lcc2018ThomasSchallerVersion10.setHorizontalAlignment(SwingConstants.CENTER); + cp.add(lcc2018ThomasSchallerVersion10); + addWindowListener(new WindowAdapter() { + public void windowClosed(WindowEvent evt) { + BinaerSpiel_WindowClosed(evt); + } + }); + jPanel3.setBounds(376, 72, 201, 49); + jPanel3.setOpaque(false); + jPanel3.setBorder(BorderFactory.createBevelBorder(1, new Color(0xC0C0C0), Color.BLACK)); + cp.add(jPanel3); + lGesamt.setBounds(8, 8, 93, 30); + lGesamt.setText("Gesamt:"); + lGesamt.setFont(new Font("Dialog", Font.BOLD, 22)); + lGesamt.setForeground(new Color(0x800000)); + jPanel3.add(lGesamt); + lGesamtzeit.setBounds(112, 8, 83, 30); + lGesamtzeit.setText("? sek"); + lGesamtzeit.setFont(new Font("Dialog", Font.BOLD, 22)); + lGesamtzeit.setForeground(new Color(0x800000)); + lGesamtzeit.setHorizontalAlignment(SwingConstants.RIGHT); + jPanel3.add(lGesamtzeit); + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + + private void neueAufgabe(int min, int max) { + Random r = new Random(); + do{ + zahl = r.nextInt(max-min)+min; + } while (jTFAufgabe.equals(Integer.toBinaryString(zahl))); + jTFAufgabe.setText(Integer.toBinaryString(zahl)); + jTFLoesung.setText(""); + + bPruefen.setVisible(true); + jTFLoesung.setVisible(true); + jTFAufgabe.setVisible(true); + l1.setVisible(true); + l2.setVisible(true); + l3.setVisible(true); + l4.setVisible(true); + l5.setVisible(true); + l6.setVisible(true); + l.setVisible(true); + bLeicht.setVisible(false); + bMittel.setVisible(false); + bSchwer.setVisible(false); + jTFLoesung.requestFocus(); + } + + public void bLeicht_ActionPerformed(ActionEvent evt) { + lastLevel = 0; + neueAufgabe(1,16); + } // end of bLeicht_ActionPerformed + + public void bMittel_ActionPerformed(ActionEvent evt) { + lastLevel = 1; + neueAufgabe(16,128); + + } // end of bMittel_ActionPerformed + + public void bSchwer_ActionPerformed(ActionEvent evt) { + lastLevel = 2; + neueAufgabe(128,1024); + + } // end of bSchwer_ActionPerformed + + public void bPruefen_ActionPerformed(ActionEvent evt) { + try{ + int loesung = Integer.parseInt(jTFLoesung.getText()); + if(loesung == zahl) { + jLMeldung.setText("Richtig! Du erhälst "+zahl+" Punkte."); + punkte += zahl; + lPunkte.setText(""+punkte); + } + else { + jLMeldung.setText("Leider falsch! Richtig wäre "+Integer.toBinaryString(zahl)+" -> "+zahl+" gewesen."); + } // end of if-else + + + } catch(Exception e) { + jLMeldung.setText("Deine Eingabe ist keine korrekte Zahl."); + + } + bPruefen.setVisible(false); + jTFAufgabe.setVisible(false); + jTFLoesung.setVisible(false); + bLeicht.setVisible(true); + bMittel.setVisible(true); + bSchwer.setVisible(true); + l1.setVisible(false); + l2.setVisible(false); + l3.setVisible(false); + l4.setVisible(false); + l5.setVisible(false); + l6.setVisible(false); + l.setVisible(false); + setLevelFocus(); + + } // end of bPruefen_ActionPerformed + + public void jBVerbinden_ActionPerformed(ActionEvent evt) { + + String a = jTFAdress.getText(); + int p = 44444; + if (client != null && client.isAktiv()) { + jTFName.setEnabled(true); + jTFAdress.setEnabled(true); + + jBVerbinden.setText("Verbinden"); + client.sendeNachricht("exit"); + client.trenneVerbindung(); + } else { + client = new MySocket(a, p, this); + if (client.isAktiv()) { + jTFName.setEnabled(false); + jTFAdress.setEnabled(false); + jBVerbinden.setText("Trennen"); + client.sendeNachricht(("user:"+jTFName.getText()+":alle")); + } + } // end of if-else + } // end of jBVerbinden_ActionPerformed + + + + public void bRundestarten_ActionPerformed(ActionEvent evt) { + bRundestarten.setVisible(false); + bLeicht.setVisible(true); + bMittel.setVisible(true); + bSchwer.setVisible(true); + setLevelFocus(); + restzeit = Math.min(spielzeit,gesamtzeit-1); + punkte = 0; + lZeit.setText(""+restzeit+" sek"); + lPunkte.setText(""+punkte); + timer1.start(); + spiellaeuft = true; + jLMeldung.setText(""); + + } // end of bRundestarten_ActionPerformed + + public void timer1_ActionPerformed(ActionEvent evt) { + restzeit--; + lZeit.setText(""+restzeit+" sek"); + lGesamtzeit.setText(""+gesamtzeit+" sek"); + if(restzeit == 0 || gesamtzeit == 0) { + timer1.stop(); + if(client != null) { + if(gesamtzeit > 0) { + client.sendeNachricht("punkte:"+punkte); + jLMeldung.setText("Deine Zeit ist abgelaufen. Du hast "+punkte+ " Punkte erreicht. Punkte wurden gespeichert."); + } else { + jLMeldung.setText("Die Gesamtzeit ist abgelaufen. Die Punkte konnten nicht mehr gespeichert werden."); + } // end of if-else + + } else { + jLMeldung.setText("Deine Zeit ist abgelaufen. Du hast "+punkte+ " Punkte erreicht. Serververbindung abgebrochen."); + } // end of if-else + spiellaeuft = false; + + bRundestarten.setVisible(true); + if(gesamtzeit > 0) { + bRundestarten.requestFocus(); + } else { + bRundestarten.setEnabled(false); + } // end of if-else + + bPruefen.setVisible(false); + jTFAufgabe.setVisible(false); + jTFLoesung.setVisible(false); + bLeicht.setVisible(false); + bMittel.setVisible(false); + bSchwer.setVisible(false); + l1.setVisible(false); + l2.setVisible(false); + l3.setVisible(false); + l4.setVisible(false); + l5.setVisible(false); + l6.setVisible(false); + l.setVisible(false); + } + + + + } // end of timer1_ActionPerformed + + + /** Neuer Client macht nichts + */ + public void neuerClient(MySocket client) { + } + + public void nachrichtEmpfangen(MySocket client) { + String n = client.holeNachricht(); + if(n.startsWith("round")){ + try{ + spielzeit = Integer.parseInt(n.substring(6)); + } catch (Exception e) { + spielzeit = 60; + } + restzeit = spielzeit; + lZeit.setText(""+restzeit+" sek"); + } + if(n.startsWith("game")){ + try{ + gesamtzeit = Integer.parseInt(n.substring(5)); + } catch (Exception e) { + gesamtzeit = 0; + } + lGesamtzeit.setText(""+gesamtzeit+" sek"); + if(gesamtzeit > 0 && !spiellaeuft) { + bRundestarten.setEnabled(true); + bRundestarten.requestFocus(); + } + + } + + + } + + public void verbindungBeendet(MySocket client) { + jTFName.setEnabled(true); + jTFAdress.setEnabled(true); + jBVerbinden.setText("Verbinden"); + client = null; + } + public void BinaerSpiel_WindowClosed(WindowEvent evt) { + client.sendeNachricht("exit"); + client.trenneVerbindung(); + + } // end of BinaerSpiel_WindowClosed + + public void jTFLoesung_KeyPressed(KeyEvent evt) { + if(evt.getKeyCode() == KeyEvent.VK_ENTER) + bPruefen_ActionPerformed(null); + } // end of jTFLoesung_KeyPressed + + public void setLevelFocus() { + if(lastLevel == 0) bLeicht.requestFocus(); + if(lastLevel == 1) bMittel.requestFocus(); + if(lastLevel == 2) bSchwer.requestFocus(); + } + + + public void bLeicht_KeyPressed(KeyEvent evt) { + if(evt.getKeyCode() == KeyEvent.VK_ENTER) + bLeicht_ActionPerformed(null); + + if(evt.getKeyCode() == KeyEvent.VK_LEFT){ + lastLevel = (lastLevel+2)%3; + setLevelFocus(); + } + + if(evt.getKeyCode() == KeyEvent.VK_RIGHT){ + lastLevel = (lastLevel+1)%3; + setLevelFocus(); + } + } // end of bLeicht_KeyPressed + + public void bMittel_KeyPressed(KeyEvent evt) { + if(evt.getKeyCode() == KeyEvent.VK_ENTER) + bMittel_ActionPerformed(null); + if(evt.getKeyCode() == KeyEvent.VK_LEFT){ + lastLevel = (lastLevel+2)%3; + setLevelFocus(); + } + + if(evt.getKeyCode() == KeyEvent.VK_RIGHT){ + lastLevel = (lastLevel+1)%3; + setLevelFocus(); + } + } // end of bMittel_KeyPressed + + public void bSchwer_KeyPressed(KeyEvent evt) { + if(evt.getKeyCode() == KeyEvent.VK_ENTER) + bSchwer_ActionPerformed(null); + if(evt.getKeyCode() == KeyEvent.VK_LEFT){ + lastLevel = (lastLevel+2)%3; + setLevelFocus(); + } + + if(evt.getKeyCode() == KeyEvent.VK_RIGHT){ + lastLevel = (lastLevel+1)%3; + setLevelFocus(); + } + } // end of bSchwer_KeyPressed + + public void jTFAdress_KeyPressed(KeyEvent evt) { + if(evt.getKeyCode() == KeyEvent.VK_ENTER) + jBVerbinden_ActionPerformed(null); + + } // end of jTFAdress_KeyPressed + + public void bRundestarten_KeyPressed(KeyEvent evt) { + if(evt.getKeyCode() == KeyEvent.VK_ENTER) + bRundestarten_ActionPerformed(null); + + } // end of bRundestarten_KeyPressed + + // Ende Methoden + + public static void main(String[] args) { + new BinaerSpiel("BinaerSpiel"); + } +} + diff --git a/Quellcodes/alg_gr_highscorespiel/BinaerSpiel.jfm b/Quellcodes/alg_gr_highscorespiel/BinaerSpiel.jfm new file mode 100644 index 0000000..74df4e1 --- /dev/null +++ b/Quellcodes/alg_gr_highscorespiel/BinaerSpiel.jfm @@ -0,0 +1,891 @@ +object BinaerSpiel: TFGUIForm + Left = 834 + Top = 524 + BorderIcons = [biSystemMenu] + Caption = 'BinaerSpiel' + ClientHeight = 237 + ClientWidth = 581 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + windowClosed = 'BinaerSpiel_WindowClosed' + PixelsPerInch = 96 + TextHeight = 13 + object jTFAufgabe: TJTextField + Tag = 2 + Left = 40 + Top = 168 + Width = 150 + Height = 28 + Cursor = crIBeam + Hint = 'jTextField2' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [] + Foreground = 3355443 + Background = clWhite + Visible = False + HorizontalAlignment = LEFT + Text = '' + Editable = False + end + object bPruefen: TJButton + Tag = 4 + Left = 472 + Top = 168 + Width = 75 + Height = 25 + Hint = 'jButton4' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + Visible = False + actionPerformed = 'bPruefen_ActionPerformed' + Text = 'Pr'#252'fen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = True + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object jPanel1: TJPanel + Tag = 12 + Left = 192 + Top = 72 + Width = 177 + Height = 49 + Hint = 'jPanel1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = BevelBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clSilver + Border.BevelShadowColor = clBlack + Border.Beveltype = 1 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + object lRunde: TJLabel + Tag = 1 + Left = 8 + Top = 8 + Width = 86 + Height = 30 + Hint = 'jLabel3' + Font.Charset = DEFAULT_CHARSET + Font.Color = clMaroon + Font.Height = -22 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = clMaroon + Background = clBtnFace + Text = 'Runde:' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object lZeit: TJLabel + Tag = 1 + Left = 88 + Top = 8 + Width = 83 + Height = 30 + Hint = 'jLabel4' + Font.Charset = DEFAULT_CHARSET + Font.Color = clMaroon + Font.Height = -22 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = clMaroon + Background = clBtnFace + Text = '60 sek' + HorizontalAlignment = RIGHT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + end + object jPanel2: TJPanel + Tag = 12 + Left = 8 + Top = 72 + Width = 177 + Height = 49 + Hint = 'jPanel2' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = BevelBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 1 + Border.BevelHighlightColor = clSilver + Border.BevelShadowColor = clBlack + Border.Beveltype = 1 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + object lPunkte: TJLabel + Tag = 1 + Left = 96 + Top = 8 + Width = 70 + Height = 30 + Hint = 'jLabel2' + Font.Charset = DEFAULT_CHARSET + Font.Color = clMaroon + Font.Height = -22 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = clMaroon + Background = clBtnFace + Text = '0' + HorizontalAlignment = RIGHT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object ltPunkte: TJLabel + Tag = 1 + Left = 8 + Top = 8 + Width = 110 + Height = 30 + Hint = 'jLabel1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clMaroon + Font.Height = -22 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = clMaroon + Background = clBtnFace + Text = 'Punkte:' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + end + object jBVerbinden: TJButton + Tag = 4 + Left = 408 + Top = 40 + Width = 169 + Height = 25 + Hint = 'jButton5' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'jBVerbinden_ActionPerformed' + Text = 'Verbinden' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object lServer: TJLabel + Tag = 1 + Left = 8 + Top = 40 + Width = 110 + Height = 20 + Hint = 'jLabel1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Text = 'Server:' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object l: TJLabel + Tag = 1 + Left = 24 + Top = 160 + Width = 14 + Height = 33 + Hint = 'jLabel1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = clWindowText + Background = clBtnFace + Visible = False + Text = '(' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object timer1: TTimer + Tag = 49 + Left = 536 + Top = 136 + Width = 33 + Height = 28 + Hint = 'timer1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'timer1_ActionPerformed' + Coalesce = False + Delay = 1000 + InitialDelay = 0 + LogTimers = False + Repeats = True + end + object lSpielername: TJLabel + Tag = 1 + Left = 8 + Top = 8 + Width = 110 + Height = 20 + Hint = 'jLabel1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Text = 'Spielername:' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object jTFName: TJTextField + Tag = 2 + Left = 128 + Top = 8 + Width = 270 + Height = 25 + Cursor = crIBeam + Hint = 'jTextField3' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [] + Foreground = 3355443 + Background = clWhite + HorizontalAlignment = LEFT + Text = '' + Editable = True + end + object jLMeldung: TJLabel + Tag = 1 + Left = 8 + Top = 128 + Width = 566 + Height = 20 + Hint = 'jLabel1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Text = '' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object l1: TJLabel + Tag = 1 + Left = 256 + Top = 160 + Width = 14 + Height = 33 + Hint = 'jLabel1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = clWindowText + Background = clBtnFace + Visible = False + Text = '(' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object l2: TJLabel + Tag = 1 + Left = 200 + Top = 184 + Width = 14 + Height = 20 + Hint = 'jLabel1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = clWindowText + Background = clBtnFace + Visible = False + Text = '2' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object l3: TJLabel + Tag = 1 + Left = 192 + Top = 160 + Width = 10 + Height = 33 + Hint = 'jLabel1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = clWindowText + Background = clBtnFace + Visible = False + Text = ')' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object l5: TJLabel + Tag = 1 + Left = 424 + Top = 160 + Width = 14 + Height = 33 + Hint = 'jLabel1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = clWindowText + Background = clBtnFace + Visible = False + Text = ')' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object l4: TJLabel + Tag = 1 + Left = 224 + Top = 168 + Width = 22 + Height = 25 + Hint = 'jLabel1' + Font.Charset = HANGEUL_CHARSET + Font.Color = clWindowText + Font.Height = -24 + Font.Name = '@System' + Font.Style = [fsBold] + Foreground = clWindowText + Background = clBtnFace + Visible = False + Text = '->' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object l6: TJLabel + Tag = 1 + Left = 432 + Top = 184 + Width = 16 + Height = 20 + Hint = 'jLabel1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = clWindowText + Background = clBtnFace + Visible = False + Text = '10' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object lcc2018ThomasSchallerVersion10: TJLabel + Tag = 1 + Left = 8 + Top = 216 + Width = 566 + Height = 20 + Hint = 'jLabel1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Text = '(cc) 2018, Thomas Schaller, Version 1.0' + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object jTFLoesung: TJTextField + Tag = 2 + Left = 272 + Top = 168 + Width = 150 + Height = 28 + Cursor = crIBeam + Hint = 'jTextField1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [] + Foreground = 3355443 + Background = clWhite + Visible = False + keyPressed = 'jTFLoesung_KeyPressed' + HorizontalAlignment = LEFT + Text = '' + Editable = True + end + object bLeicht: TJButton + Tag = 4 + Left = 128 + Top = 168 + Width = 99 + Height = 25 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + Visible = False + keyPressed = 'bLeicht_KeyPressed' + actionPerformed = 'bLeicht_ActionPerformed' + Text = 'einfach' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object bMittel: TJButton + Tag = 4 + Left = 248 + Top = 168 + Width = 91 + Height = 25 + Hint = 'jButton2' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + Visible = False + keyPressed = 'bMittel_KeyPressed' + actionPerformed = 'bMittel_ActionPerformed' + Text = 'mittel' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object bSchwer: TJButton + Tag = 4 + Left = 368 + Top = 168 + Width = 83 + Height = 25 + Hint = 'jButton3' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + Visible = False + keyPressed = 'bSchwer_KeyPressed' + actionPerformed = 'bSchwer_ActionPerformed' + Text = 'schwer' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object jTFAdress: TJTextField + Tag = 2 + Left = 128 + Top = 40 + Width = 270 + Height = 25 + Cursor = crIBeam + Hint = 'jTextField3' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [] + Foreground = 3355443 + Background = clWhite + keyPressed = 'jTFAdress_KeyPressed' + HorizontalAlignment = LEFT + Text = '' + Editable = True + end + object bRundestarten: TJButton + Tag = 4 + Left = 120 + Top = 160 + Width = 353 + Height = 41 + Hint = 'jButton6' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + Enabled = False + keyPressed = 'bRundestarten_KeyPressed' + actionPerformed = 'bRundestarten_ActionPerformed' + Text = 'Runde starten' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object jPanel3: TJPanel + Tag = 12 + Left = 376 + Top = 72 + Width = 201 + Height = 49 + Hint = 'jPanel1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = BevelBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clSilver + Border.BevelShadowColor = clBlack + Border.Beveltype = 1 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + object lGesamt: TJLabel + Tag = 1 + Left = 8 + Top = 8 + Width = 93 + Height = 30 + Hint = 'jLabel3' + Font.Charset = DEFAULT_CHARSET + Font.Color = clMaroon + Font.Height = -22 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = clMaroon + Background = clBtnFace + Text = 'Gesamt:' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object lGesamtzeit: TJLabel + Tag = 1 + Left = 112 + Top = 8 + Width = 83 + Height = 30 + Hint = 'jLabel4' + Font.Charset = DEFAULT_CHARSET + Font.Color = clMaroon + Font.Height = -22 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = clMaroon + Background = clBtnFace + Text = '? sek' + HorizontalAlignment = RIGHT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + end +end diff --git a/Quellcodes/alg_gr_highscorespiel/JEClasses.jar b/Quellcodes/alg_gr_highscorespiel/JEClasses.jar new file mode 100644 index 0000000000000000000000000000000000000000..269e208776746539cb13dab478ea665d448efe74 GIT binary patch literal 105177 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
    ~XUsTB9BNVf@djfjs9yoXptqicD4p;_WTN4hH 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%0A?~NHH+N1 zKfjXMugOu#GmcaFFn5oPg_FGCfj`X2QQ3j2r5Sam6S4CrL4!|^=B)fKoA}j!VP8Nu z8KI7f)=14e6`ybH?xWSM-r;8V7~I^@XeXmbIaIg+faSmG^u;M`VrrA z1A_aF;P&1($moV)YLL7WkMCgh6Bc1diaVg@dH*j?XRPfFo{#(q#|CtLLiSbGz1LOY zktY?;-*;fKvKBEo-#@rjv~8Sw?4n!v!j2eKHj@$RBiJ0W&Id-T%2d%;BY@rip$^(4#6UW3(zxGP104 z0CVfW?JVJPi_M8p^VwTeF05-pVSSe);`(NmUBzF(_4JWXZF5zB}F~`W<)>N{P zV6S1%Gyy7WCVR*<@otu>-nGibow=SnvJMxl*-B(q@~0IcY%Kwr`S7~2b5&I}8|>>Y zMiBL-ON_HG;jPXu8OcN_u8X&LV}Ms}9c-k$vfa0TiJc?+&NhYXrIaTA zZiYR-b87#e)2sil8UDxD@uJ2_%sf5f=XMD_p#U^#u!vu-AB8K@FhDEjQyPU0uF&2N zS5lypYkOsCGZ`mbvP0%P?FKi;Z0OQ%#I#MBfp1r$hcxAq>#AV+%;3FSyoC{3Edo!c z-DyD9Ep-^*lju2qJTf7QoEx@{WUNfxu^C;UG0IC$glKfdaD0e6Du7~o#Xj?ndY;j& zg2HH=;t+Pbj2sO`3fAEfwL()SmC2Ly%xKB?Di~LLAnd1TWxQi@c+r|$eC&$q--#z= zGIvB1Nzq7cfqFw-WY}P4O6y)(BaYQ!)FnmjY9{JRJ^VjzgZTaECxhqgdINFO*&@7h zj8ojD;>4>F5LN;X%)`WU1^}m?3_pGA`>-3xyLj)vjQw0(^_Hl>5YpzZ9N9#Zq$s~` z9`Y`e2eZr7H;WgG>}QB28%L7FIq(Ugimmh6O<|^Pqv-D3_%jJjZOIzQ>GUR7o(D6# zuyQh^^d`RDa4V8}sJ}*{OU<)}kVyJ*Pe=hURT6!7q2y0FekNYFw^oc9LavYIjGi}k zoF=il*|iK@_&F0~PkKB!Iko$0nG5-)c(><@5D;51t+)B?ROea5*;tK{ zAkDYD4g-rvvtq}G3_$7?C6krY^sot>{?{XX8l);Z{UNp`jyX^_vPQn?YD5 zyj**#xAd91WhIo)U&4-=$$zL-Yh%}X5-AD4culMn6^y6Q>2-P?%sCI~$_#g9i!j}( zRi_NKRWu3~=pt-kC^ijk-W3=IG#8v%C*oA~{xQmDxgVWmRY1NZf^Ac88FoY)WDePM z|Lk1N_Bl7f>Xp5v9@LFNuM1D5YbznlXvRQAC+d%U%%md`EP`e$i9_IOT{n8(cyMR} zexix3BGKF8?GhbGYW?NR+txAnGVq{Qa&l^ z9DTx`LY$LDqh`V%#$vq;sjAzpO6ZZ$Alc>K5fBmuO`@mS%LGz~#4@rP&5P0NdrYPS z_8DIBwJg=cUPD!=`@L@Y#SXQf{Ne8xDFuy)=xgnRMXD>EuDLsZ%w*QGItwR%V$#Tr zQlc7^8KUYP0mBOoNPa1j|;#@mfK8)s{P!LFd%#X<(yZo1Oq*DSW#{Z=t^{UHeFXHKEyc zQghlT1#K2ts6Rqfm8vEox@ao<1M& zl6vWS2&aH{YQWI=JvhRZam`s+9LXYBt0Fo3sgiXlM=^CwfElOUP4hH4#FCp@`d-{_ zmLWBPX>SnsPzph{i83@wJ~|JipQNtxAYRMq+nd9rJ%oPyjhz07ZR|?FC-0*~*3po` zf_JJy<2$v7n;?4TymJ27l!-Ext=Q_F5OCW{+Psi(LcJw=&94KEn3SRW9|MaPj0BW$1hW6J{xQ+Bw^h?@0yhQ8YXJ!S2X$DjSA2J zUu62xkz`j1VO`JO$p&~1E|k^z)xmcLhi3<~ZR)Aa?^d+lC~I^axlx^UQE9WZiUsSC z4&Xj4PwwY2QCn`aFndz3K$A_oUIUXsc{r1DocD=ctZrnhSS!+jh+gOye6%tU6dIi& z;ls&ngymk{!6cqBvZ{jne(0>J(nS~jOoS6K%xeu(KtE1e8q0zQg?H|c+r^ix+aBRH zuzR&;E-hWw6AmF;|%r2`ty zg3EtIXIOF)l${bc@f$ubQx{tC+)(P*lCVl?fcfzyChF2CO2NnwaSQbN#=H(L=q%~5 z;9oM8{D-jd-|&*_g!#9jzmvE&bnQjCl#tm687d-rW&?dBAh!CQs#qn5TcJ0n{X8`i z*C;v=E@~?xp*O){I&@Iw9BTPcPMErd-IJl#qOTTq-ULSo=QB#mOOx1~S}N;IbDG`C zv2Y*H4wCojSLENL??21-AgAdlbT6|YaMQw+Zs?w<4NEo!To*t&0a5m8wM-L9>*)|D z01b3Q3lx11Cy*0sY`Acq*E8*6Hc8)m5a_;h0!2h8zC1#iV%uY2zfE3w7iO^Zl!&A7 z?qBR9#^M0&q0|=rSLSj8)QfAp3W>$yweZN63u&Y&T3ct%sukMCm2|*F-cWO12wt}m z<}xySDE{CAugIZ{$oWbz>$Yp10d?*69WZIp4+*3?PBpX=)+P;4h_dB^eVI+y^A&6$JfD>~RdOQL$vS#sT%Y92ylQ7FWW1|orL$tk+O$yim)Z=vYpEW3fRkXLEsN%?tyc=$ z+^J4&1Y;<+56hnxV?V*c|7tsOe7@G{$i+J6`=tg%c^Amx>%%6ovaRTixQeJUO!$s1 zaZ?&{{KXd$zyK)Bsjhm@b{4sLJJW})3@=p+#|Q`?rG$Wex}4*exFG8Y{xTtAxY4p@oK8Ydsqise|DOJE&}oVuD$|n=0q7WY1&uC{6irot{U3a7t28 zp1d%(LBDYNHID5KUXle1+7F;;a!chFA@cqkhumz9?6`PT)_9duXe1in9?;t{uUTk4 z*dQ%mjOtRkM=GJ_F-j6WSk)L*FO#EXGIxBePKxzw8-_^|oc56icV|WjsydW0h8uM^ z{^Uv*_Os?YsuaEMC&XjyArAC>G^Q*@G}>oTT!mNH>@XNjEx*>JzXoZ~Qx&U;`S%}CD|qGy_oZA^uFFZLk!PpzgHxCnT_N|0Pw z`}}zJ+`oiP{R20IpD_g6H|mOi#m)HNb8H>?aoIk8R34CEVAU#$?&~JIA39+MRQ5vj z3}y8*wfbx{C=_M$g*5Le;R6G~1Uq6_)45b;_S0=*mmjN=Y<(+Wb*ql2TZD;HaK)F}GSjDp+h{AwP`sL7P9sD~1Q9a_7vj29!^IkjLCe z=0~1=^OL6YrGbE_x|S#}h8f3ElOp)&;o8}Nn@Wu1LQZKJp;U+JV-P|e^eYw?urFLPltm_C<~?PLtelReh3z#Y*JGkf0cv&zOowM%+w-oF%Z z^H%_|c9WKgZu!7LzhGOdEkuH;YW1R91(uA2{nek+sUWZLz@|L|)$^X)r(Dd($wIB> zS6FI{V7LZ|(!$pU@n;1=-t0!zv$EZj2>!jErO59@IsOwc(?0=^$^r`@dc%DuMV*H2 zg{=32ObA5blj0Mmrbao;*j-_9&JhA^sk~_+qPMZq^W@$W*mjfv1MVc)41dO3245(X zTWUcWX{IpZJaQrh)=%Ort7=7X`fE=kW5xv{8B&HOePamiZF=VHJ?`+oS@mGfQhL+_ ziZfAh;ZB*9OrF12xwG5Z_t=M^#NcSf@Jeu1S{wIm>Ax>0n$i{hpTMtTsfTDhj10>KtYIsR8 zi@UarPr9tElC)F)vi4wN8;|zQ|AtS5G7DTb6RKeB_aTAeLn4r>fOW zxWF#>VV1bk{5}Q!_fNs!H``pau^N%4ao?)a)n3jo8-J~p9`toa;*6$Ag<3sgNs83o}J$T!g*ou@A2ywjbF$=0;nm-i2l_I@QWhNlYZY_0irzkjGuh$3Y} z+7y<0Y#uwttCz5`7*^6YL+hljrFd~h6iL5nX_Qxbmnfq*QXE+^I$7O}P#opiSAq?% z0u~77b07ob1>l=4bPFk1`k;*oLk(5>!jP(%@3i6O0cfvsVd@mLgr39p1Gehhnz zeV;?o zs!||R7?5t;qOd$9@ft~&Xn6>Dom_Nn>Ye}u)PV0TqaR1sX_F^3G>+KnB`I|FaNmV| zhFGt#zVh=dKSt*{sFc(FG12#5a<>0b$&DH;WdDa)u>OxpID5>T7k%XXaJcv^lMCikPtRNd8Y2|<3O zUU#+M+50UoYr;Cu;r|*mr+s{9hR!us`kuVQ{8sf-hz(1k&*K|$YL_shH*%b55&l0B zhs%B={sDS5g_-8kG{QJ4NqW8t{$0pxMvPKMt7@!yfP=`gRG7@wE47a~%#d*rn*DuRMlb4cr7 z%fx44u-`PW&)wF8&^0|DfGDa7PFw~3N(eI;`Rf=##7=*7if-Blp5_A+S&#~=F47t! zIGiXEQ&s?qRup`59Y_wAn%Q*s7{b37a%+d=`2T^J?f-&U!D}}#80J_o3I_w34HPAw z5(e(gBCY4QeR^Z?7h_y%>ov$b#Xg?X0re%v(}cJ0e`$qi1vCT%OQN0mYFwldhKwLb z(yHJQC^oXBR305_B#()*kC@$B|5R#Tjx>n@m$E1?tu9d-Z=`sGB0_@tah-V5!e`y8wKeQqul%ko-Nc)CG(kmZ$1RdOKyV)>UZO4aY z2+ouzhJt=6@DLicvj7qFTPq@J&a7gs-LvNV$h2%H&sO^2jpEXxzfZh^K=8+1rv20N zRkfG@sNx5V7iX^j)C%^0BK}vcc&>8W0pba}F($eZq>oePFmJUT2T!hC|L!UNQN<9x zetcu>k=ZLU-+G*t#>TYGm!k(%ZLi=T8Auty-grFHUl)q<53OjM!dmgmYej4?3qPkU zxa9(GVKI*#xsR_iUV%@Fle=3MFQy}!8(8QgLH8h0H2LtIn=GL;0s`@+7cJ)bri`ov z|E9Wgn4I^TIWhlVlvA}vs0SeCGIH1`Zi&D zWvtBhNptp_lkI16*7`C}2_N={<;f}qohd8?&3`u)BI^`$5zzY0^gC~=5t!Ki_vOZH zkj}d^U;qIlD0Ht}M9?dJDR$cmD_L8Mr1=4|F0WwAZ^#;ae_R{?SV8ciRZmD zCb>o-c`RiPnGuc{{P&@k3%o9XRsug(%kixhKbA>c49m!~1n89vrl2MWmeWeT5Fwdc zgTMG9giy6EkgDCHk>!;A=!1VOvs8UsjyzT%EswNEQ6Qe_IzsJs73{d%B1)m^sjb3W zyC*sNJ8PN^o_(Krb>gP^-)%+XOb@L#qiTtn?!mtdyZ<4^!!Ra(so(L%3EvUn-!t$3 z`V#qXzSar8O2`7ZLpe%+^}7-w$0sHxP%BA%Ez^?-!Qxag!9TdK>m4Dn`SsL32BjzO zzw^~)w&_|*wqi40E*+G!<;q&rQs7KNhW!i2r!!FE63p<6&QHMg+vU zeTwtVCa`q*q;6E|h5$y79I5p=>erzu5W);L5&c-`KV%wk8v6V%xTj6K7)EwynvD zlZkEHwl%@a|9;=S@4NNhuCr=Y?dn~%YxnAPx_kZl*FQd9uqzObG(XpiMxAo*rmR)C zCgDFk1pTR5V=`6AjBoRUUYN~1ib4!^ij{Yfr>_12R0!lIY5c$#v}^GvRAlXeQCLUz z7v4F#Bd+l0qfOc-Pm`|F=bLMG=^M~%)pdU@+Erb1ZJGx!e^f^k*fQ^K;#@3UAz`*| zdEIVg;xlPCm`aW&G*aM7H>B*-(~w8Bgpb{O-OM2e|G@^5?I#q$S#HTdkIH+V^sre4 zu1m5>RhuDpyF|r@ID+pv-GX_xYd&*$Nh)5d~ z>NtT@68foDNp^!@!5MV~kZ>5Rx*#vMzlb&e3d69Bc?B=>HV;q|Rti>;J@uOpn=hMB zEB^eCZ5UNyQS4_ol_$*C4$%t%0s{Nr>-WD9i%Ea%`iN0NpQL_;;%65#8MvHhZdLdMSE1$2t{<4NAT2zdG= zcjM*7KNuhb_{dZEsT|#)qTXbeO^}`GgRB#NOAtDh8*=6MSC7U$qGz*EUAqav^DENi zmUjm|>ymW@=JxH0*;S{EgIpR_^7E{AYr!w_T zv_#>k+v4`FQpnicRg>|XqNt=s4<9O#G1{I4oH1&OWXh^**N)gP8XomYpKrKfJ2`L6 z35*EuIb~BW=%XKMgww@FXX0^5N zA%7@XmE_56a5eVCB_0!pByFHNh@38ie{~gSo;gK%QfvprT;ry`TsuhVe~{ z$_V|qYe@~~L}#FnAn6qm>gOjHEi!n4NyYk(^w)y`#UW0dE>?Ja$`EzWF(^F-j&m@J z=*Tf3kjjF57Aw?0-^}HYR$(Ta%ZY}JwAGAD2Hrx#9hbYci*PfRlfz3TyORU-c-dgS zn*>MW!b!@8mQ!aNj~pJq8Kt(0HD0LC$7@B^pB5|Dg`nypJJyLSk*dS#E&Xrwa3}Fa zbuJ~iODcg}uh`1KVBx8{VzI{>C3IH{BC7Hf0*FDxbHzl8Fi<4Y!1+u|qhyc;=j-nZ z!s{y4XlYQZaD5QbN@014vcs$yQUYq6D|Kw((R5(6TBJ7WX6vNA#itxovc*qFQHM%?F8EHiqC1xTT+Y_48?UOcrfV#ruMUpcFaaJfy&PAO z6e%0+s$nQ9L!vj*y6mve&KahY-1(&-l+i>#7GFqL-XtM@Hlu07pya0-!M-@piGhj8 zmyIN)RQg=;4tc##GajI(d_ z#)Nu}#67Q8+m~I5X#{rY=C%08r-^)uRkez`f?H6|WL@%%ST^E`k%sG2Uz@OUdv}7Wf(JfQ+H2xy>5u} zx3_>QSP!JcmDu3HmzX>>sM)JRw0i}uce=s%q-AVX*Ki!`?28a*M5fbgmDkuY<*I^l z64ju28vP}C>+~}rU_G};o(Ki$S8w+z0+fq^1C+2@D;84b^*iRPEDpP^5tQ(^-aQ|$ z!GX?~ySaxH(&Uxar~m`(N-Q!I0SYw*!=-pvd@*C_i9(z}k09#MGY%o%OI8C?ei;U0kwQ~ML1| z?{Y5@H=|U~Yl;gor&Bl&P_t5_GC6TQ{juy-Oi+N3V`OB>V8EJWdos5xzRNHYRzz=# zZGi$$$&;u5z_$uVMFOtpRk+9xK_kP))xL;(cw3{GMCG7Tk=2m(aSY}ns zu>Ko51upsV_oklxRo&LrMRdk$>umxqc<^i-ou$f%;BZ@g_dbM*@rVlKaLKOL{&n|g zNanpw)t}ki`5Gck)jgJ^Yiaq;qu&IX+~{bW|a0nHJGRK_031yt2+qp2)0)5DUmkA3VdO-7I8VnaW3wgG?zi(npG)m`qR*&1ua zy=`tkV=9is`*A;>@8fK0-nn77YnHj16l0xkuAFR#MDJ1j?Lo=oKMPW$H^o3=qb^?8| z;E31)&;p_S>!YHWL`oDKcklgjByIJ*B_=G}m|Ci~rFKPDd;Z)Py=#ud)sBv~*apFI zY57kZoBj)kp9in_liv+)yh4s~U<;|*G}_kZOfL^x^8Hh|p`D4?=U6L#qIQ_*o!Zt8 z_z$#$i?lpU67skjCuq489_r|`^zEUXT}Gx!(KFvt_wAfxdTBXv0e>SrK8enjkidnd zk~Hr!9{A#`Wh~pKH9C&<6>QraJi{RzU1cls8@JtoD%Oo%qeTM?PgEGE8tKs`eSY7} z3{q+}xtoi8yS)Fy<4h&P6u&5gPqeRf>*gP+^nERTNt9>Zy1});1&(MjU0ai)$<|H9 zO6L=884-Qyj%JAnK-_FBRKDN%gA$Tw5}(x-i~>|%a?w>L(CZfnYhFBkI!`ZD8;E%7 zr2FNB|E=NP{MoEE6kZ?b-?>Rnhu11<1*)oo<8rfw#r-&|_{atMO`VfaZg0JHm{xC% zE`doK{>WM)XFctF@@o@Y+b?##+DVAY`)+!BMaGPR?F{)cB%Qw(EZDfD?7fJ+;JUXj z_`x`(9bP8!ZE(ML(t>2La9esxL9h1fPo&KroaJbFaZID~s1%c`4kA-O|2vEW0pT^L zmHD!j|GB>G2gJ(sKP;=ceo8E9=&9THD+(F<^5W3H1f)cTZ48~AW$X>V5a<7PPgHE} zXB9Af7?WH98~AHkcgf|M!M5GrnK9wqCJ~0(EbC~yrC=^+v%n&Zy{TEIIEndK$`9(j zR&16{Gt&J{=PT#U9A~+;E#IzpkUIa42$)?sHC2eZ!DbgsSaQrF44bmJ8-W2~UZrb| z9(2sTuvo*yu~KiZ5}|>N00u})D33KK`k#F$^TtC6N{iJQ2+ELS-=FZ0Oy|7plWc`Z zA)AesheFJ6ys(qrlq)Bzw+tQk)Zr zM2&vMImjqKXYAy%$hfMcWUd2k60Z&Velr;i-6x8NLh3~@%>JN97&yH#67lSk&-|5&0T@Z*F)g3`P?Nyi*Sa9jXxGbiDE^ z!bt6So7)V1BDG*U%p3473j9Cl_+73O!f!*V_S?lnJ)CBY-+zykLQ4<3F~IjaxksSB z_koa;PCeZs#%V8pUP&fIYfS(u5Y9ebaW1gFwOzRqpJox^KMbIm9oz2z0l~>-y|@EN zCzy~6-(W4P=XVLU(+j}DH(C>d>kN>NFi+fZYdRk3n_!cAOpE1-fChM3%Sy-wJ+8$` z&$>|;8(`BkF*i{#NL9)P{W%Bbr>x>I0rNyDGt#2ww2Bw{Rp94-iuOV{D)RuSi|Lg@ zVbk;N17jp-P3Q!j(worB&7k4$YbO$mceoe zPonkrG1If6=tlpU!u)5w((L%0?tXj27OWh%FtG2t!F2hNAWonFo8hrJju5y4O{wgZ=ti14eVp(^q|jBd<8$ zsoQ5q325X{%E#H|)#m3%Z0UzqBSg2@Gg}x=42Odd3e_$-I2AtUKzBKm+z$s&6rSBE z;>mtZP$YAFPO30x$DF#H+Pwf`E602U?2|Nn5s7;p`a2319ojzAf?X%vnz$V)+?s?P zD@CVhe``b?^X*sS!yPC>4k(E>$)O3ss&IHy=SY8TmvtuD|LFcGHiN|4(3k@_Tq5!dfSPbO&>6fu>L9^lKM|5+hd`oYvMvHG zKfV$7Z^^7{e2uxYoc<)C3EJUOczrc{6q%UuRe%FRI@ym2Q73ptppT|PwP zl<Nc@=KMxog@A&%OX*&Yk5Khe5}_N5S%rH7xcUe*U-}Vf1f1#^|_;X`$A;Ft~>X zCE+ayx!cMiJjEJdD&JhQnT5l}!jqx%b@&K#)1L|SEpXZk)+`I)=hFQ#^<~j{451XC zs#ah(lTa&0`%?oR(=g{F^Y$Y4^wXd5wotY$W^wBZMceg!?iA6tc8#IxBWdNniXgqI z#6L7+s_vdQ`;m>xol0yekg&`@bgdA|Y_J&-ER|c7vCqiNcg5fOTgfcJp^?~L_kd7b;9js{M*n9dr!Amej@_E7_ufH6UJq$3jV%hB zs<+q^>4`hy#~<^SrM(s9zSsCD7F;B+34u{RT=;KkPKkymVG#tfretcQ=0_`glp;<$ zyU15tbv1QBrnU6Y#1J4^&5){j{nm~(Fd`IR z;~i#bHq|tBa@vR2@}TLlQFcdfW3Iz9-?IgnHiEDd5jF2`OlJXlvH$7D`8i_WGKoT7 znE5$DZBO+rnV+Ma_iVpVlh)96oHWUDXr;EBz6xlhA1d9IO^X3{`jDRdd$&o6FIoYG zJVa+@y**lE)&sJL4qN>P{f*%`4CU~KaJl>HNaE7?%1R@JEl(;{M`kqfwJ(ZoDT7uv zH(<#u=?_}rzLE!(Mxegjcb_d)V(Ryp$~*wuBowO$C8w)1_Cb|njZHf8g&YNQq;WEL z)gU9m1Sz zW@{E@nOWsK%$5%83lARH$FKdCE>Si7Ce?DT{VO$_;8l*n>vFszlb%4ZJI+ z&yQLuD|EG^E0G{nLl&x=L;wq=0Z&!mJex5V&ELFaWRoQO!`J29Z?~bw#ss3R=yhCj zg7|XcJd-8!kjrSP#&kN-G%cXYjF$cq~c*X_HlktZ)aALG_Hl2{^bSBf?uvFnT# zvv#F;EIU@`D($i~ys^D47`-aGW>l|+)}#DiPWu#xqLmmN&j8_~ex!NvS>UYz>yK#eCkJRS7*nFBMX z4QqG-1apjpqWd49e{YCNM)u;Y{klzI=0D&TlTY@Ef~dwiDKF7vGM)dlxnusxR~Mg* z&GRP3B%9N+9F)Jsbu;W$dcM+$!n(0Fippuu0p!lG)w`g?>xLR>)#4~O;>_H$AS^N| zu~YXbh^@ti#wJpZZ%)<)Zbz%!!E>##ruiPb((doXp?oW5_Ls7YxEaY%;KR=#FNdN}d!e3+kWb}xUaR2-^@L|2T?`JJWce{Py%e$F2WweDigV@=ttY=Ken+&i^a(Pv-SsGA;m1 zoBt7n0THY3lDb{~S@jQ4>F6sS!vEib|Ej|!|NcKvF{L%RH35t)S*3PI0yH7md%3kn z*#H$P)vXA3L1GffI1vB-Ok*qulf?w4uq`1lfA?+hXX<_%f^E>X+nkj>t{+}8zdjwj zptrwajWJ*M1cb+$YCN0l{OCG9s0@ch-;(jhW==r=Y4;%ehElhboG>G`Jy;(FX$DPp zLXgd4xeGmMhezRW^YHoGWJKMkfu4D5(iHFrAw{>7k5Pu`O~ElYmmlT2Vc0EWjN)lm zcO=%eDW5<=6cFO<;bc5!ltf!&%V2vEWVt`WrmwEXvYH$3bvSFM>LG~p_tagOl4>VE z+AR&J7-Cykp$Pv|_O0Ot-xi+`uwqhEETBur?Oz#_UA-gW2^;&7uqu~48pEHc{K>jN zr2oe*{6glBR0G4(oym9s(O3po;(?C7#`~uJBweh_G*>qmf{%-TGs;7oUGAr_zdWY$ z_+nT}>k@8dyF27er`V3sc)2s%uz#6BMoW7AbTp$V1N**?r*>m@}$MFa=6 zEXq#iySZToHjPd&MaeV9CG)ZrQsUpzXRfb>DX?d zq@&_X$G^XHjQjuB@xKq@lyv3iztCxYHQG(p4c{8_p8eZSBf^vWsn|MDWM$Nhlj5E^ z>A?{uKJRty7)1*Z=# z+mQ?_b;sKF@H6#)4h7O`bFfUQGEO^qabNjj93wrcHaI6?$Yq)o4reLqFMm{2yIO;F z_9T6@%lf~1wpBwMhOAcT54cO4;yaDi&El4jS+bj!y!$9sDaTaYxsAM5CRLgSA8=py z?`$;=i=DPVIx9lH)-fSd40Nr;OFG-S`O-G0+CjUc?oqUT&ww!&IaV@?5b|B%(1$!8 za*yU<<%8_6P*2BrSjHdygm1huc!_CEOs5kBiwrEU=}4uR8jj)RWcDP_mb1NGlW0yf zGxpbPBa%Ae!W!Ngh;D2j$?etpT#@iM&9UkR$Er@@7_kYF55fU^O0RajqT3n$iyoG& zJWi0B2CajSLSSPQ<54S=AIwhnJ3;pPGLL8Hbv##$c@VqoolNx|;mK}AXo{Frq(GNt z5VOf>f4>inE0)NZ5MHC7{x^~}qKbMo9LN7w@E+Prm+Mz1!-Nh51pEJ|;D4z%TMJqz zQ61$EJo&dEc@a_aRW(Iz@Fr1f>{&s0Eg&bY%D^gWpLke5L}K1@=f$R%eLIJsb?U}f z$oRCm_Hp$~zpFn^#kcsP)9Y%Z{prus<;Di|uif1CONs(pLXThoDYA2*&2CAeyYh)0 zrAbR1DxP|akdqq;7(p>zv& zt2sw-=~OHXMssgMo1xgl%Uv~X%4bPwI9<7ef2FFt!rQA2UbA>F!@ zPz_^IMQ~BUa%m3Ju((!?=ak%>*l~wV#hvjhH}OahuLw<|rgE#FbE>yxH#mhyWm6d+ zjcACt{?s3aob6QDi)8Ielg!0K!k>AKW5W7jB%{?qhlh-Nm)6pA30z*+afr8IMnRbR z&GprFzUx})TZ;W`%W(7j(xNWm9ll}VDnU(+x-5foe7WhVk$$(qs?D#RyePHGRxUwf z-2UwE#*)0Ftdumz@WRwYQ9+fNQ53pjoJ9A*8HHUA^wfb3q(nM41_L0#f;KuL1XYeP zltTd962_D0o*3PE=9EevMulB{HP52uuz(@+BFX~;dVr!Y^n3lQ z1g9Nf$hy9c0S9hDTnKd=r|ly{PM?{eR?XQ7uil+?)=;BBiyDXh^jEeF*^)kn^^*(U zf~-{2Oj6G-7-}vSY)HD;duRs*d7Vkmx`A~E;UL`Bb|i4h#yS$$k@9KRU_Fc-YG#|= zIFbw%)%gMg0eY{U`M`tji1}biT+7k+UGyZXW&l3g;i2+nUB6j3=>{b7hBpl zd*og+C^klxinX@tN`)o;NX)|%*;v3p)T_eu76}#qY~~Ki&SZ@{Fd@AWBUP7<_%^E8 zkJB4GVYv%4HFR)|xKf9Nj6i{M#DNz~{)W9Q-J1Y%+Or`$ABR@_0vVFW9N*`>U6cKL z`fV`yD6=?z5$)^inTdX7eOIX~M@4k#L-NL)2LBNDDT|0zD~;;3A$=~v1H)u}ca{n~ z{nbL-#BZo(-Vw}UaF~Nt;7XQ?7$6qA0de^DMyT77<3oFL9vOLf>-)x1d5xxM{5vYV zW5bLDfjsQ4B0*1C7yfw4OO&v}P{`sp7H>rzF?yntAg^Ak%sH}PGCzFhq5Ts$nRp!n z%?Q|3R;TQjFnYuL;&^_hJ}~VGUI3V@_=~gftGDz&zi}Ne%7t`GC;^I;(;_n&$Z|PQ z?!~^bCppYgXT~4xyqH%FM4P57nlK|YV$9QwwRIat5zH-_n580p-ZS0&G7w7Wqa`me z-c1g)35YQFgmnFBxTGkJoyo0zNq$n{cBc~zOGK0+%o%l!& zr{#Y|+ayv}>+RsL#2|PcYOrZMHneQBKS55+`n%rL0NcyQGV+lDlW~nHFKPnw!d(OK z+P@0>1{-Gfh>axb{9X9}Y=sSo#o~wdu-I>fm7;L94Hb(F#r9?5CCCE0bPC&PW-%Y| zIeEdU3?^+DLe2oFx>a-SfJiwGc&=c%g%ehi(z$X8&epqHIrEv7mWxlRHaz`;yJBzL z@iMtUEDlgW2soa8%^jw9@u2#NH=8~7_<_|B?J`iRZD zSuS-BlbdHH|AvoyOFH)i5JJt59(0v>$pe5VO=+MEa!}*jz_wp{@zJZi11AP>814kV z)eXj;zTy0=xkG1pDx$yJk9z0+IUsNS7Bx9_>+Cc46#PvbuCL3!o7zWtSo^JM@@iUFq8WeK9Pdx%o!48J-?PBc z7lp-Fy@u6asdS}5dFaeH=j<5k_szx|f0B$2Cy zeUTV`67oUClxvO92Z{2e_Me^;M^=9ER7bsKh|P;iKS)H-O}H&fhsQ48Ed=pb#XJQG zj>|?<2n3FBB;&Ct_uG(_1cYN~l#8PMP+VKo^6VAs@Vr`yR-!C@+F7|7F0vCDsAFQ~ zLem{rv9iye4KNM-eUf9Gxy+$Y>^+&y0`x#z-N1LN+)A|U4`~2PFq+fzx?;z-re#lq z%yZ+OpK`sceanmhE}~&JRwiN=dn3Fvt}J5PCDY-ivU!_p@`y5oEoMlXnz_Ggx&E-f zq*z|)NPm4aC}Xn4FOw0aM0s`xv6pQklK zU%bq*muZ>_*{xEDe!UNMU53_ zA_)hGYOj#D>P9^E z%aA_YhvUwf_9qtaw1Pf_@!<`K+Re+!Iw}%9>_>B`s500z?UsW=CbbRUX zZiq|~gjy@>)DkHKF*;sC9J}L?#@_fFq?w}m;Nr4{azm3n%P6qU!=v=(lX4*iUqgGv zt!Wb*j%}xW-UA?MEJ3%> z-l&u&O_$u#cw3&oDqZ!cWW8Z(rf+3zSX zIl3aCVW#2eP@`TH*~3)SbRm2BnX%VC1DzEs)1C&r(vl8(q8g1|Q2R*%cq}{JvX&Gs zv^ETGrND0+t6zF0FwjVbSfFe9qoVM_f@6BaQof>8b6&t}j$BJ1aYTHsjIa>Zs;Ky@ z;a@&3fPA6|Gmbm>u@|#x2QPrLMYK$S=hz2s=3-ft13C7~d!K1Y$~o*2%0zdEF^iU+ zcJJPx{BrTkz@VBCmqXX3*NW>>*I}+Y0#sHX z_a-hdn?vN1FAfsN*7<$CoW^!|@ahKgATFGEEQoTMp_< zMzm;+sYdMb(>4Q9QVNNs7%>@nW^4-Sd7VqsSt+|la|}lr6CHY1>72{Tr?^>pFFCWj z5Eo>6=QM1;+z}ZpPX0tZJ|sQP`k;^Tn!ckq{_${tb|00&{obpbL9E|u*7GfaKubf< z1Tndm#8=t_R>ktkfMx1OQ8~qy^5*>RJ%WvuqX!h*gVI^Q51nNT!?8*LOLlISp0Jqo z2jBjX!_TNjS$bd{`AxwXb{teFVpY-0Aq{(eIeToiuEyPVKyQY4vxLUoHFpqOEE9PZ zclSVVx%KpDBpOBy9$9S>TCK46cX^NfP8CE?G@^kKm6#(=Fdq)A8CNjU3lZK4uCOYf z{zcKSGI5d;y&!i_isS4sw5TBTpZ^w9y1<4ZmOHN$6Lxm?| zIRYGxi2Q7&)3zPR86a0j< zrj)7&5o|U89)nL7rYENU9$`O=wfB2O4rJ+!hBy}=bWI#3r_`~BgXpc@#8Pz&_Pz_< zrKp3)JzB_7oHb#L@Y3-C?}M<12VQ4@Z}{R2vzL&VzHBa@bOs+}w(o3~%QClobouaI z24QcF*qdX1wKAx`)zGrN52k2Ib^c_E6lYz>xtb`GBwWhwnAzlCGLqob(tw#Hyfic&FR zEG|gIWAjBwOI8$VM zV0(={;9@31!QTT$x7^`U&G4@@&ZlZd1DG=I;by%HfmJdXkaGV5vWBpYqJh$)JZhyL zUl7xHtm?aZK--Ut7u2;6h(FJ`OwZUI3tO|q^ELKUA_g8ygAJ*sQ_OUunPv>lHSTOX z$i(Tm)`XTCisNNrEAdTJ%xm*cHV?{mLWiSybvB5E^8tCTbv%Nh5*s}<69Wk{t#MNB zD4SN68H+4D2Y>9nF6kwNiAv+C9wyTu2rFoF5sG-TvUtIKS!(h=cv%>lQZ5gtD zit`79#@O?uZrr%s9~RwE$QB8Gvr*=Gc(DWIIV(Upnb_Y_)mX%>xSGebk6h=_WYz=u zjmt+W0}!x?jvV-0@jeWb=rQx6|UlmdVde+XlibuDU}V z4d+d$%fD+?ev~F)ZS-_`R}J79afs6{AOJp)jXM9oA2~jCfE+)?nO56{I?PT$5Jq~R z8u_ur?|XtKFs?)Dq^vm#GrRP>!bDB8_YID|M3Q-Q#xC?&>|CR)yzlGM3mp-Z*Qbp` zP1WIIjz39be(;M!k)_nCLf=Uv=?sxO5?b$qRbck1+0fSjyB|Ot_+WI9L6`cvA7C8# zGQgK=e>uF1{n2hw6VQ@#X|FJR#$x-e_3|37L0nbTK<~j*=)G<3s5?bM$`^Zo3#OWf zvYw(Z+1_>`qY&{okg-WB*xN}30pgSD-P8+nO^?eeEvaz< zFlSt(Qtf_j>sE&r?11iJe@`E6B1<*?%W9fYEtA-im-H}pS(s^lx(eCtIssa>e6M(! ztDDN9yhJq3MiE+rrkwf)%YN5Qj;CUFngOZnb>Pm!G2+bVI9#jEpo^{?nwy7ir@eJS z9S1%~{Nf@j37UGlEpsJ%u$7c?bFw*RS^yOp>d*>oVRx~Pv zwE}D|YVd12msiQ*^*6)mh(PqBaHEl$Ouaf!4D;(5qQx?Ni_&L?^&oddnUBsHp3Ij% zwE9OrHhA2w`o~mL;2+sr5KQuY(U?5Cw$vQaFt8V-46urBSWp~OUXdSkp(hfFcd0z$ zux_w=^=KE=jpYMTlQr+{ZsP?o|2(XCnzfC3hS1?-ppog@eO7uZp~q zA&gQEq(jSKJVxJ{C71$xezo-jBB19=+qGd*w6~m9+xFJI3uTLi ziJ&gmy$j|xjPU(wiu8ahPGK*1Psrp&Z1bu-*SqB^cF2aCDE1xp3oGlW2je<&2i9gT zND?|Abgn%oALkQsKS$%01g##+Zdn&4TmoAnz)TW?u120!>tOXGEk?#FSd`$twET+f z0i)&vFy2dy-4Pa;6s(yd?g(ccjhQKQeGu1^6}GHOk3|n2zjr^Ou#ttR*)t&RQMBF#;ZhqR#4MN1BQ#hvg_3$I=3ekxdBGG_5;n`B1N#({tg3Tk5=J@emr| z{HWWF#g$9w-G*ZHaA5&(aXBcQb;k%CeW%a$edSYxwyp=61ab+vz@=v}>l+;$UlP9A z1NouP3I=}(2}5~x&y^XpAg$;Nj9+hAKsY0a5$G2@f|1-ldm~zzdNsdj)|kl=*V+vB z3spj#%K9oofiGa%FN5M=HLK;isOOHJK7vB%-X$OK`ipvxh){}49nN1!%OAckR{Xw2 ziTXpGm`JFu+nuNEQ#{%s7+m}PkCf1h45Cdo#}QaHBJ1PMV;J@dH*)LK$uYyXi5hW> z0A$){K$Bw2oN_iORN91_rt!M~f{+PQz>~kfaqGa?b z?-&|Uk%$|;0v~GJR6xREN{U5#`V7JAqf=#u zvFTl1uSy$Z-A_p&H)xgJ+>f{WeMfLpl6R@($02iMWZ&v(wKoju`G-8M%Wt2LuRDss z#EP|ml+(jJwY{IAJA`cA)R|d>@fySdwh*xaMmJ9E;Le*(tf}9}8_mD##L53AjWA6S z{3!;%NPkg}at|{=f-|&+Ta=;M=7!949O2CP)hxWK5TJTpv`a1epdexGFllI5%B*@V z$tGZ5Cl!ElsF5YaHHs&yfK)<>m5a$HM zzzB=cpon60uKNRT)$S$AO?*eT_8J<1CnTB7KOzLWbg%|^}Op`ZFC&6A9kXTq{&L9 z%g5WB&|v(U0pNE3>{WboAhu~iCXZ~u`Ujr`6-e-vJ(D0~22`=^jX*ziYHd!t6p`44B%r$)g)jDq7&h*Ri!BfD` zF`yZJ90b3ntq1un7=Z-gClsG+IWv|Y0lC-j={5zX$R0SV+!+aL!yZV5C&_|ufLv_2 zL`;Pe*@p+IjyL#wIit-X`v^t}U*<@vR3jmQNaH#ia^%r{}1c&FzCbGX&D9IoqKF^=@Nw;Hw_ZIsn6?wv_d*l!{* z?s`UpVsEEzqKtmn~M! zbKnFBJyN0{&zb^HdaRVqfS_tmm4(gR-xYai2HuzplHp_8;-^5^9Rhs;$@CBMvjvew ze#>-_`-A`tG%rd{I||?q7s{A5c6oFm1@M=Ry@|2Ag%F2s|CB5NQWG}2cXSd9(i5Bq zC>~^I+bT^Ek{d7q$&C^}wNe&LPH6|7reDq7zuO^hLTw5^LXOdujgG~F?`Za?Z0kz(!HcPPT?&^QzYaf>9XgT)0Aj!YUHtAm_L z!dGdSu-)EF5Ck)cSLkZRlEf%1Ia|`iP8W(yP*zODHZcKL(?FdsfTS1kQtIyziuE`Z zPh~d93gaaVfHPO62I#(#kEze#trh?245+e}qyYsqGQojpI=goY2WFW)jy#-1%))jA ziBt!KEi$5mW`@mZUgz9(+gC9iIIEL7*IM69EA4_gDod=9Z63|je3;)4wsm$FjBk0h zcw6$c=^28WG>xr5$sCp(!VoVayXGDd@X<~tV-7c-)tOTO}%7l25}ZE2U^`6Ko(vkp*Gb})DYt)z|Y+kKENTEox&Eh(hh4jo?Wz}Mz*LRR_Ryl%ht^3Z6 za&y}qSnVHeayM8^l=BI3R_4?Hqx#UIGw2km@xt-VY6|vUV;m0g{Q$djUtv>sDUitS{@;z z&%@_Mv)V*C&EpCtVQETK3%>#2e_uix_CW_<>bAp{i%j(;ZFK|kdkNJ^rZSFALz3iD zLJX>oKoiQ0JmhAzC6{~G{+eaF##Iq1Eu!rmUOG$WHx~9OTFvu1KR62VXrM%y!HV?S zT3Aw2mHf&I;UdrhH8O0H^JkH1xZb5@Jg#CmGDvB)qV!Lq%2!CO-af={5yshZy=7a^ zH5W3GcF*u(+a$penKv*KDzyEMtjJDQ1y`Hrm0&9`tot+50_>v#!PE5CxC*8_3a+DL zjK)?rS1g z#*;@I=#3oU@#8qmO2x{YA(xU>`)2I2h(@3etRaPsS zWI~EU_3$)%y!+P5I=J5bS{<;1x^Qt$H( zrb*T|&l*JO>3ux2pc=f4t64U3FP5?-``xpSj}IHQJx4mcX~VfE*Y&^$Vy`5DFnaXD zd<(-i(rL<*`UyPpgtoc#jMQk!g=VIyy~eD(7(qSlS8Z3=??{5ALEmX{I8sPm)XgX2NP*(IQ9>5XpQAtOPFRc1n$ij%u5lO}kxj z;H`Yua;2)7yo0j@S zdR?CpTRk2$_w;>Wx!s%T`DcOMf-v(_BKBUR(+*K9@yXfh^?GKgSMc{8K{`Cccynkj z8{jxePZN#D%wY@0)g)cjcva~BOosvWdb+U+IWSkB?_MhRm}0WvV=cJ{wLqHOQA?7I z=KUQj6Wi5BZw<+#2gN6+O(10rlr6AO9RG9{_ksv%Eo)-sRYGyQbYMH*uB7 zSBr@b@NZUT)Px#RrRUm&zlM$tBTFKL|I}t&DE>JoiV|=9BCx}nPfaO#gcOx108sA| z=mqAQI}o9D{?yHLJ}HDPa=tgnLPP8v>!L1wC0bDM{CwrrEM!_Pfm-XO6&x{8&C~O8 zc(1AMV*xzGq}GOLspVc8bzTfv{!)sDm-|)bR@iHBupJ%De;5Y5DJjr&5rBn3<5lgPuseZidm8JPb&v3Q{UP5LgEZO=l1gq~3o9C?>U(-`7oC zfT#vQ+1?D`X6R%J;$UcL2Vk@_1rW0`GBbYv!3wVJ`6U!8DI%yMA^pVzgw#z81Fmr8 zYl#(}Rxpr17|XHhGfqmXeL8fDq_yg}1}E|w8L>?yRBNK4^h73*Y z>evdQIBI*O^=VEJQ>Lg}qYGd+m{E*ti+86P#&zN6~qD>1A2I1vp;Lc?dgMeXUA;aarFS}33 zpSKPpP=U6?eNTMSj8s<}6sgizzxdo>1=zeF^H|bSj}3`bgfs>n`0;_(h>80vdJ5uTxtFfHAk(%s!%(kU(7-6`E5jUe5PG)PD{ zl1is^H;B~zgNOT}p6_1NXX$y)^LzK2wP$ASy=P_()tEDX21V}vAZxXO;mG~-ic*9d zooLFOki>s$%Fm(>@x!(ies#1st&_chIOyikq#suP8w)1rpk(7QI&m82KFcOJoHurHjugWFFxb2`+%6G{X#=R!L$VAUF_QF9vR?26B zr{strW_m}(5wr>|tNSq`4qA4lCSX34b;&RnAD*%JBMT`t6^DPdCr80D&&7?s>i!FO zBf(%{9eG=%_Z&{@J!pJy);n4GwB7@O%d~&A1qWxhjSC4whQ8JE1LK&?#kLeOVxMLb z$99|vzg71wj{2}g3tn$0-lGkEY5S%Jl#hQc?=%D<3XP{-34Fv>T=30VT=dnHY8~&)W<2(7IWlo(@vfBo=h$W<@%j+(W6{*J0!YssHHp1YnmG2WI^`>8$YC4&5 zZ@;T&-`a7~cPy~#0af(25ya1di|i#Q4Avl1=^ZE{vkTPgiEhwds5z2={>B{Qk~`f| zhO^WUtGC1Hcc+6xjK{lI?b>_lG>RLn4gt=n<=`ir^hHVb;sT{$8}ZA|kXVGFSoF8` z1vZOpHs8qa2eSy@v)HAQV=cW$I4yWcj&m81*=(kmmJjE{*pEagXY!|rkc)a^YrIzPz*rV+fs zXCK%0ZOTaqGr``P9z||U{5SnSBnogDzUUDXpMCxb_o~cHt=j5sCqbbvN%K|?zLk`7 zXrW$M*j<|5`%0t>Z=sbF`Z}Z7JegYChU$ZgMkYQ?#s+DvDHXbLG%Gjn#w1oXoP#9Gsr+su-G>~>tWa;?I9`fP6`Ofw^QQ&t!<46 zq;2SgKH1*BRv}{EzF%x#0@tAe$KSzN8n9f!ly2&RSh|4}9+{}!@gn=g}@FeMZ#)qEip$0F?j( zZn+gKozSeAS-IK;X7grD%cj}d(FRYT7Py>3zFP=KV6z!L(Hl98tHGr!Sm@j%tXwZx zs0>jNTQu(E?n1ks2{(h7`!Sb#@ZDO|rhQT^l8gC@THV)$A zD5K+Huc*&b41<)I#C8lDMqHV`A2^HF=Ng`52(F;Ep_3ZilO-R3^~P=crc1ui{s9}7 z>w_a>Yw#9y3Z?~ID}x{{-@SCA&!|OI$wwv=IrWE~~})Xzi3&pQpLv zHxdqM-$Ij461HZBLvw{^N+GwPo6nq5e2c4Vc9ffP!+s~o8^qKruwSmVIYHqKjpm$V z7^~PVLW*B56|jr8&IP{CkRbb(%W5YgQ0&@lYg!ltoJnutJAqbAp-54qAy!|CjAkhv+ZT>Us z(*b7vPdjh&xB)2+9AMUe*a`i|tpD&SqU`mq4Pes0f7f+y8x|lj$p-tQ2Mi?&9wJA2 zw@Y{~V18{JTakNucsA^~)xmk3r_q_dFPP2w;NbFf=F+w&JHs;K2-M|ZsmVJ^j=2c- zMt74YIhaexSC1r6fe9|k&iaBQ|9IG)ldft$fWUT)UtEt3GS8AwatE#bUBZy4r_v|h z^n4sc=AJ+(g#E(=uIB5B02Fv8_4D`DSMu zy=^#F_2>dm}P_US7qbOqa_`Jxbfd1%F3#a87RKW-V%RHhd# zCtjF(=*tEyTADQr_rq!(7!u92q(;Hb5ON5lDv?T^>{EyRsXu`ljsQa0Zd@iFPX}sp z&-CT{IVenlL-3p7_z3yk^_r;m;SAkg^ZO#RX3|SUXBsGI4{M`n3Qln5b~4-PY~_JY z%r7{Xs;5*vh@B3I9Mr*lP#W|}mB&k8*wjXGE^6x#;GPCc=5mO`V|c>F`Q*)}AZ#zA3Ism94^^w|%Q12n!jZ_EnFV zZnI@+0TT zzSd5+EX6@@Z57wEz5}-5a8yCmWkNo%u({ydVANJKDih33Q@uPx;|7xJ?d!&Ni`RX!|pC@Aq;ixaZEfz`LDp;`TyHzobEXIY%9)rKS(p*L$2@ z8(v!u`oAMSDO!VA>z}6bsD@%MENaNCS0>X6-`31KF{5l+7hur~6NOMIW7G8yS1eL> zn7}s`uS;COsDZRbSIvqoE3g1pEaGd`YOH{?PpM~?T%-xy7BPlq-H*m&u+2wgD*Cjt zIbB0CPZ@y4j$+1qJ5Ja=OBV4i*SF}aGQ0$enDhkH5QpL`ugQvP9?O-Jyf^qU!eZ+^ zq?xOtL7hC3Kbo_qSQyucgrMQLl$A)h7#Td$&rXugawRa*{X~Ogf|CWUwc{&yk;gG*K;DPkkLv_BEU2Q>d2F*O`}{aLj3bHKbdJA3GdF^my;+ zx0>MZ#vMnEg;B_7^pYvJJ%kxdU5f{-`*m(MEL|4rztv#v)i7r$L=^0v8kdkwM&?(2 z;^d+EPL;}pA|rooG<+bWqD-$cys|zyWDMpeBg+3?STAm5 z)fA+PD`W^n?icrsXu-E?eFRnXXw2$xuoIPGRo1lDz!I8vp zJG_vk=IY7zl`eNswM7{N<Pu~OM3lEXZ}_6Nm}h2#j=lUpRHD32kpZ&9hT3pymz_oy`^KJo6@^qT{*6&Lw&ui zkE;9{NSgHy=exrFm&oG*-rUyKr?D3BNa`IX_3-TV^aCh_`Y_i1u^($VIp&o^5u30V z-~l!suvh1w@57J(*VAUKUr%CQioZ@HBu2|sE&K77|2qg_mg#&JS&*(ih&9PxFjLIf zxH)(CA=8+t)(_yf@yD`y#C#vlF8D@x9k>WGYz~3oD^mh}RZv#d7%L-cVJDfVbtOv5 zBQ6F21u(@pDr3_pB81mNp})P$qyI+Psr9y|VM(8%SWui{=xZK5-KvgefXw0rMO?`X zx=Rh7crJW0xRwxL*vY`d@QR&d3gr0yNZms`<-!7tu9!mi@fI|^AQ_^z>-iOg0VJ;# z>Vm9Y)_pQ9#q5umlXnM1(x+4*!mm@MWK8TUN^@Uq!Llx$1C~ln!DTfHlKacRpiEaq zi}iG{IZI?Je5g6BcQV0yTOiWMaO>qGvB9bm*Hj)NamrMr^D}F&^@S)F#I2CxSRE_t zNzYcA06LiTB2qV(0eaYoZXiYkFBxx~;e@W?pN624!?tfpU7Ttjpo!zlB$ehX9mv?XLtx0ddbSBFCbur{~oY^ z&ixMjJz&&&zR_wV2c9H=fceqIR}c({^u#CDfRf!Mgo>?pAROgHxIoi&70S48@{Mqw zy575bfy#@q!GV^L^;GKXV_8s^7F4uHD_dc$zk+q%SLNU(yXx*e+bOsy99=0;^jw?DZx9ElNBlQ`#7e z`!$*Q930m|8^-5GPWGD z+6|)^*nhu;KEN;gb4ex#%)dNAcCxNk1Q4|h0c|1~MDTV2q86uXh(=SD zcwwdwT_@H_!z3KAN+{HL1gYvNsE?XS07?V@0RpI!J=m?7ydv|u=(9+P;D`-4Gb37# zg!cvcQ(uGxdI;JQs<`?H;6x2Iz^jgb-gZ3eWxx7ZpHXF% zqwiqPG_VEib`M9=;Y{*Hc%-CRi=8E88WZMh#dFPW}KkHo3F#~?gioyy%nK%K)P8CCX zTO1P)TE|3(n;1>Yt3nfDSGs^rw4LDBds=FBLjxM2(-nYiER#B(4V>n6$p%+!njBVf z7xhX>+Kp9GlekzltDJ!JlHyk{Tlt2`O&fzEb;FgjTDnh_YjhfvqEo=LKd|9 zdR}nXnZ1@@fUa(2+SXc>-n?X20yjq=z^J;4ck&TG_fRG%lAe^E-3H|eYpM+`<(zCG zvVxzp)2CA@?9ZdI$eqHkYj{TqR$o8i{8_1eYP_-4ua!D(S@u?++iG7O6ThOWWkVn= zbtatIj=8oqxz=c(>Gn#Hy8y0w7TS&b+a&dXDFLVXehlSWX?Z*zL6zz9EG;R5T8=8$ zQvM|d)TcCwOZ6PLz}mZY)U@v}=_~CoVn7-fQAf*%jwHxriou$PBTUG2K@FUV_$9ny zHJt4k z^H7B3mUbaKQ$uI?kla9&Gbbv7F_4R?Q3@$xPU?Ig7~J3ETDD8oS>K&pJQiPSLWnsH z^;l4SgLzHL-ZrgjT+*ts)QEU=e4nCwVwWpj>eybBCau0|rbA-!6^#adz1WE}naq?5 z?P0VYUoaXT)6i7+ISVPQiI`}%G>Dck-sSiw$&b+olqK&}G^qxKOAuXT542RteO(8b zs#C?KxxYx1Ei%v(VrSE)-G4cu86hq>*OhQRwK-De<9 ztm(Nf!BWrfRFWdr4!3++``~*!W}*vq!CJwMjuWEC9+>aFD`I~H4mzi+2}=K+6cnaH z83ZI$$*@iC#oF;g*;JKbEZ5#c~G4b*y~H%uB*Y$@fE~k zmnOtJVZMNRxQEK3G#x^q+=HXUogN*#$i4172Yx zu()B}gr3&RFrH@1)L8a?I6ts60*)emZI07?5061{`dT-$eF?gq3YL`<2T0cQ@)D{B zrK3J@=8H+upFF*C{(MKC8>0GjSX<{TUdX;zP zNIB$@lpRZ--p^T9l@gv>6J;Jl^bwU;i))cPsdflVQ>;1q%lLHYxp{=yI;GjqpNyz$ z3nHiTljF4D4p)H{tgXzj%936&#j!iF>f@>-Y3_hZqm|L3HE|oYv9rk*lqGa72hN+K z2lJ~#iZM)5Sq?gJsJrQ__*x5rFHtx1#uAQ1y;hIJ34}9S3CE(3K8o1lW|^K5280#j zi_4q=2ZR@{8=^8&?+}RN$xU6JS_>nUM5oi96^oXlYr{p}yy?QewD7uIYrrz+oIP3v z`nqf@!Vutw+0!F&O3f(Dk1MEoG7V#})oVX|7M_E5(ZlCQY&H1J(`P9{C3Py?TC3|r zfx@7KJ+6buLT#TJS7gbC=>o?jof!kp+jrtw@Zvd8y`$H?=9DGe67NuD&h_~Rieh!P z`;@{?{N`~0^~;9gaVPgtM$BjSH0mp@RDiB+I4oEpTI zI=sf|@5>)f$d^KvCJZ{mW@{^doYcs-Pl!09NHy!AzUEclqc zO*4kIkBxEJyfT`GU~^|nY%{$_EuIH&vfq|ksG*F8vlx#8rV62%OP#pvP`!gI}F-x^=SV2Vagud8P`6~9tSEGPFzW9+enlAmo?lcfsz#M9!Z z45_fO7L$wH%({G?QXC}2F|et0;|slF+8X84>snb&sidI$DZ5Babst(ERbXu?qLfd{O2uVdkW`+LwvUU2|Fs-cgMa*4lR#5(MnL zo+8Ur#Q{qZM^*tg_e)1N`7SHhX|KpndRCLj``7tQ6p~--hlc^?jm(Pu(agHu59Yy4 zvRhFO6vMbgdTsS1KV&iy!fqmD(D&e)Tf^}ZVftG(#1N5 z?9r2_{QpS+9RUeoZ&rR7IUoTXB>mqPU(XZ3$2GX>Gv$C6UtZ$h321a6NAvUcP!X?* zDxtzMNn)UZ+d?mOruUkGBc{ofR7>~ zby-<&%*P0Vg4j@srb9-Q&5~TnN-C8e+htHm0vy@g67$(_9OcKZY){vvq9pjK{&$CT z2$~BLQhj<7Z3GE2Q-M0^pn%R;^&7Kj_6<;?LeHF8v3(U~54h3BxRQXLl915RQVRhf zaP7QI9-q)js3IC!s^7@2>ZnNsBGQAXyrBOIjB^%q*Gl(G}GL}d% zZ2TB=nDBlyZV(nhav&+8WoAiEmMIJLk6KM}m*9D8@5DRe=?>Fj@}#Y!#OC%VySL5S zbW^m`%ZC>x#&yVqN42V9Zs|-qEjvs-jRG_kz7zJNBb_?TGs7hxkVJwC;=3I~?5%Q# zpxp3d`x*fo*R}I{yfhj>$EpePKI^a5@It6wkIiRs^(~D%|9rwjE5$dl7aAMAUEIg} z9Z4?6nE@=lTX1j?JheOVy^uSyn!2Bp7|HSsh??Z|D$RN4Abal`o!ffF^tc6FK$S)^7 zS_ZAl;n5x3c+wZK+NF4P!CFs6lWI4sCg7zV{LPj^`+32?;tI&P`+acn{b?$2rT*dj z)oGjPS9#y}@^X~TN(UA)JtFq@>pzpgbXnuW;(WYC*laF9?<#@kIa>6CQRtEaKvQ$d zxkkbcm35Rp_PFEoeD*rtR06#-*mCHnI}4<}aXCBHsY@M{h4RF1fy@c*t;Fn&IM&28^+*)fn@qP+=XWx9B=vGuB zw|zGZ1>0fu)wucAPa0Mv*REI?()GUh33$Mfjf59xs}~Z97Hfs$Th90RSPDbrR|PGg ztV0nEw+g*@?L}2a9iNbmbj--(EB2LGP`iKQ#3dXuclVl&8a|rSYrwXMT&*UU6@?$H zqT+LR`j3j&Zv+WTRY1-08}-xnQuMQ;&8JE*r-qKDaXFDV$v?Se<#joxFt2Nws=e0J zQxzj8&rPJmlu6)wq1EZL{L#FXJEhg@$RhRixv;_O2x*c;v*MXx< z`!4vzn}SN&G2526Z|LCc-VxM-Dalx?VRUfdw**h+B4Obq_{ozZtX1C~^M6Q(^+{y#HfG0R`Uvo0n`fCsyHL zP3^{Na3M=q;1`wNPRdlko@8W@Iqn^)7c@X`scaF7Y0F<&>AS+R0@rpTR2LFJ)$=h| zShKGN#YCi_k5%Zk)Dkl>9#vZ9b1d&uX}_3PbMp%1tRumb=269pQ&31_jYp2IlO4#b+n{(fz?JI%c|+9u_^9HsFy%XbE(D??`t zd%M?zDsaX-;<)Lv8CpW)Ih4OL?~%%_u_T+EsS7RLpdKSfM4HYmVX8ydCw{cec`Tjn za0hGK0}GB#^i7>rk~PHfs1QdFs`04dHL*9j1aRY4aNFYHjwNuF)^nV9@4(}wOdCQ( z??vOqxLoJomFM!b;jRU0$TF9x;riY#<{m*d9;(1HOxv}Teu`F|g7B}k_eJDXyip#h zl5JV3ht53Cz+0=Uh8-MB_OMuZ83>bLh|`y?V)I=PElQ{^Cr~@vsab{c2gFSlhLQ4G zJ+K_%xBh#e=HmfjtO>laygfyojebo?K&AN7 z@WNCJ?hoB>pCHaoPD}Edn8xoBj{Op6RbH6}y;cht}1{-*TTJfL`rgDdrL8`9Z zb%Q6jJ4$e12a{;G_M9$0CL+d3(`Qw+zI_Npgh-rzBX}?N@d+P?4KmlkmT{98(9{qj zkphwUZZ0!o{JqLh^vTLOp8L}>vtTYpF?+nlEzcB3QU;LCSjCDm@-?DuU`xQ=WVpRr1rl75gR|? zazy3WbCTrX7`@8TGURB6>J?{cG^mYX91?jBFRtSz3rqa2`3JPzqSHqeRlj=s5VtC@ zZ!0k%s|!tF*9q;IE|z}T$Uyp9NKH@F%pU8Hiq`o7m2!|HG+SSwI(<>4lA0>n-+tjl zC~A903q!Cf{94?WUKS=hywjrfvng(HI?i&A@n(gfIhL?Z!VR`d50LDa6Ww9Inb zb``Jy(uenHCm?r~xVOHX?q|TBFTLGUKj}&UIXN(KU#46cZ!9J^-TXKQ)O@&dUH5x| zbDeX-p*4!6jP(7I4C5#9kUn!bElpk3^hTRAhV#qs9kP4+Qwy?t?K)`JT9{#x@Ozss z@uCHwjBg3#?V>*gCmB?5>M^RL-sP`aSSXoz8IIq6%T5svEW1_S6)M_ zDP>^JuYKh!bGfIg`{un2B)EU4v6v+#K0nO~cVwrTP%5R~Rki4NUdbC@|7Za&3pHd& zc?uA}BafjlFQ6v=+45TYdTFp3jnEuw2E%CGvfPW+pPAFusyoKcJ0XOIikK*q-v zmuZmSThz)+b_z&v^-Og1P2k&KS!$s|r*svaYx`lXo*yaX3?5;T(`M-QUG`26clja> zh7inIt`%!Ki&k}eYJo}Xz{07#Bi0Rb%ueVuJ<_iW0-2=1BwEdnlpc6J6Ab|)da*Tb zi_8Z{Iy7Mm4a1V!Lj=yBla^Ok_bDy!%8Jp(@nT*r_;dHPJzJ8bJ-2Myx9#nrwBr=Y z2`=`z9G5zGuAeXQ@Oh~wdr4~9WrM2M7J4ra%Tob|ZO-Btc-nll9G^7Z)>R_tS`FQ( z`=)>C7v~$mKPmX?V_Gps&I-+N5y!_B5IXaQ06MhytXl0V;5p{Kn3X5SWVLms`6zxL zW^BYtf-D+_zXySk7OjwldBMNkUCAM`wwu<(wqAv|a8a3Gz4SsyP~%Ysg41Ku-ITq@a;!(;xw{G%_NiAQaPGzCgGcBM{SMeuf;$g8*f=-w* zDe+rrB-d&!aRw(ogHRq`_6fkvSP*OMLrGerme=MO8Y1|XobUVoX9hF1hVkrs3`&I) zD`pz0HD={5yUs8IB<10GvKe>6-FKK*Ash;*$qlBP;hedPDSl3Njb)N_3rmht<|`xV z!CzlNo2){-A#l1)gj>-y%mHy}SbQ~)PW&DvS>*Ip$qaUHcG^eBqc_IE31tG`s;+e= zUhNpNd8f8Ar=0Z+V26hW?UI+@(!;^CbibIY*txWFjWU5t0QU2S!Zi=8mj{h>^u@z| z6)%JL^>knJy^P7W>^Z+%R}EM#_574jJA@+r)OasL!U*~&+RigB0?yL9W(i$r$Df~8 zOb}7;NMch#M_VIV8Z8$`$z;a2s}a z-E36j8HAm#9keQput16zG$w;DD}l3d8@%KBMjTK0Yh}Ptuiw4Aw#{x~TnJZkbfDT9 z!H$oM(^o8!G)YJ=x8kow0hcCCng;sp5R>DzeW!DR_LPa0tr5C$vf|51@!x<@IxzJnu$wImPSjeGxIF*dgVQa$ipkYbOM zfe^|7BNeGkpLwYnN1xEaa zFgqAgd_OXgPN&N&kW}`iUkN4p0O$GO`Ebs6)!T{F?|?Ju(*XNJ0ShvIA3T4p#jtu< zi*fg^%bP<~NNS1|=O_|Nra68}0Wr;WjE#`}Q%w*Hd|h>&{*B8)>SgWR^h*M+YtPI1 z)oL%7xKn8}n5FJy$gU2Exoek0t@stJd<*KqHX1`NZRWl*>C~fxw1xfsCYPR4R!Fp> zTrkke@s|@c^)JUEm951gwjprTBbL*7<`16>8m=k@IH)U3VJ4l8H$jnfBSR6q8J06Ej6B7=f=JM8g3x$2Ab ztMB}{6qFH^lVfw39MIdO@lo{Fx{rZoh3GT)%8X*JSz_#gQT&f%ayI^EZ=V}V1y8O!Dx zef847=#!0q72Rnq7O2|Ekys?5YgwCn%ky4IvOP13ZTX6ve1@L<=fa`eHO|?al`00a zvsNvZ>4kOBUZWVS5D?21^ihKaZ0oTc8RXhFNHXe4#pHyrqc{~Si#3+Kb4X!M@?OUX z4pBVIm&{tmB*lFMt4C)I{2aVTKf$|YZdUh*vuM+xXq!eZ-^s})dU$~T^r~=a+&{;Q zx+G=I6cDrAr8OSU?iUHsF_N;L$vYHmwOVBZUXeCM()b#AArUdGUVqm&Aj!+{PA}&t z7wN`$xmv5DRc<7o`qx3Z;tDjI6eY)e3coxi?M~^OETxrDpcjGBl*DB`ootFb*7!8J zX_T@%DyU&;U%<45VH}JoPUA?W1F|&VOTv!vn6D^f&=f*+o@jU?DywTPa%vcH46mxu zX*yelR7wlyUJ78Cy%Qk^X?N*Uer=FBZm4n)ZJL}7UyCRKL=;An0jH)?Qv5?d30bm$ z6uDaXfNP}!hG~%8Us`QEQ=CIE8%T&4+%TP#DKSgeQ_RW6rMTOZ&Jl-Xf@+{ssHC4m zS$jo3cS1`VsRt{FbrPOOB8Lq~tSTDEk>QA;p%sHCv%ZpYZE4Fc0R`V#NY1bJsJisi z+s}uu5sF3-c(?Fsz+UivK-68@#XB2rc^fR~HOuZKsiVPHZr>g%5%1E%HG+=VD*l0O z$D?%MsN zW3S=D#1V_u+=Ei}E(==Juif_Sw&H{r}kJJ9(LXxTAn8SZ>**LPM_lj*zdoVQK)!W zO*UKEqF3d&Zgic_a(^E%DKgYsi*SAA<>wYoeYy1h4IB_oCQnZOVK$NKZB0bG&1K!@ zrp#x^BNJKH`AZ0VdKN58?arnyrp&HB=k>(&u%lk(5}wE#6DkF+_O4}>0qh*v z5bx*Z)({F1CDRGM7Q+J;=G(#j8W8_ZCRI&b0Lf$vbpW^)&c$LvCfUVeBt=+d7ycZy zl$NM~8tUWWl^(oFIpToAmwi$ACX2`~QM)@mPK`GfK6MVI{Ma3-&j1oz4M*v$5Dd}) zJ~eRBr(hd^Ji>SEfQWpLNDtR+`CYW$pc+qe4|1;ZTPS3rGjHf&YO;ogeTN0jS|j6Be0+?rLyQ?4Ob@jZ@#0Rv}Tmt`>7suNVH z0;ALzJ5@icD*Um?B4nC_fpz54>TE$7A)HqHG4nW0cJt%BogM}=tvgczIQrMCTp7%- zN-8DgBuv-YwObm|;bmi&O-Ca>n8s>>Sw@0U_Ccn6+c$Soi)2wwQMIp)D`Ce~fm_)o z<;y)19mIW?Y~j zfEh+RhFya?gUtCs)djAA9%%~NB~q@h_Us&~TO^3c!!3|hb|ywEWS)2{z%-4=;@h5ajCJ&B9h34OLUp8#VxwNu&|s5Xew)gQ3^so%9=nU{~^M~ECW->QE=;-`%jmsG3dJdJ@q3N+ddZE`LO zJwDC4S6j>FH0N~Ojo~%f{hAP>)wHiWC9PKwTbqX3%f&y4h$rbJMyI?j&dmxgS-mMQ z!6*vK>LwP^FEIyWGZQgU3pI87pq}#8HLZ@eNEBq2B%RUfS8p+cyhZ_)3AQjTTATc)C)O-IeWUil%F#BCW|di&cntoL1t+0SLiZX<`Gq$Q#%^{`wm;xX@s# zvd(Q5H1yc5G`G(}CyqX(kzrAe*1kv`Qypw-W6-qQEQ+ZlmG83eHGS3?F;m)4Vq9Qm z=e&Zg63F4MsQ2y&%{UfKfYUnKMW^OqDr7gnQ6g&4FoTbyx0b-9ZxBjPwSg@$K(>Ao zOiL!+5KJf9KU2&Xfc;vgflgxELYxL?6DG&A@`jVXK# zT(=~8_k}3%8AFXET;5xpu_mx1i0pzy$$WGesGt>eqqrDOPdg^wu-GhDuK|)A1*WX= z{*a_kh8oe$m{MV}+lwKeNqyLrm^24Sl*DaQhZJe3sT>c*&ZvPgNE_6!8rIbamsO2> zhcJz$n)U#z>VX0KXUIl-?OZ_MYnb* zWKC?y-p@W3HlUCkw8@!D0!J8{qbYJ`T`~3{+oUp%td}mVI;Ce=XW;D{9dqXDqA$5R zn!=uwv0A``w!x9`yCO`x&re!;$fk{bHt?qb*|Z}dn??j=)6XZ5U&*w(%^U;lTY}Mh z0Zc$G^2j+W8|ol^acAe53RLb?4$20Oa3{_a<_Ef<>JRq!_beAYey%rQP=VwI1gV)tnydp>{jz*r@@Z!j8YGHi2C?goNNn_n3>t)T7?42=ELJbsfo)Bg zI;07qq9*cH8{9KFKV;CHoG(nQ>D_Ey%!h{)h7=po>R*cK=AV<@zECt=-O(kb!dps3 z&Pkp?x^3a6th0wI*+hZ$#!ezU9xXBaF$~C{H)P_CYHqSs8{PpjXaj2q@M1#TL1hw# z8jW#hoxaLk`BCv3-up9_>wOXLM!Z8^&^y*)m;{J>Clx)LC^?)>QK6U66_IlSA03-o zWj?Y>euX8*q{Yl*qDGsML$585S&g40hFy=xogn;<=~Uq>?VTP|NaXEzTODV8xHr0s zj>>)2U0@^R^oAIUOf~fxls6Mw)H3|V}q{cZA@aEyDn}g#7{Cn0!@ecMi9r$pFGn2$_%aUyWWI5 zy%K6WvUEMegz1*DD^XjrP+xqEYP!MPLjpaNn?^Cb{*XY+JS5OcMieV?WD!pZwDn98 zotiw{&-L0L6osh`xem>Jwn@E}sr6^GWI;@DG3lV%xs=FhkYG!MO4^a>ui`{M31=IH zolH~-fFLT6Tv@giV;6t_#y}b?D@9`bex5e4b6A3w;G9VhN-)YcKm<5I47!g+%8*95 z{bHurqtSpiUny%&jHxV}$FY!XsW~qeTAT=PQ$K=Xh@sSKzoV1I9H&hJ-QIr~mIoSt z?*+oPl_m6*i@Vl(K(JI6dAr6B^+_%MrOT4wuj|41j_{g(o$xY!x>LKj&UDQO$o@ZT zY<6RtYdp2q{ZL{k4&9y7X@zg_&1Ty!xr?3bF< zM)$iHYZd#*z!Y(!ydVh2K$8xHBR9Qa5kKS@lr!;f>wB20$FZ@mjubgyJR7`L@17XjmJY97>__a=GzEMS_BFhyCG922j z+^wFJ0P7l1j1X=H=EDuJ3Lg}9=m#tb_f{#qybA*A2z+dw%4=$ zwZ73vu1U6&0hL!)NLa{JDr+dhDh9H`PYp4R2vb1M*$=#2+HXGhzS}1n^9K+gv>k3z zVYwp#U)1jP`Ry^(GU_TOa1fH`UI1p`G}@MWt)&bx!vMNHsSvpdW-N7 z{L*rZ{RtxT(*VVWN2WF)*cv273AUS70Dap!X0g!0S4PnPn{uVr??nv}ep7z%1aP^J%D?tG{|4x7N(a9WodABae_uKz5PYot zD~WX%D|*1QmO3mD5aIs<9-6@MZ-BI!wUMHcHK1JLQ^CaNt>rP8qYINc4m?lFdl>Ss ztpy465~_=;)(3Za zBt6;ZqzB(ro$bC50et&{_fV4IIcX5E;P_ui|IMW#7uQG7lYI^<&h8Vdzuy_m0<1mH z0=Px`8;A(^Z;+*)n~A-RleHm4OA~>c?5bHdprW4>~kRJ$6hg=3?O=BK=qP4Z6F~0-+;aR z{}=Gjc5T{rPc_UM1;#-4dgMLX|M33au7UEuyod1tP5m#Py^+Ijoi4-b-J|%WN91qz zKM+Wu20)JL<}4!_jSmErMEX#D=lNYC_U{mV8*39f7d_|aAyb9krK$kjl26bl`y3YD zFd{~{tacj-mjfh19K}VASx^pd{gAxBmU3B|@secBq9}y|M008ZQ_kL{GC;J@w;Hu8b;ba~l zRNn!A$bN$g`}_@cv^UbTGP5?32lNgj`=@e8&zm?PqvO%pH{-v!Pxeo4>vrvDc0kQp zJAlKCzj0}N|6lGeys|0aYW_KJ;rS)Jp#60Tx2rynu0Pp7FQIa*GA+y5Tr zs(}CR68?@d700hA=i>T3QlIQ|>cemcn~}z82Dq=z0gnG3<$%!tm-=UvpGI@tgI~}m z`y8qW7|q+SNPc($A`Bq>F$U2^`~_8(w+9S(disE4K>ix^IOIp69tL&29sfr!pX_ts zgO?EpG(gt?FP#Bn?eAmI*8d6oZw@-b1wQhg>~mfi;5L4RZ@qL!4g_@b=Fj1QAo_0y zf1Ppimvb(j4UhNk;+LRD*pqz@TP_(9^A4mOu_gur0?Bwd66N_=q}uS`V1GL1w<*F< z3~0z{kB~>!lYP$O2<;IYe7hK>2k0lcfQBUcjde5kUszĩrNZhr?)uO*n(A#)U% zJuUQ+`DC9nAA;x9+E+OSU=jm1-~FE8q%HkF%s<_Hx>=zTbOA+3J5m{`ah^Sg_?Wj&b+lkI*Ok97+ZlaN*jiq=^Ag4?qZiZ`;O${}1}7 zqZg}Oqz~h54DGLZ?8!c7K0IZZQ!m7c0;ZNlz#rJ(;)!qkPsKR@ zRek^ZA9d!x@46>-cY57N^(XtM`lMnS9oN6A%isQ^&hoeV`pB-^_shX)LH*lhrjrx&W@!2sQzUCRIgEICHwc5!3F~U6;-zXuHH#x@TmS||5R^i zdNug(>R!PAsI&jA&Vl>>@tzUi_@(}2|5QK6xN_qD*OplZ`A41OZ}oSkztk5l4Ii)l z$^NCz{fUX=U)4py{!!=rTOEGxm-_g&(WCm4{ZqXc#>giLFwMjPCR6C&dQ$=TFZI8* z8G(}?+XbuH_)+`GKG#N)pA_S7BX@@cTzLl|MS%KE+XV2RAA0KJ0o2bs5=Y4LdVlFC z@W`3Tqx6$~F3lTl|4Ij(LmU+_ppydzADG{y6QO{CB(3F~{^fatY;|583h=Bb@b>l! zDr^FHg6r_{N&C6@^gH`kr^QgxNPy9s1|a@>n@qqziT^ozeL0a(hXiPEwch;~ZNRGl zli#1Me}5GKiwyj*Py2am04MVbKm#uH$xeO$mFhpg;D^`G@x7OA-hd$X0vh^1&krvF zsR}JX^p&Xa!;_b^jUM0``tN9x%WqIVr1WVv7LQH-WdDTxUK#%RoV|eh2zg#7{<#+~ z`ga}y%x9L5fG7JOz~4;+@xL*BcnaFXe{32+<3(>!&)xa^Y`foQ+36LZ0k@Ab-D=`27WAj`AbquTDdgk?^SaWJw5P9{>Fx~q53-&39wuzZ1^eO-AzPU(^V%FS@v?H{$Dth^LBAj1O!;syMQ!vq3i K@B<`fK>q`OUArLw literal 0 HcmV?d00001 diff --git a/Quellcodes/alg_gr_highscorespiel/MyServer.java b/Quellcodes/alg_gr_highscorespiel/MyServer.java new file mode 100644 index 0000000..660956d --- /dev/null +++ b/Quellcodes/alg_gr_highscorespiel/MyServer.java @@ -0,0 +1,112 @@ +import java.net.ServerSocket; +import java.net.Socket; +import java.util.Scanner; +import java.io.PrintWriter; +import java.util.ArrayList; + +/** + * Die Klasse MyServer verwaltet einen ServerSocket. Sie erstellt einen ServerSocket an einem + * bestimmten Port und wartet dort auf Clients. Es können mehrere Clients gleichzeitig angemeldet sein. + * Eine Klasse, die diesen Server benutzt, muss MyServerSocketListener implementieren. Sie wird dann + * über die Methode neuerClient informiert, wenn sich ein neuer Client am Server angemeldet hat. + * Beschreibung + * + * + * @version 1.0 vom 15.11.2012 + * @author Thomas Schaller + */ + +public class MyServer extends Thread { + + // Anfang Attribute + private ServerSocket ss; + private int port; + private boolean aktiv = true; + private MyServerSocketListener listener; + // Ende Attribute + + /** Dieser Konstruktor erzeugt einen neuen ServerSocket, startet ihn aber nicht sofort. + * @param listener Klasse, die MyServerSocketListener implementiert und dann über neue Clients und eingehende Nachrichten informiert wird. + * @param port Port, den der ServerSocket abhört. + */ + + public MyServer(MyServerSocketListener listener, int port) { + this.port = port; + this.listener = listener; + try { + ss = new ServerSocket(port); + } catch(Exception e) { + System.out.println(e); + } // end of try + } + + // Anfang Methoden + /** Liefert den Port, den der Server abhört. + * @return Port + */ + public int getPort() { + return port; + } + + /** Liefert die lokale IP-Adresse des Servers + * @return IP + */ + public String getIP() { + try{ + return ss.getInetAddress().getLocalHost().getHostAddress(); + + } catch( Exception e) { + return ""; + } + + + } + + /** Startet das Abhören des Ports und das Annehmen der Clients + */ + public void starten() { + start(); + } + + /** Verwaltet das Annehmen der Clients (Diese Methode bitte nicht direkt aufrufen, sondern mit starten() aktivieren). + */ + public void run() { + aktiv = true; + try { + while(aktiv) { + System.out.println("Warte auf Client"); + Socket s = ss.accept(); + System.out.println("Client empfangen"); + MySocket ms = new MySocket(s, listener); + listener.neuerClient(ms); + } + } catch(Exception e) { + System.out.println("Server beendet!"); + } // end of try + + + } + + /** Bricht das Abhören des Ports ab. Es kann nicht wieder durch starten aktiviert werden. Dazu muss ein neuer Server erstellt werden. + */ + public void stoppen() { + aktiv = false; + try{ + ss.close(); + interrupt(); + } catch( Exception e) { + System.out.println(e); + } + } + + /** Meldet, ob der Server aktiv ist. + * @return true, falls der Server den Port abhört, sonst false. + */ + public boolean getAktiv() { + return aktiv; + } + + // Ende Methoden +} // end of Server + + diff --git a/Quellcodes/alg_gr_highscorespiel/MyServerSocketListener.java b/Quellcodes/alg_gr_highscorespiel/MyServerSocketListener.java new file mode 100644 index 0000000..ec80167 --- /dev/null +++ b/Quellcodes/alg_gr_highscorespiel/MyServerSocketListener.java @@ -0,0 +1,14 @@ +import java.net.ServerSocket; +import java.net.Socket; + +/** + * Listenerdefinitionen für MyServer . + * Klassen, die mit diesen beiden Klassen arbeiten müssen diese Listener implementieren. + * + * @version 1.0 vom 15.11.2012 + * @author Thomas Schaller + */ + + interface MyServerSocketListener extends MySocketListener { + void neuerClient(MySocket s); // ein neuer Client hat sich mit dem Server verbunden. +} diff --git a/Quellcodes/alg_gr_highscorespiel/MySocket.java b/Quellcodes/alg_gr_highscorespiel/MySocket.java new file mode 100644 index 0000000..a8d9309 --- /dev/null +++ b/Quellcodes/alg_gr_highscorespiel/MySocket.java @@ -0,0 +1,196 @@ +import java.net.ServerSocket; +import java.net.Socket; +import java.util.Scanner; +import java.io.*; +import java.util.ArrayList; +import java.nio.charset.StandardCharsets; + + + +/** +* Die Klasse MySocket verwaltet eine Client-Server-Verbindung. Sie wartet auf eingehende Nachrichten und + * informiert ihren Listener, wenn eine Nachricht eingangen ist. Die Nachricht kann dann beim Socket abgeholt werden. + * Außerdem können Nachrichten in Form von Strings versendet werden. + * Der Listener wird außerdem informiert, wenn die Verbindung zusammengebrochen / beendet ist. + * Der Listener muss das Interface MySocketListener implementieren. + * + * + * @version 1.0 vom 15.11.2012 +* @author Thomas Schaller + */ + +public class MySocket extends Thread{ + + // Anfang Attribute2 + private boolean aktiv; + private Socket socket; + private BufferedReader eingang=null; + PrintWriter ausgang=null; + MySocketListener listener=null; + + // Ende Attribute2 + + /** Dieser Konstruktor erstellt einen MySocket aus einem schon vorhandenen Socket und ist für die Verwendung durch MyServer gedacht. + * @param s Socket, der durch MySocket verwaltet werden soll. + * @param listener Listener, der über eingehende Nachrichten und das Beenden der Verbindung informiert wird. Der Listener muss MySocketListener implementieren. + */ + public MySocket(Socket s, MySocketListener listener){ + this.socket = s; + this.listener = listener; + try { + eingang = new BufferedReader(new InputStreamReader(socket.getInputStream())); + ausgang = new PrintWriter(socket.getOutputStream()); + aktiv = true; + this.start(); + } catch(Exception e) {; + System.out.println(e); + e.printStackTrace(); + aktiv = false; + } // end of try + } + + /** Dieser Konstruktor erstellt einen neuen Socket. Er verbindet sich mit einem Server an der angegebenen Adresse unter dem angegebenen Port. Der Listener wird + * über eingehende Nachrichten und das Beenden der Verbindung informiert. + * @param address IP-Adresse oder Domain-Name des Servers + * @param port Portnummer, die der Server abhört + * @param listener Listener, der über eingehende Nachrichten und das Beenden der Verbindung informiert wird. Der Listener muss MySocketListener implementieren. + */ + public MySocket(String address, int port, MySocketListener listener) { + this.listener = listener; + try { + this.socket = new Socket(address, port); + eingang = new BufferedReader(new InputStreamReader(socket.getInputStream())); + ausgang = new PrintWriter(socket.getOutputStream()); + aktiv = true; + this.start(); + } catch(Exception e) { + System.out.println(e); + e.printStackTrace(); + aktiv = false; + } // end of try + } + + // Anfang Methoden2 + /** Verwaltet das Annehmen der Nachrichten (Diese Methode bitte nicht direkt aufrufen, sie wird automatisch gestartet). + */ + public void run(){ + try { + while (aktiv){ + if (listener != null && eingang.ready()) listener.nachrichtEmpfangen(this); + Thread.sleep(5); + } + } + catch (Exception e) { + if(socket!=null)try{socket.close();}catch(Exception ex){;} + System.err.println(e); + e.printStackTrace(); + } + aktiv = false; + if (listener != null) listener.verbindungBeendet(this); + + } + + + + + /** Liefert die eingangene Nachricht. Diese Methode bitte nur aufrufen, wenn der Listener über den Eingang einer Nachricht informiert wurde, da die Methode sonst bis + * zur nächsten eingehenden Nachricht wartet. + * @return Nachricht + */ + public String holeNachricht() { + try{ + + + if (aktiv && eingang.ready()) { + + String s = eingang.readLine(); + System.out.println(s); + byte[] b = Base64.decode(s); + /* for (int i = 0; i < b.length ; i++) { + System.out.print(b[i]); + System.out.print(" "); + } // end of for + System.out.println("");*/ + + return s; + } // end of if + } + catch(Exception e) { + e.printStackTrace(); + + return null; + } + + + return null; + } + + /** Versendet eine Nachricht an den Server. + * @param nachricht Zu sendender Text. + */ + public void sendeNachricht(String nachricht) { + try { + //byte[] b = nachricht; + /* for (int i = 0; i < b.length ; i++) { + System.out.print(b[i]); + System.out.print(" "); + } // end of for + System.out.println("");*/ + //ausgang.println(Base64.encode(nachricht)); + ausgang.println(nachricht); + // System.out.println(Base64.encode(nachricht)); + ausgang.flush(); + } catch(Exception e) { + System.out.println(e); + e.printStackTrace(); + if (listener != null) listener.verbindungBeendet(this); + aktiv = false; + } + } + + /** Bricht eine bestehende Client-Server-Verbindung ab. + */ + + public void trenneVerbindung() { + aktiv = false; + if (socket != null) { + try { + socket.close(); + } catch(Exception e) { + System.out.println(e); + e.printStackTrace(); + } + + } // end of if + socket = null; // end of try + } + + /** Liefert den Socket der Verbindung. Kann benutzt werden, um dann aus dem Socket weitere Informationen wie IP-Adressen oder Portnummern zu ermitteln. + * @return Socket, der Verbindung. + */ + public Socket getSocket() { + return socket; + } + + /** Liefert den Status der Verbindung. + * @return true, falls die Verbindung noch aktiv ist, sonst false. + */ + public boolean isAktiv() { + return aktiv; + } + + /** Räumt alles auf, damit der Thread nicht weiterläuft (bitte nicht aufrufen). + */ + public void finalize() { + // Schließen der Streams und des Sockets, wenn + // die Verbindung gelöscht wird wird + try { + trenneVerbindung(); + } + catch(Exception e) { + System.out.println(e); + e.printStackTrace(); + } + } + // Ende Methoden2 +} diff --git a/Quellcodes/alg_gr_highscorespiel/MySocketListener.java b/Quellcodes/alg_gr_highscorespiel/MySocketListener.java new file mode 100644 index 0000000..edcd1b7 --- /dev/null +++ b/Quellcodes/alg_gr_highscorespiel/MySocketListener.java @@ -0,0 +1,17 @@ +import java.net.ServerSocket; +import java.net.Socket; + +/** + * Listenerdefinitionen für MyServer und MySocket. + * Klassen, die mit diesen beiden Klassen arbeiten müssen diese Listener implementieren. + * + * @version 1.0 vom 15.11.2012 + * @author Thomas Schaller + */ + +interface MySocketListener { // Der Listener wird über folgendes informiert... + void nachrichtEmpfangen(MySocket s); // am Socket ist eine Nachricht eingegangen. Diese kann dann mit s.holeNachricht() abgeholt werden. + void verbindungBeendet(MySocket s); // die Verbindung wurde beendet oder ist zusammengebrochen. +} + + diff --git a/Quellcodes/alg_gr_highscorespiel/ScoreSaver.jar b/Quellcodes/alg_gr_highscorespiel/ScoreSaver.jar new file mode 100644 index 0000000000000000000000000000000000000000..8628b68e7882ee27ff90c5164b84bb25629c1787 GIT binary patch literal 39537 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 literal 0 HcmV?d00001 diff --git a/Quellcodes/alg_gr_highscorespiel/ScoreSaver.java b/Quellcodes/alg_gr_highscorespiel/ScoreSaver.java new file mode 100644 index 0000000..b63e85f --- /dev/null +++ b/Quellcodes/alg_gr_highscorespiel/ScoreSaver.java @@ -0,0 +1,363 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; +import java.util.ArrayList; +import javax.swing.filechooser.*; + +/** + * + * ScoreSaver: Nimmt Ergebnisse vom BinärSpiel entgegen und speichert sie als CSV-Datei + * Erzeugt damit Datengrundlage für Highscore-Tabelle + * V1.1: Rundenzeit vom Server steuerbar, Fehlerkorrektur + * V1.2: Gesamtzeit vom Server steuerbar + * + * @version 1.2 vom 18.02.2019 + * @author Thomas Schaller + * cc0-Lizenz ZPG IMP Klasse 9 + */ + +public class ScoreSaver extends JFrame implements MyServerSocketListener { + // Anfang Attribute + private ArrayList clients; + private ArrayList names; + private Table csvDaten = new Table(); + private static boolean ende; + private MyServer server; + private JLabel jLabel1 = new JLabel(); + private JButton jBServerStarten = new JButton(); + private JButton jBSpielStarten = new JButton(); + //private JNumberField jNFPort = new JNumberField(); + private JList jList1 = new JList(); + private DefaultListModel jList1Model = new DefaultListModel(); + private JScrollPane jList1ScrollPane = new JScrollPane(jList1); + private JLabel jLabel2 = new JLabel(); + private JTextArea jTAPunkte = new JTextArea(); + private JScrollPane jList2ScrollPane = new JScrollPane(jTAPunkte); + private JLabel jLabel4 = new JLabel(); + private int changeClientListAktiv = 0; + private JLabel jLabel3 = new JLabel(); + private JButton jBSave = new JButton(); + private JButton jBClear = new JButton(); + private JTextField jTFTrennzeichen = new JTextField(); + private JLabel jLabel5 = new JLabel(); + private JLabel jLabel6 = new JLabel(); + private JLabel jLIPAdresse = new JLabel(); + private JNumberField jNFRundenzeit = new JNumberField(); + private JNumberField jNFSpielzeit = new JNumberField(); + private Timer timer1 = new Timer(1000, null); + private int spielzeit = 300; + // Ende Attribute + + public ScoreSaver() { + // Frame-Initialisierung + super(); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 618; + int frameHeight = 441; + 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); + setTitle("Score-Saver"); + setResizable(false); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + jLIPAdresse.setBounds(20,8, 590,50 ); + jLIPAdresse.setText("IP-Adresse: Server inaktiv"); + jLIPAdresse.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 44 )); + jLIPAdresse.setHorizontalAlignment(JLabel.CENTER); + jLIPAdresse.setForeground(new Color(150,0,0)); + cp.add(jLIPAdresse); + + jLabel5.setBounds(20,68, 150,25 ); + jLabel5.setText("Dauer einer Runde (sek)"); + cp.add(jLabel5); + + jNFRundenzeit.setBounds(210, 68, 50, 25); + jNFRundenzeit.setInt(60); + cp.add(jNFRundenzeit); + + jLabel6.setBounds(320,68, 150,25 ); + jLabel6.setText("Gesamte Spielzeit (sek)"); + cp.add(jLabel6); + + jNFSpielzeit.setBounds(510, 68, 50, 25); + jNFSpielzeit.setInt(300); + cp.add(jNFSpielzeit); + + + jBServerStarten.setBounds(8, 98, 290, 25); + jBServerStarten.setText("Server ist inaktiv - Server starten?"); + jBServerStarten.setMargin(new Insets(2, 2, 2, 2)); + jBServerStarten.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + jBServerStarten_ActionPerformed(evt); + } + }); + cp.add(jBServerStarten); + + + jBSpielStarten.setBounds(304, 98, 285, 25); + jBSpielStarten.setText("Spiel starten"); + jBSpielStarten.setMargin(new Insets(2, 2, 2, 2)); + jBSpielStarten.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + jBSpielStarten_ActionPerformed(evt); + } + }); + cp.add(jBSpielStarten); + + // Spielteilnehmer + jList1.setModel(jList1Model); + + jList1ScrollPane.setBounds(8, 153, 290, 185); + cp.add(jList1ScrollPane); + jLabel2.setBounds(8, 130, 110, 20); + jLabel2.setText("Spielteilnehmer"); + cp.add(jLabel2); + + // Scores + jTAPunkte.setEditable(false); + jList2ScrollPane.setBounds(304, 153, 285, 185); + cp.add(jList2ScrollPane); + jLabel3.setBounds(304, 1300, 110, 20); + jLabel3.setText("Ergebnisse"); + cp.add(jLabel3); + + JLabel l = new JLabel(); + l.setBounds(20,342, 80,25 ); + l.setText("Trennzeichen"); + cp.add(l); + jTFTrennzeichen.setText(";"); + jTFTrennzeichen.setBounds(110,342,20,25); + jTFTrennzeichen.setHorizontalAlignment(JTextField.CENTER); + cp.add(jTFTrennzeichen); + + + jBSave.setBounds(150, 342, 190, 25); + jBSave.setText("Daten speichern"); + jBSave.setMargin(new Insets(2, 2, 2, 2)); + jBSave.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + jBSave_ActionPerformed(evt); + } + }); + cp.add(jBSave); + + jBClear.setBounds(370, 342, 190, 25); + jBClear.setText("Ergebnisse löschen"); + jBClear.setMargin(new Insets(2, 2, 2, 2)); + jBClear.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + jBClear_ActionPerformed(evt); + } + }); + cp.add(jBClear); + + addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent evt) { + ChatServerGUI_WindowClosing(evt); + } + }); + jLabel4.setBounds(185, 382, 229, 20); + jLabel4.setText("(cc) 2018, Thomas Schaller, Version 1.2"); + jLabel4.setForeground(Color.GRAY); + cp.add(jLabel4); + + timer1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + timer1_ActionPerformed(evt); + } + }); + timer1.setRepeats(true); + timer1.setInitialDelay(0); + + // Spielteilnehmer + + // Ende Komponenten + + setVisible(true); + + clients = new ArrayList(); + names = new ArrayList(); + server = null; + csvDaten.addColumn("Name"); + csvDaten.addColumn("Punkte"); + } // end of public ScoreSaver + + + + // Anfang Methoden + public void jBSave_ActionPerformed(ActionEvent evt) { + JFileChooser chooser = new JFileChooser(); + FileFilter filter = new FileNameExtensionFilter("csv-Dateien", + "csv"); + // Filter wird unserem JFileChooser hinzugefügt + chooser.addChoosableFileFilter(filter); + chooser.setAcceptAllFileFilterUsed(false); + // Dialog zum Oeffnen von Dateien anzeigen + int rueckgabeWert =chooser.showDialog(null, "Punkte speichern"); + + + /* Abfrage, ob auf "Speichern" geklickt wurde */ + if(rueckgabeWert == JFileChooser.APPROVE_OPTION) + { + char separator = ';'; + if(jTFTrennzeichen.getText().length()>0 && jTFTrennzeichen.getText().trim().charAt(0)!= ' '){ + separator = jTFTrennzeichen.getText().trim().charAt(0); + } + + csvDaten.saveCSV(chooser.getSelectedFile().getAbsolutePath(),"header",separator,'"'); + } + } + + public void neuerClient(MySocket client) { + this.clients.add(client); + this.names.add("?"); + } + + public void changeClientList() { + changeClientListAktiv++; + if (changeClientListAktiv == 1) { + do{ + changeClientListAktiv--; + DefaultListModel newListModel = new DefaultListModel(); + for (int i = 0; i < clients.size() ; i++ ) { + MySocket s = clients.get(i); + String n = names.get(i); + newListModel.addElement(n+"("+s.getSocket().getInetAddress()+":"+s.getSocket().getPort()+")"); + } // end of for + jList1.setModel(newListModel); + jList1.validate(); + } + while (changeClientListAktiv > 0 ); + } // end of if + } + + public void nachrichtEmpfangen(MySocket client) { + String s = client.holeNachricht(); + System.out.println("Habe Nachricht empfangen:"+s); + String[] ss = s.split(":"); + int i = clients.indexOf(client); + + if (ss[0].equals("exit")) { + s = s+names.get(i); + clients.remove(i); + names.remove(i); + client.trenneVerbindung(); + changeClientList(); + return; + } + + if (ss[0].equals("user")) { + names.set(i,ss[1]); + if(timer1.isRunning()) { + client.sendeNachricht("round "+jNFRundenzeit.getText()); + client.sendeNachricht("game "+jNFSpielzeit.getText()); + } + + changeClientList(); + return; + } + + if (ss[0].equals("punkte") && jNFSpielzeit.getInt()>0) { + jTAPunkte.append(names.get(i)+";"+ss[1]+"\n"); + TableRow tr = csvDaten.addRow(); + tr.setString("Name",names.get(i)); + tr.setString("Punkte",ss[1]); + + } // end of if + } // end of if + + + public void timer1_ActionPerformed(ActionEvent evt) { + int rest = jNFSpielzeit.getInt(); + if(rest > 0) { + jNFSpielzeit.setInt(jNFSpielzeit.getInt()-1); + for (MySocket c: clients) { + c.sendeNachricht("game "+jNFSpielzeit.getText()); + + } // end of for + + } else { + timer1.stop(); + jBSpielStarten.setEnabled(true); + jNFSpielzeit.setInt(spielzeit); + jNFSpielzeit.setEnabled(true); + jNFRundenzeit.setEnabled(true); + jBServerStarten.setEnabled(true); + + } // end of if-else + + } + + + public void verbindungBeendet(MySocket client) { + if (clients.contains(client)) { + + int i = clients.indexOf(client); + + clients.remove(i); + System.out.println("Verbindung mit "+client.getSocket().getInetAddress()+" Port: "+client.getSocket().getPort()+" verloren."); + for (MySocket c: clients) { + if (c!=client) { + c.sendeNachricht(("exit:"+names.get(i)+":alle")); + } // end of if + } + names.remove(i); + changeClientList(); + } // end of if + + } + + + + public static void main(String[] args) { + new ScoreSaver(); + } // end of main + + public void jBServerStarten_ActionPerformed(ActionEvent evt) { + if (jBServerStarten.getText().equals("Server ist inaktiv - Server starten?")) { + server = new MyServer(this, 44444); + server.starten(); + jBServerStarten.setText("Server läuft - Server stoppen?"); + jLIPAdresse.setText("IP-Server: "+server.getIP()); + + } else { + server.stoppen(); + server = null; + jBServerStarten.setText("Server ist inaktiv - Server starten?"); + jLIPAdresse.setText("IP-Server: inaktiv"); + } // end of if-else + } // end of jBStarten_ActionPerformed + + public void jBSpielStarten_ActionPerformed(ActionEvent evt) { + spielzeit = jNFSpielzeit.getInt(); + timer1.start(); + jBServerStarten.setEnabled(false); + jBSpielStarten.setEnabled(false); + jNFSpielzeit.setEnabled(false); + jNFRundenzeit.setEnabled(false); + for (MySocket c: clients) { + c.sendeNachricht("round "+jNFRundenzeit.getText()); + c.sendeNachricht("game "+jNFSpielzeit.getText()); + + } // end of for + + } // end of jBStarten_ActionPerformed + + public void jBClear_ActionPerformed(ActionEvent evt) { + csvDaten.clearRows(); + jTAPunkte.setText(""); + } // end of jBStarten_ActionPerformed + + + public void ChatServerGUI_WindowClosing(WindowEvent evt) { + if (server != null) server.stoppen(); + } // end of ChatServerGUI_WindowClosing + + // Ende Methoden +} // end of class ScoreSaver diff --git a/Quellcodes/alg_gr_highscorespiel/Table.java b/Quellcodes/alg_gr_highscorespiel/Table.java new file mode 100644 index 0000000..ef79e02 --- /dev/null +++ b/Quellcodes/alg_gr_highscorespiel/Table.java @@ -0,0 +1,895 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setAttribute("name", s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + if(cols.get(i).getAttributeValue("name")!=null) entry.setName(cols.get(i).getAttributeValue("name")); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getAttributeValue("name")+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getAttributeValue("name").toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("name", title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getAttributeValue("name"); + } else { + return ""; + } + } + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + if(columns.get(j).getAttributeValue("name")!=null) entry.setName(columns.get(j).getAttributeValue("name")); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, das ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getAttributeValue("name").toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + Element e = current.getChild(name) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + try{ + Element e = (Element) current.getChild(name) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + try{ + Element e = (Element) current.getChild(name) ; + return Float.parseFloat(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + try{ + Element e = (Element) current.getChild(name) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/Quellcodes/alg_gr_highscorespiel/jdom-1.1.3.jar b/Quellcodes/alg_gr_highscorespiel/jdom-1.1.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..a287727868572178c408ef6ffad0a5f27baed34b GIT binary patch literal 151304 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 X1_MNU2nZG6&kium-(m+sHpKq{DK?UD literal 0 HcmV?d00001 diff --git a/Quellcodes/alg_gr_highscorespiel/readme.adoc b/Quellcodes/alg_gr_highscorespiel/readme.adoc new file mode 100644 index 0000000..1164d6f --- /dev/null +++ b/Quellcodes/alg_gr_highscorespiel/readme.adoc @@ -0,0 +1,12 @@ += Material : Highscorespiel + +|=== +|Zuordnung| Programmierung +|Klassenstufe| IMP Klasse 9 +|Bildungsplanbezug | Dateien einlesen und verarbeiten +|Werkzeug| Java +|Autoren| Thomas Schaller +|=== + +== Inhalt +Einfaches Spiel (Dezimal in Binärzahlen umwandeln), um Daten für eine Highscoretabelle in einer Klasse zu erzeugen.