diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..04f614e --- /dev/null +++ b/.classpath @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..59c9252 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + PongMitDatenbank + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/bin/.gitignore b/bin/.gitignore new file mode 100644 index 0000000..2ecad0a --- /dev/null +++ b/bin/.gitignore @@ -0,0 +1 @@ +/package1/ diff --git a/bin/Ball.class b/bin/Ball.class deleted file mode 100644 index b11a698..0000000 Binary files a/bin/Ball.class and /dev/null differ diff --git a/bin/GUI$1.class b/bin/GUI$1.class deleted file mode 100644 index f948e35..0000000 Binary files a/bin/GUI$1.class and /dev/null differ diff --git a/bin/GUI.class b/bin/GUI.class deleted file mode 100644 index f8d3ff4..0000000 Binary files a/bin/GUI.class and /dev/null differ diff --git a/bin/Game.class b/bin/Game.class deleted file mode 100644 index 3f21c04..0000000 Binary files a/bin/Game.class and /dev/null differ diff --git a/bin/Lives.class b/bin/Lives.class deleted file mode 100644 index af1d4f0..0000000 Binary files a/bin/Lives.class and /dev/null differ diff --git a/bin/Main.class b/bin/Main.class deleted file mode 100644 index d3120b3..0000000 Binary files a/bin/Main.class and /dev/null differ diff --git a/bin/MySQLConnector.class b/bin/MySQLConnector.class deleted file mode 100644 index fc2885d..0000000 Binary files a/bin/MySQLConnector.class and /dev/null differ diff --git a/bin/Picture.class b/bin/Picture.class deleted file mode 100644 index 33b4fa0..0000000 Binary files a/bin/Picture.class and /dev/null differ diff --git a/bin/Player.class b/bin/Player.class deleted file mode 100644 index 9b4f54e..0000000 Binary files a/bin/Player.class and /dev/null differ diff --git a/bin/Wall.class b/bin/Wall.class deleted file mode 100644 index f6bcd36..0000000 Binary files a/bin/Wall.class and /dev/null differ diff --git a/bin/module-info.class b/bin/module-info.class new file mode 100644 index 0000000..0b6889d Binary files /dev/null and b/bin/module-info.class differ diff --git a/src/module-info.java b/src/module-info.java new file mode 100644 index 0000000..3688c83 --- /dev/null +++ b/src/module-info.java @@ -0,0 +1,5 @@ +module PongMitDatenbank { + requires java.desktop; + requires java.sql; + requires mysql.connector.java; +} \ No newline at end of file diff --git a/src/Ball.java b/src/package1/Ball.java similarity index 98% rename from src/Ball.java rename to src/package1/Ball.java index f35659f..087ebd5 100644 --- a/src/Ball.java +++ b/src/package1/Ball.java @@ -1,3 +1,4 @@ +package package1; public class Ball extends Picture { private static final long serialVersionUID = 1L; diff --git a/src/GUI.java b/src/package1/GUI.java similarity index 71% rename from src/GUI.java rename to src/package1/GUI.java index 8af8d5e..a515989 100644 --- a/src/GUI.java +++ b/src/package1/GUI.java @@ -1,3 +1,4 @@ +package package1; // Imports: import java.awt.event.ActionEvent; @@ -24,8 +25,9 @@ public class GUI extends JFrame { // extends JFrame --> Jede 'GUI' ist auch ein JPanel panel; // Auf dem Panel werden alle GUI - Elemente gespeichert JTextField eingabe; // Eingabefeld für Namen des Spielers - JButton enter; // Ein Button, der wenn er gedrückt wird, die Daten in die Datenbank einfügen - // soll + // Ein Button, der wenn er gedrückt wird, die Daten in die Datenbank einfügen + // soll: + JButton enter; JLabel info; // Ein JLabel auf dem ein kurzer Info - Text abgebildet wird // Die folgenden JLabel werden für die Bestenliste benötigt, welche unter den @@ -41,15 +43,13 @@ public class GUI extends JFrame { // extends JFrame --> Jede 'GUI' ist auch ein public GUI(int score) throws SQLException { // Erstellen des Konstruktors mit der Eingabe score // Initialisieren der Datenbank - // datenbank = new MySQLConnector("LenzundTilman", "Xc37zTVG8", "10.16.225.2", - // "pong"); + datenbank = new MySQLConnector("LenzundTilman", "Xc37zTVG8", "10.16.225.2", "pong"); this.score = score; // score wird initialisiert mit dem Wert des erreichten Scores (Kontakte des // Spielers mit dem Ball) - // datenbank.connect(); // Herstellen der Verbindung zur Datenbank: - // spielNr = datenbank.getRowCount("highscore") + 1; // Errechnung der aktuellen - // Spielnummer + datenbank.connect(); // Herstellen der Verbindung zur Datenbank: + spielNr = datenbank.getRowCount("highscore") + 1; // Errechnung der aktuellen Spielnummer // Initialisieren der GUI - Elemente: panel = new JPanel(); @@ -57,19 +57,22 @@ public class GUI extends JFrame { // extends JFrame --> Jede 'GUI' ist auch ein enter = new JButton("Enter"); info = new JLabel("Congrats! You achieved a Score of " + score + "! Please enter a name!"); - spielNr = 1000; // Initialisieren des Frames: this.setBounds(300, 300, 370, 400); // Setzen der Position auf dem Monito und der Größe this.setVisible(true); // Sichtbarkeit des Frames - this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Progamm wird geschlossen wenn das Fenster - // geschlossen wird + // Progamm wird geschlossen wenn das Fenster geschlossen wird: + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.setTitle("Game " + spielNr); // Der Titel des Frames wird gesetzt. + // Der Inhallt des Panels wird auf den Frame projeziert: this.setContentPane(panel); this.getContentPane(); + this.setResizable(false); // Festergrösse ist unveränderlich - this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Progamm wird geschlossen wenn das Fenster geschlossen - // wird - this.getContentPane().setLayout(null); // kein Layout + // Progamm wird geschlossen wenn das Fenster geschlossen wird: + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + this.getContentPane().setLayout(null); // Layout wird ermöglicht scores = new JLabel[11]; names = new JLabel[11]; @@ -79,7 +82,7 @@ public class GUI extends JFrame { // extends JFrame --> Jede 'GUI' ist auch ein scores[0] = new JLabel("Score"); names[0] = new JLabel("Name"); gameNr[0] = new JLabel("Game No."); - + panel.add(scores[0]); panel.add(names[0]); panel.add(gameNr[0]); @@ -89,21 +92,17 @@ public class GUI extends JFrame { // extends JFrame --> Jede 'GUI' ist auch ein gameNr[0].setBounds(0, 120, 150, 20); // Anfrage an die Datenbank wird gestellt: - // rs = datenbank.executeQuery("SELECT * FROM highscore ORDER BY Score DESC"); + rs = datenbank.executeQuery("SELECT * FROM highscore ORDER BY Score DESC"); // Erstellen der Top 10 Liste: for (int i = 1; i < scores.length; i++) { try { - // rs.next(); // Auslesen der nächsten Zeile + rs.next(); // Auslesen der nächsten Zeile // Setzen der Labels mit den jeweiligen Inhalten: - // scores[i] = new JLabel(Integer.toString(rs.getInt("Score"))); - // names[i] = new JLabel(rs.getString("Name")); - // gameNr[i] = new JLabel(Integer.toString(rs.getInt("SpielNr"))); - - scores[i] = new JLabel(Integer.toString(i)); - names[i] = new JLabel(Integer.toString(i)); - gameNr[i] = new JLabel(Integer.toString(i)); + scores[i] = new JLabel(Integer.toString(rs.getInt("Score"))); + names[i] = new JLabel(rs.getString("Name")); + gameNr[i] = new JLabel(Integer.toString(rs.getInt("SpielNr"))); scores[i].setBounds(300, 120 + i * 20, 150, 20); // names[i].setBounds(150, 120 + i * 20, 150, 20); // Poition(und Grösse) des Panels der Top Scores @@ -113,11 +112,11 @@ public class GUI extends JFrame { // extends JFrame --> Jede 'GUI' ist auch ein panel.add(scores[i]); panel.add(names[i]); panel.add(gameNr[i]); - + System.out.println(i); - } catch (Exception e) { - System.out.println("Fehler: " + e); // Falls etwas schief läuft + } catch (Exception e) { // Falls etwas schief läuft + System.out.println("Fehler: " + e); } } @@ -126,8 +125,6 @@ public class GUI extends JFrame { // extends JFrame --> Jede 'GUI' ist auch ein panel.add(eingabe); panel.add(enter); - - // Setzen der Positionen und Größen von 'eingabe', 'enter', und 'info' eingabe.setBounds(50, 50, 250, 20); enter.setBounds(50, 80, 100, 30); @@ -146,12 +143,12 @@ public class GUI extends JFrame { // extends JFrame --> Jede 'GUI' ist auch ein } - public void button_ActionPerformed(ActionEvent evt) throws SQLException { // Was passieren soll, wenn der Button - // gedrückt wird - //datenbank.updateDatabase("INSERT INTO `highscore` (`Score`, `Name`, `SpielNr`) VALUES ('" + score + "', '" - // + eingabe.getText() + "','" + spielNr + "')"); // Einfügen der Daten in die Datenbank + // Was passieren soll, wenn der Button gedrückt wird + public void button_ActionPerformed(ActionEvent evt) throws SQLException { + datenbank.updateDatabase("INSERT INTO `highscore` (`Score`, `Name`,`SpielNr`) VALUES ('" + score + "', '" + + eingabe.getText() + "','" + spielNr + "')"); // Einfügen der Daten in die Datenbank this.dispose(); // Der Frame wird geschlossen - //datenbank.disconnect(); // Die Verbindung zur Datenbank wird getrennt + datenbank.disconnect(); // Die Verbindung zur Datenbank wird getrennt } } diff --git a/src/Game.java b/src/package1/Game.java similarity index 97% rename from src/Game.java rename to src/package1/Game.java index 8a2e1c1..d1ca47b 100644 --- a/src/Game.java +++ b/src/package1/Game.java @@ -1,3 +1,5 @@ +package package1; + import java.awt.Color; import java.awt.Font; import java.sql.SQLException; @@ -84,7 +86,7 @@ public class Game { player.setBounds(player.getPosi('x', 0), player.getPosi('y', 0), 10, 100); //delay(3000); lastT = System.nanoTime(); - while (lives < 0) { + while (lives > 0) { dt = System.nanoTime() - lastT; lastT = System.nanoTime(); @@ -124,6 +126,7 @@ public class Game { } frame.dispose(); + @SuppressWarnings("unused") GUI Gui = new GUI(score); } diff --git a/src/Lives.java b/src/package1/Lives.java similarity index 81% rename from src/Lives.java rename to src/package1/Lives.java index 7ff395d..7db009e 100644 --- a/src/Lives.java +++ b/src/package1/Lives.java @@ -1,3 +1,4 @@ +package package1; public class Lives extends Picture{ public Lives() { diff --git a/src/Main.java b/src/package1/Main.java similarity index 86% rename from src/Main.java rename to src/package1/Main.java index 5a39a9e..57f5933 100644 --- a/src/Main.java +++ b/src/package1/Main.java @@ -1,3 +1,4 @@ +package package1; import java.sql.SQLException; public class Main { @@ -6,7 +7,6 @@ public class Main { public static void main(String[] args) throws SQLException { - // System.out.println("test"); System.setProperty("sun.java2d.opengl", "true"); Game Game = new Game(); diff --git a/src/MySQLConnector.java b/src/package1/MySQLConnector.java similarity index 61% rename from src/MySQLConnector.java rename to src/package1/MySQLConnector.java index 29a9888..9057b6d 100644 --- a/src/MySQLConnector.java +++ b/src/package1/MySQLConnector.java @@ -1,15 +1,19 @@ +package package1; + import java.sql.Connection; import java.sql.Statement; import java.sql.SQLException; import java.sql.ResultSet; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; +// Diese Klasse ist für die Verbindung zur Datenbank public class MySQLConnector { private MysqlDataSource ds; private Connection conn; private Statement s; + // Erstellen des Konstruktors mit den richtigen Daten: public MySQLConnector(String user, String pw, String server, String db) { ds = new MysqlDataSource(); ds.setUser(user); @@ -18,27 +22,30 @@ public class MySQLConnector { ds.setDatabaseName(db); } - public void connect() throws SQLException { + public void connect() throws SQLException { // Methode, die die Verbindung zur Datenbank herstellt conn = ds.getConnection(); } - public void disconnect() throws SQLException { + public void disconnect() throws SQLException { // Methode, die die Verbindung zur Datenbank auflöst s.close(); conn.close(); } + // Methode, die den eingegebenen SQL Befehl auf die Datenbank anwendet: public ResultSet executeQuery(String query) throws SQLException { s = conn.createStatement(); ResultSet rs = s.executeQuery(query); return rs; } - - public void updateDatabase(String whatever) throws SQLException{ + + // Methode, das einen neuen Datensatz in die Datenbank einfügt: + public void updateDatabase(String whatever) throws SQLException { s = conn.createStatement(); s.executeUpdate(whatever); } - - public int getRowCount(String table) throws SQLException{ + + // Methode, die die Anzahl der Datensätze der Tabelle zurückgibt: + public int getRowCount(String table) throws SQLException { s = conn.createStatement(); ResultSet rs = s.executeQuery("Select * From " + table); rs.last(); diff --git a/src/Picture.java b/src/package1/Picture.java similarity index 97% rename from src/Picture.java rename to src/package1/Picture.java index fcd38b9..f083368 100644 --- a/src/Picture.java +++ b/src/package1/Picture.java @@ -1,3 +1,4 @@ +package package1; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; diff --git a/src/Player.java b/src/package1/Player.java similarity index 99% rename from src/Player.java rename to src/package1/Player.java index 9713dee..5a309d5 100644 --- a/src/Player.java +++ b/src/package1/Player.java @@ -1,3 +1,4 @@ +package package1; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; diff --git a/src/Wall.java b/src/package1/Wall.java similarity index 97% rename from src/Wall.java rename to src/package1/Wall.java index 098a200..614c5b6 100644 --- a/src/Wall.java +++ b/src/package1/Wall.java @@ -1,3 +1,4 @@ +package package1; public class Wall extends Picture { private int pos = 0;