From 5059220f31116ea4491aeab1079e84a223d84425 Mon Sep 17 00:00:00 2001 From: Lenz Wiechers <> Date: Mon, 17 Feb 2020 00:04:11 +0100 Subject: [PATCH] Uploading the project --- README.txt | 3 + assets/heart.png | Bin 0 -> 238 bytes assets/player.png | Bin 0 -> 6263 bytes bin/Ball.class | Bin 0 -> 1214 bytes bin/GUI$1.class | Bin 0 -> 772 bytes bin/GUI.class | Bin 0 -> 3232 bytes bin/Game.class | Bin 0 -> 3623 bytes bin/Lives.class | Bin 0 -> 272 bytes bin/Main.class | Bin 0 -> 601 bytes bin/MySQLConnector.class | Bin 0 -> 2086 bytes bin/Picture.class | Bin 0 -> 1195 bytes bin/Player.class | Bin 0 -> 2071 bytes bin/Wall.class | Bin 0 -> 898 bytes src/Ball.java | 56 ++++++++++++++ src/GUI.java | 157 +++++++++++++++++++++++++++++++++++++++ src/Game.java | 131 ++++++++++++++++++++++++++++++++ src/Lives.java | 7 ++ src/Main.java | 15 ++++ src/MySQLConnector.java | 48 ++++++++++++ src/Picture.java | 24 ++++++ src/Player.java | 108 +++++++++++++++++++++++++++ src/Wall.java | 47 ++++++++++++ 22 files changed, 596 insertions(+) create mode 100644 README.txt create mode 100644 assets/heart.png create mode 100644 assets/player.png create mode 100644 bin/Ball.class create mode 100644 bin/GUI$1.class create mode 100644 bin/GUI.class create mode 100644 bin/Game.class create mode 100644 bin/Lives.class create mode 100644 bin/Main.class create mode 100644 bin/MySQLConnector.class create mode 100644 bin/Picture.class create mode 100644 bin/Player.class create mode 100644 bin/Wall.class create mode 100644 src/Ball.java create mode 100644 src/GUI.java create mode 100644 src/Game.java create mode 100644 src/Lives.java create mode 100644 src/Main.java create mode 100644 src/MySQLConnector.java create mode 100644 src/Picture.java create mode 100644 src/Player.java create mode 100644 src/Wall.java diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..905d2ce --- /dev/null +++ b/README.txt @@ -0,0 +1,3 @@ +Programmiert von Lenz und Tilman. + +Funktioniert nur im Netz der KKOS. \ No newline at end of file diff --git a/assets/heart.png b/assets/heart.png new file mode 100644 index 0000000000000000000000000000000000000000..cca13137031f9b1638844433c921f2ef676c2d71 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&V!3HE>w#^4|SkfJR9T^xl_H+M9WCij$3p^r= z85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33J>#Bd(*uBNay(re zLoEEy_IUF(CK4ZX+6^B9$fc7$Yy85}Sb4q9e0G!8BE&u=k literal 0 HcmV?d00001 diff --git a/assets/player.png b/assets/player.png new file mode 100644 index 0000000000000000000000000000000000000000..251c0fa7d85db0d20d7e339033dd0076defc12af GIT binary patch literal 6263 zcmeAS@N?(olHy`uVBq!ia0y~yV15C@9Be=l-^Ev+04c`eAa^H*b?0PW0y!+{j=qiz z3>*8o|0J>k`J4qFk;M!Qd`Cc-ajG_-Gy{VKkEe@cNJZS+>l+yx40sM~nDW2Ajqi^D z|D{LLHTSZCx*9^y#{;Q^iH__*4ns2^ki*C(3nZC%tbinoL|m(XWWzk3-AO*(hJd(S=RcfQm9`1AD}fEnCLAR?eWu&UJr zG=apbQwjEbTcE9O`;JvzxBa@~xlfkn1;nyIOWAYlf#nA4R&~#gF^T*Lfq1=U+gnc= zwfJ9b2*he$-QlKMspIz?*9q2U1?;H73eCi>{|QQ zMAdS)C)NVrakuA6>)Pb+nV}>EdeTUtS)2U%{Yc7u8fnV%TR_VGG+LzmbS?{Nw4zxc zv*Nh+qrI1#w*T1Ltg=si#jCJQi_KDpn_95r)CsjBjhUk@+jg+ZPS{AXyj)rmNL4(~ z-*Q|lU=C3hh-?LPXDzTQFCJR8Fi)a>>E4p+SQ^3`Op&bYurqt!@o7Y{EKg%~&vh!= z_{6WjEV1V8`4xN7k(fzIGA{kVAlr-5^cZ^ijZ-D4B52|p9g*XZR;ZO8sFlrgjqxOd zHa^>_p7D<0+HdOm7j&9>_Zf1g-g^ea)UTYO&(sIbF!-4v5nSc7m&L%;aVC;aorQBO z+edGQ)QL)mVT@1-jG`EpddC|Y_hyZ@S0B-1Zk#gvDRKjEcAv{al!qrq+d+6X$PI&M zn=H@Q!NZg232#RgMW1T7UDeN`19^0!fG*rZ7I(=bNd}ZbvmpuVq6AYlJBu;ijNlrh zG(_?ScduhSa}1GVnByIx2cx7Y zDUR%UwgyKb>aqqY+`K2qTQ3 zV#FoD5&k7X%agRalV*3*f&!Z!W82d#KZ7aE^X=kCv=9PI%s8~}R5nGh+f)%u{{ucY BxAOo1 literal 0 HcmV?d00001 diff --git a/bin/GUI$1.class b/bin/GUI$1.class new file mode 100644 index 0000000000000000000000000000000000000000..f948e356e54d25028e542f84c86048ff8e417bf1 GIT binary patch literal 772 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 OvtfjDDuoMTg5nqHHZq9- literal 0 HcmV?d00001 diff --git a/bin/Main.class b/bin/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..d3120b3095500b47816c258c0fe9e76bbef7c313 GIT binary patch literal 601 zcmZuuT`vPs5IwibwyX35_5Dp!9yIYph!?@j`bvd}r`x)zE8AUmZ-t-biIDgKev~+O z36Xl4xpQXboSC`rA1`kJ*0JayC6L~iI&hE{C|t`sS@mVmtRB{{Rl^AMZ0bOpErG7e z(kW}V!%O9&3)vjH(Ib%ebf6B}t-6X%WZhQ+B`<79|5QfW#@}GtTp4HkQPm5ll zT)FUmHESl)L36|ExI6a^bz^iG#12XVLrGP9>sM>X-cK%rL4ji24pwY>^>QV=Q9;ws zpiBi5wK?es#vF|PS*`XE8`a8T91{Y)u`)*y`y%rouvY0DrxRJ~gd9v!a!If*Ra zGHP<+fq(Y1XRwt#gIf#RQA6!&d$_EqQV&=-stn+8M{LY-gV2cPUp06@7(Fw&0dCL@zUVv+FQ2E#M_5q3-5@g zhZ>+2Xk5z9{%5>3li zBn3;q(uHcESF74PP#8V0W-W|s+OIk+O)w{ZA6i(zB1=&4G+VdXzX}8Gi8bZCG>b1R ze1->v_o5y#^RtQdKb+1UrCk2=5%NCwsg;X|huN#XuG}|MEuKgW)Fy)Jp{WW)g z-mO-G2%eID!${j?J*bwPqV~GLQR&WUhhxSo1A7VXf^7Im@FML7~0WO^z&R{J<7=Y@e?bhxwV9 z?^q~dm+0yV8wIK81SGYa-B*ap*#H=eOpIJ9HKw{JNn0K7?5?Mh9OxeYj|7MWVnXZZ^q@j{9j`L z&{-JW=;1erUcLo=7(pDjk-&S@PS=Cr25$1iaMX?xg6zh)3z=P-I{`n1aqhy@PtaEg zla$HnmVrD=iQKf(0;Y!BhnQ}mi5g!6OmWaemPBdWh^+9zIUW~iBUTAIynBp$3fxQ| zgO7O2akqgs#2LQA#ICkEPc)r#JkG#p1gw21ac7tJWGVF*6 zJ5ayetXLAOCal65R?Y~rXU+tBjoemz{Ro@vrmY&jZRC6mTVZqJ7~2ZJH1m(s h4Ui^~al)8j!6(}|m}!EU!H)*a2pK!!z%gFR{{Y=qx3B;J literal 0 HcmV?d00001 diff --git a/bin/Picture.class b/bin/Picture.class new file mode 100644 index 0000000000000000000000000000000000000000..33b4fa067ff74df245120fe0d2f0f7eec8d53a00 GIT binary patch literal 1195 zcmZ`&T~`uO6x|ol!4VP%Kg!Iotbi0M?L$E;Q3``_EsM2$ybMNl$2?+rPWuL#}M``;| zGwSKBBCiUaAz}+l<9bC{wq_b{3mXhsg_Z9!LEl8 z!z@G4G5Z-XjKvcdf-^EAn3OSx+Y)Y3>it4$O!@Mw&$eX?jyA)h((6!ZC!9%#MFjR4`T1lwiVl>j>KBrY1lzLWEj}AEYp(l7|Rl# zczrs7+A6mklFBwWLFzxSoQ7sI3>Ccr zAeI4xH+$~qMd#WaVLJ>neSZII5`#}1QEB^LZs-3nBarZp!_|WlZ}m7xpfQS^|BFH1 zp@OTzodFsNk6z04!z^{uPt(gt;sY3@U80*0K{`<&hG`AaOP8#!-&(SRa2Ju?E|gtm ztb>WW$GEIa({hZN4sLwG%~G<9#O{0tWJ-NPxWtqP%98&J9(^XX0Lf+%SwdSQyeaw< z7@^lu(z-&nD3&mWRZQS1S(0R-U-1mjX?IWS$PvmMvD&~UFE^_lw|t S5}1U7yJUyR{S}#fDE_-{CVyL%g`noM@j**$yCx8M0TzyJN? z&j2pqRu};T&2yXfmZ*dgG7z3~ie9ZE!e};dbi=-DXYG4lR@@b?m%S#o@=nzguBaG@ zS4G9KHw&UtbxQ8y^rQh}#z1SXo9NcZ&YCcF@HrEQ&}yJ9@3`W6 z?cG&TS+G|($weYxDw0E+Ow#ukL*6@1l^o@DUoIJFamBqwpS~FF$p(ATJ7R0DBC1tM zN6Nq8Gab7sTgQ7waT()bTrtr7-?pkC6BBsFKy+Pr?6mGqFg?U}8H9R7llMQl+4OnO zF5a27%l-{wM0Hba3R}U7&|BClON3$Oo@2jd$8s}6)1iqzAT$~MmBWA>2FJ-^v{))t z)*RRNq+D|B|C-0M)dOdBx21G+(s>Go?N8?<+@@;Db&3WEz7QII@Y5emIbW((iek!< ztj9F58Oa0sSun_76QVeZFe0>D_&Ngg1G0n4X8+Vog{Ya*P&0+0X39d%6or~82{ls- zoMp}=j&M9mZ<~38oG)03o*!_`O7zvyZzWFDF<`}`bqreZwK~#PuntQO!&V|wN7m}8 z|#5lI2nP5%Y364oZIZnZypq$ezpCOb{YV;)*KhNksT^uiRMSd>u z+e&ECx=1TP`x3@{upiM6a4&P}d%SFYhci2fTcM}Oc9HbgM|aSw5p#1`A`C(zJWfjG z7-QWy$?hbs6F5m^gBXFO5OwJa4MZ8_FvOgDQMv8p#YlnSs|Z%{VH=7@-f>TA$kug0^v;k&?h|Mn}l4)I}7Lfxb3=VlnRB;CcPHJnqZK zl~SlpEAYe!dY?BBU zcu$Sswy)2mLJ%QugPJyJrVp~FtG~_aHs8l8*(*{W;($z&jp|9ix?eLEWwip{@M~V= koh3u2?0q(|#I|SmT`G3v9}}WlF#rGn literal 0 HcmV?d00001 diff --git a/bin/Wall.class b/bin/Wall.class new file mode 100644 index 0000000000000000000000000000000000000000..f6bcd365c175cae6017fe4e81073c3da2791008e GIT binary patch literal 898 zcma)2$!^n76g|&Q;tXyxw3+Hol%a`HDH|3L#DYkON};NhD!_t;o0{;z#KCb8 zR@t%128jrX1s}ji0q5BfAQd4tcX;={Gu&_AzkCI76HNn}K;og}c?J>!#*yrYlfV_w zNB&qq9B|6&QJfwNB**ft%QnjFQ@7<%hIcq`95j1OZU59wBhSgmbI#l#3mruhIg|v- zjm~rDwX^Rz!@+(x4CHXoYW6Y^ST&JEN>vpTnYgN%$i~&02_vr7O{9?$$amz>J)FEe zaf4&$#G~L+$L~8{&k3aJ7mtbXnWT+WM>%W>EOkSt|Kfo&TFi}s8y@*%spPktG@I@F zesC&>PDn`6=0&*CrDcw~{v_zT_oQOWD8OsV3@%W#&TA&2DG#hPr8dgc8f7|)GW{^? z{E>snxC97|`x;+g*`?*rDA@WOE4Ia8y~mba)NajDwhP%gs!^;*(fWY4m6&otP0Cz* zcWz0`WQ*sU_8VMqY|f6SPlh>TctP)%e0rrE?@Rg#0`|t;_h8e@1x9r z74%TW6V%X09TIC8VI7-9tHh?Tg>81U7ad0s4@A^|;5sw|LIB&Fyu=PJ#`nO}#XV|P z;ms6j`xELjt8f;V)=ZxfK!=iDAtXqUB1MkCMWR%2=@0taFZvqaFOxyhC!poBtgrlo cv;3R0dY-dE&L%l+a$Y6p-hXrMl3zpPCxXU(<^TWy literal 0 HcmV?d00001 diff --git a/src/Ball.java b/src/Ball.java new file mode 100644 index 0000000..f35659f --- /dev/null +++ b/src/Ball.java @@ -0,0 +1,56 @@ +public class Ball extends Picture { + + private static final long serialVersionUID = 1L; + + public float speedX = 0.00000011f; + public float speedY = 0.0000001f; + public float posiX = 300; + public float posiY = 350; + + public Ball() { + + super("player"); + + } + + public int getPosi(char coordinate, long dt) { + if (coordinate == 'x') { + posiX -= speedX * dt; + return (int) posiX; + } else if (coordinate == 'y') { + posiY += speedY * dt; + return (int) posiY; + } else + return 0; + } + + public void setPosi(char coordinate, int posi) { + if (coordinate == 'x') { + posiX = posi; + } else if (coordinate == 'y') { + posiY = posi; + } + } + + public void changeDir(char coordinate) { + if (coordinate == 'x') { + speedX = -speedX; + } else if (coordinate == 'y') { + speedY = -speedY; + } + } + + public void sonic() { + if (speedX > 0) { + speedX += 0.00000000004f; + } else { + speedX -= 0.00000000004f; + } + if(speedY > 0) { + speedY += 0.00000000004f; + } else { + speedY -= 0.00000000004f; + } + } + +} diff --git a/src/GUI.java b/src/GUI.java new file mode 100644 index 0000000..8af8d5e --- /dev/null +++ b/src/GUI.java @@ -0,0 +1,157 @@ + +// Imports: +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.sql.SQLException; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; +import java.sql.ResultSet; + +// Diese Klasse wird benötigt, um nach dem Beenden des Spiels seinen Namen mit dem Score in die Datenbank einzutragen. + +public class GUI extends JFrame { // extends JFrame --> Jede 'GUI' ist auch ein 'JFrame' + + private static final long serialVersionUID = -2037442253698128981L; + + int spielNr; // Nummer des aktuellen Spiels (später entnommen aus der Datenbank) + int score; // Anahl erreichter Ballwechsel im zuletzt beendeten Spiel + + // Deklarieren der GUI - Elemente: + 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 + 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 + // anderen GUI - Elementen abgebildet werden soll. + JLabel scores[]; // Hier werden die Top 10 Scores angezeigt + JLabel names[]; // Hier werden die Namen der Personen mit den Top 10 Scores angezeigt + JLabel gameNr[]; // Hier werden die gameNr des jeweiligen Top 10 Lauf angezeigt + + ResultSet rs; // Hier wird das Ergebnis der Abfrage der Datenbank gespeichert + + MySQLConnector datenbank; // Die Datenbank, auf der alles gespeichert ist + + 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"); + + 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 + + // Initialisieren der GUI - Elemente: + panel = new JPanel(); + eingabe = new JTextField(); + 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 + this.setTitle("Game " + spielNr); // Der Titel des Frames wird gesetzt. + 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 + + scores = new JLabel[11]; + names = new JLabel[11]; + gameNr = new JLabel[11]; + + // Tabellennamen für die Top 10 Tabelle werden gestzt: + 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]); + + scores[0].setBounds(300, 120, 150, 20); + names[0].setBounds(150, 120, 150, 20); + gameNr[0].setBounds(0, 120, 150, 20); + + // Anfrage an die Datenbank wird gestellt: + // 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 + + // 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].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 + gameNr[i].setBounds(0, 120 + i * 20, 150, 20); // (mit Zeilenangabe im Fall von Fehlern) + + // Hinzufügen der jeweiligen Labels: + 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 + } + } + + // Hinzufügen von 'info', 'eingabe', und 'enter' zum panel + panel.add(info); + 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); + info.setBounds(5, 5, 400, 20); + + // Hinzufügen des Action Listeners zu 'eingabe' + enter.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + try { + button_ActionPerformed(evt); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + + } + + 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 + this.dispose(); // Der Frame wird geschlossen + //datenbank.disconnect(); // Die Verbindung zur Datenbank wird getrennt + } + +} diff --git a/src/Game.java b/src/Game.java new file mode 100644 index 0000000..8a2e1c1 --- /dev/null +++ b/src/Game.java @@ -0,0 +1,131 @@ +import java.awt.Color; +import java.awt.Font; +import java.sql.SQLException; + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; + +public class Game { + int timer1 = 0; + int timer2 = 0; + long lastT; + int lives = 3; + + public void delay(int time) { + + try { + Thread.sleep(time); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + public Game() throws SQLException { + + JPanel panel = new JPanel(); + + JFrame frame = new JFrame(); + + Player player = new Player(38, 40); + + Wall Walls[] = new Wall[3]; + + Lives Lives[] = new Lives[3]; + + Ball ball = new Ball(); + int score = 0; + + JLabel scoreLabel = new JLabel(); + + Font f = new Font("TimesRoman", Font.BOLD, 25); + + for (int i = 0; i < 3; i++) { + Walls[i] = new Wall(i); + Lives[i] = new Lives(); + panel.add(Walls[i]); + panel.add(Lives[i]); + } + + panel.add(player); + frame.addKeyListener(player); + scoreLabel.setText(Integer.toString(score)); + scoreLabel.setForeground(new Color(255, 255, 255)); + scoreLabel.setFont(f); + panel.add(scoreLabel); + + panel.add(ball); + + frame.setContentPane(panel); + frame.setSize(600, 700); + frame.setVisible(true); + frame.setTitle("Pong by Lenz and Tilman"); + frame.setLocation(300, 10); + frame.setResizable(false); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.getContentPane().setLayout(null); + + panel.setBackground(Color.BLACK); + + scoreLabel.setBounds(540, 300, 100, 100); + + ball.setBounds(ball.getPosi('x', 0), ball.getPosi('y', 0), 10, 10); + + panel.add(ball); + Lives[0].setBounds(25, 630, 18, 15); + Lives[1].setBounds(43, 630, 18, 15); + Lives[2].setBounds(62, 630, 18, 15); + + for (int i = 0; i < 3; i++) { + Walls[i].setBounds(Walls[i].getPosi('x'), Walls[i].getPosi('y'), Walls[i].getSize('x'), + Walls[i].getSize('y')); + } + long dt; + player.setBounds(player.getPosi('x', 0), player.getPosi('y', 0), 10, 100); + //delay(3000); + lastT = System.nanoTime(); + while (lives < 0) { + dt = System.nanoTime() - lastT; + lastT = System.nanoTime(); + + player.setBounds(player.getPosi('x', dt), player.getPosi('y', dt), 10, 100); + player.sonic(); + + ball.setBounds(ball.getPosi('x', dt), ball.getPosi('y', dt), 10, 10); + + if (player.getPosi('x', 0) <= ball.getPosi('x', 0) + 10 && player.getPosi('y', 0) <= ball.getPosi('y', 0) + && player.getPosi('y', 0) >= ball.getPosi('y', 0) - 100) { + ball.changeDir('x'); + ball.setPosi('x', 560); + score++; + scoreLabel.setText(Integer.toString(score)); + } else if (ball.getPosi('x', 0) < 20) { + ball.changeDir('x'); + ball.setPosi('x', 20); + } else if (ball.getPosi('y', 0) > 640 || ball.getPosi('y', 0) < 20) { + ball.changeDir('y'); + } else if (ball.getPosi('x', 0) > 570) { + Lives[lives - 1].setBounds(0, 0, 0, 0); + lives--; + if (lives == 0) { + frame.setVisible(false); + } else { + ball.setPosi('x', 300); + ball.setPosi('y', 350); + ball.setBounds(ball.getPosi('x', 0), ball.getPosi('y', 0), 10, 10); + delay(1000); + lastT = System.nanoTime(); + } + } + + ball.sonic(); + + delay(15); + + } + frame.dispose(); + GUI Gui = new GUI(score); + + } + +} \ No newline at end of file diff --git a/src/Lives.java b/src/Lives.java new file mode 100644 index 0000000..7ff395d --- /dev/null +++ b/src/Lives.java @@ -0,0 +1,7 @@ + +public class Lives extends Picture{ + public Lives() { + super("heart"); + } + +} diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000..5a39a9e --- /dev/null +++ b/src/Main.java @@ -0,0 +1,15 @@ +import java.sql.SQLException; + +public class Main { + + @SuppressWarnings("unused") + + public static void main(String[] args) throws SQLException { + + // System.out.println("test"); + System.setProperty("sun.java2d.opengl", "true"); + Game Game = new Game(); + + } + +} \ No newline at end of file diff --git a/src/MySQLConnector.java b/src/MySQLConnector.java new file mode 100644 index 0000000..29a9888 --- /dev/null +++ b/src/MySQLConnector.java @@ -0,0 +1,48 @@ +import java.sql.Connection; +import java.sql.Statement; +import java.sql.SQLException; +import java.sql.ResultSet; +import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; + +public class MySQLConnector { + + private MysqlDataSource ds; + private Connection conn; + private Statement s; + + public MySQLConnector(String user, String pw, String server, String db) { + ds = new MysqlDataSource(); + ds.setUser(user); + ds.setPassword(pw); + ds.setServerName(server); + ds.setDatabaseName(db); + } + + public void connect() throws SQLException { + conn = ds.getConnection(); + } + + public void disconnect() throws SQLException { + s.close(); + conn.close(); + } + + public ResultSet executeQuery(String query) throws SQLException { + s = conn.createStatement(); + ResultSet rs = s.executeQuery(query); + return rs; + } + + public void updateDatabase(String whatever) throws SQLException{ + s = conn.createStatement(); + s.executeUpdate(whatever); + } + + public int getRowCount(String table) throws SQLException{ + s = conn.createStatement(); + ResultSet rs = s.executeQuery("Select * From " + table); + rs.last(); + return rs.getRow(); + } + +} \ No newline at end of file diff --git a/src/Picture.java b/src/Picture.java new file mode 100644 index 0000000..fcd38b9 --- /dev/null +++ b/src/Picture.java @@ -0,0 +1,24 @@ +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + +import javax.imageio.ImageIO; +import javax.swing.ImageIcon; +import javax.swing.JLabel; +import javax.swing.JOptionPane; + +public class Picture extends JLabel { + + private static final long serialVersionUID = 5088057670084213472L; + + public Picture(String name) { + super(); + try { + BufferedImage test = ImageIO.read(new File("assets/" + name + ".png")); + this.setIcon(new ImageIcon(test)); + } catch (IOException ex) { + JOptionPane.showMessageDialog(null, "Please check your file paths", "Error", JOptionPane.ERROR_MESSAGE); + } + } + +} diff --git a/src/Player.java b/src/Player.java new file mode 100644 index 0000000..9713dee --- /dev/null +++ b/src/Player.java @@ -0,0 +1,108 @@ +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; + +public class Player extends Picture implements KeyListener { + + private static final long serialVersionUID = -4062796732924767091L; + + private int upCode; + private int downCode; + private float posiX = 570; + private float posiY = 300; + private int sizeX = 10; + private int sizeY = 100; + private boolean up = false; + private boolean down = false; + private float speed = 0.0000002f; + + public Player(int newUpCode, int newDownCode) { + super("player"); + + upCode = newUpCode; + downCode = newDownCode; + + + + } + + public void keyPressed(KeyEvent e) { + //System.out.println(e.getKeyCode()); + if (e.getKeyCode() == upCode) { + + up = true; + down = false; + + } else if (e.getKeyCode() == downCode) { + + up = false; + down = true; + + } + + } + + public void keyReleased(KeyEvent e) { + + if (e.getKeyCode() == upCode && up) { + up = false; + down = false; + } else if (e.getKeyCode() == downCode && down) { + down = false; + up = false; + } + + } + + public void keyTyped(KeyEvent e) { + + } + + public int getPosi(char coordinate, long dt) { + + if (up && posiY > 10) { + posiY -= speed * dt; + } else if (down && posiY < 555) { + posiY += speed * dt; + } + if (posiY < 10) { + posiY = 10; + } + if (posiY > 659) { + posiY = 659; + } + if (posiX < 10) { + posiX = 10; + } + if (posiX > 665) { + posiX = 665; + } + if (coordinate == 'x') { + return (int) posiX; + } else if (coordinate == 'y') { + return (int) posiY; + } else + return 0; + } + + public void setPosi(char coordinate, int posi) { + if (coordinate == 'x') { + posiX = posi; + } else if (coordinate == 'y') { + posiY = posi; + } + } + + public int getSize(char coordinate) { + if (coordinate == 'x') { + return sizeX; + } else if (coordinate == 'y') { + return sizeY; + } else + return 0; + } + + public void sonic() { + speed += 0.000000000004f; + } + +} diff --git a/src/Wall.java b/src/Wall.java new file mode 100644 index 0000000..098a200 --- /dev/null +++ b/src/Wall.java @@ -0,0 +1,47 @@ + +public class Wall extends Picture { + private int pos = 0; + private int posX; + private int posY; + private int sizeX; + private int sizeY; + + public Wall(int pos) { + super("player"); + this.pos = pos; + if (pos == 0) { + sizeX = 570; + sizeY = 10; + posX = 10; + posY = 10; + } else if (pos == 1) { + sizeX = 10; + sizeY = 650; + posX = 10; + posY = 10; + } else if (pos == 2) { + sizeX = 570; + sizeY = 10; + posX = 10; + posY = 650; + } + } + + public int getPosi(char coordinate) { + if (coordinate == 'x') { + return posX; + } else if (coordinate == 'y') { + return posY; + } else + return 0; + } + + public int getSize(char coordinate) { + if (coordinate == 'x') { + return sizeX; + } else if (coordinate == 'y') { + return sizeY; + } else + return 0; + } +}