From ef61ea475b277e207b5cea513c8dc32d6b28ea24 Mon Sep 17 00:00:00 2001 From: bob Date: Tue, 31 May 2022 13:19:41 -0400 Subject: [PATCH] Basic physics --- .idea/misc.xml | 2 +- out/production/final/Ball.class | Bin 777 -> 0 bytes out/production/final/GameFrame.class | Bin 816 -> 816 bytes out/production/final/GamePanel.class | Bin 7477 -> 3335 bytes out/production/final/GenericObject.class | Bin 1098 -> 0 bytes out/production/final/Main.class | Bin 387 -> 387 bytes out/production/final/Paddle.class | Bin 2170 -> 0 bytes src/GamePanel.java | 19 +++++- src/PlayerBall.java | 74 +++++++++++++---------- src/Tile.java | 16 +++++ 10 files changed, 75 insertions(+), 36 deletions(-) delete mode 100644 out/production/final/Ball.class delete mode 100644 out/production/final/GenericObject.class delete mode 100644 out/production/final/Paddle.class create mode 100644 src/Tile.java diff --git a/.idea/misc.xml b/.idea/misc.xml index 1ce6e7f..d15472f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/out/production/final/Ball.class b/out/production/final/Ball.class deleted file mode 100644 index 6b6d60b1627dbe612359dd3ee5a0f8a978388e26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 777 zcmZ8eZEw<06n-u+3Rq|dld-X>^A(B?-@jm%FzA*hbu$}5{j^-VDtD=^DaFm7rO_?% z!+yYil=0kxY}%%`=bpFcJkPoK{p%dS23{&iFr+rQ=jD*XoPx9p1sR6?w(Gm0aCQer zt`jk&UkP7C8w^U#qNm=^f+45k8dOTQcC4P&wh#8-m}ZxOS+ZL}g$A9XBR6{26(RKz zflqL?xV(sxf&~@VQD!I{@h`l|kE3QM@Pd%=-kY|)`<6ks{|&Wrs9;IKvWhBJ80Kf; z?T~*S3TMQSA;f8)Qtkix$>=v!+?1oU6G>!E#qId^Rd&Ct;-1tX^FestUQ9o~*|zP2 zuGM~R_RKxv)Cv4i#Qmtxy|J4lF*TZ5N>lF>!%lGMGHAB&-JS8LfgAStz#~u54jk_F zc_`$4>P$sLK|`l)xrP?0dU92)!;l{{l&{eE%d;h+*hhxaCB<2c+Uy78&~dkf1kTFd z>ryJL5#JOIoS;8#kE|u!r$57k*jtMu3hLxB$P-{L&aWEP6sj$WPCzf9*t@*9&Dc!YJjfmTQA6M(cxd4iNyldL3pALGdsyhq?N yR%v|4{3#Y2gt7a`5s9Aw diff --git a/out/production/final/GameFrame.class b/out/production/final/GameFrame.class index 1c47018a59c6138bfd0ec0decf5cbbb38e4978d0..324fea9b2d53ea24f6f0c135cae2d230e31dc155 100644 GIT binary patch delta 32 ocmdnMwt;QJL2ma@Ple24h2;GFoQY@hS<5prOHwyGFn(YJ0LWnsP5=M^ delta 32 ocmdnMwt;QJLGFP3ymUQ1Jq05@gNbMIS(9=Sle0HFFn(YJ0J>HSN&o-= diff --git a/out/production/final/GamePanel.class b/out/production/final/GamePanel.class index 044ca3c29c32495aa657306bba654e4ee78b7540..f46390fd95c7eecd24185559f8a29dd2dd451c7a 100644 GIT binary patch literal 3335 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 blTjJtsLnCY-}~hKoQ3&zliVU7K+T^4udK3! diff --git a/out/production/final/GenericObject.class b/out/production/final/GenericObject.class deleted file mode 100644 index 8d4a78215c3b95fe76c3bc81bd421b1b21a70ed1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1098 zcmah|+int36kP`fM(9ji!O{!hrQQIwyy#O6FJ78Pw5A%OZykmcIF*7KroeobiH(U5 zet;ikTxS^Rw2^d@nX_+at+n@t-+zAo0?|gn3n`HK}+_BuJQu`v9F7lEv)Fu z%=BMIN3UDR>8J>_cf-P3=uHKT7sC#TSDI=d-<_VcrT5WkYbm+r&~^GP$5Yymf`;Ey zBVBz#$F4wXqB?$$4fLey_NXlTMF#IZIU321K&jH4cPqzo;Md>C;FUIZt1YS`-R8my zfhA%c%D!|$Fnc8Z&o7n70jS}C9aK0c5(crDuK5)6v(uPkoD9cgOjh(YqvJUffkI5- zp67h+DR(r}))mN~Yn$gt_+fbJx$?CNr*&ZmDh|P5Z}UE>pB)9*vMcR8}y&fDzS+zdOFWd5=UFya9Ev1kybK{m1r5v zmvJ*4Cdv2*V*Mp z3@bgClg7QUUxEAo$FeVDm55bdfb}54dWcG->n-P|hf%E6zGIcId345;MxL)tCx1?` u91eLKHl=J)m|oCq8O2DjKozwJdg0(JF?IYSM4J_OgvY!p@Px1l?ED2Y5Tbkl diff --git a/out/production/final/Main.class b/out/production/final/Main.class index aa9ef207113b15c554aaeb02ff3be69b3b6c2e6d..7723e7178d8da35c1f63e47b725e92e2ac3f97bf 100644 GIT binary patch delta 47 wcmZo>Zf4$~$jHb(S&7j>k&A(Yfro*QfdNP|0!dB=VFnQ(&B!1MB$*h*0ES`%l>h($ delta 47 wcmZo>Zf4$~$jHb!S&7j>k%xhUfe#277Mfg~q`FoOt?W@Hcrl1vO@0Ea9Cn*aa+ diff --git a/out/production/final/Paddle.class b/out/production/final/Paddle.class deleted file mode 100644 index 18d0f6d8af5a421adc72d7995e57b874812b4d6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2170 zcmZvd%TwD{6vjVcgN!4v07Ed3ydOwTLS9XqIH4q9z{N=%pw6R@AS?wGgiLJ#VbN(< z-L=zUlS$hJ({v`AY}x^m>7w2DZ|S1@&UE@+$p|N{JtOO$d+s^E^Sb`ypI?6iFoZQ3 z4HB9PhG{xh98omNXi^{}CZT2Aa;=J8x;^*UDtXkpYP+^KBtag?@uL-+AtA0{9~23V z(}iqyRDzTf(pCitU%Ik9X{`%Mn}T*Bk&uepl+mSNzYs@n7>>i!PlRr#c=Raf z6+6vOik4F@+1`2_{Wu`wpn^j+jwEs>p~opYqhJtcCG1-;sv~8`u}#Zlr~`RH znHkX@2+i{fF8F}!yMV&ldExbvf_L#Ay;cm@EYoXbKpSlujs;HRxQc5sh7`PyVF~;F zIE*!K&|0-zZ;;8!iWfSZw>+*!%BJO;$O*O^3P!+0w^S|f{-|AHY3#Ba#9b5$V+zJG zLBUdaH8@9c6k{?bnay!y$toDGcf`l*rqzb!%m5&Z^89 za}E>Go-daSr)X4cv91ZD-hwSa^Fillcz(|Bz^0(a%#^v8TWN$&r#+*zc+*&}S!gXS zSfxe3JF0#G;)~XLp<-35qF4Ir!hW-?8Lh}(BUfrKF>h(G@n~zxaxB9)7BwrznuM-8 zo4dIVtj$a4*s~Vyv4f_|E0vNpW{X7Z3t~MZ3Wme%l&DBC+Qa~J^$}MM_!udCQn&t; z>xXsgS!!~$smsjzzcSx=U+`&A`Z+B&^0!y-?NeiF;T0l!Y#Ysb|2A6m&geGOpM6Jj ze0KS&t%!3F6Z|HjqK7~w?p+Mbz=XvW4T_6`PQ)AMm8jxPpoj+O^`VxkqB2mpkGME+EfeAeGkFvd&tojh(=yUUXm&Tk%4x<2>Wpb-5jSBzD1uO z{h@$7jD7=;Fz-jdfd$x%^D$4yA)nGxsmL(XB4II%e1ioMk!SRD-wsYc!-e$yEu16M zMcH|ccapfgn3(@&c6J-*(jqFaPPmOD(R#$7NJm(r<2Z^FyxC6TGPF9(Oo*8YF*9|T z5lENG=U|CX(Ij7zU(`=e?~ri|Et~8O_3s^A*LRSu3Dr#~daNcBJriW?0AmBruxSU` zDQD4%^Ekwt_&7U8!zCZ9E3h77>2Oh|Z;>s0$(19HPi9TRnCZY4L7c&*iPr8Ou%SOMDeuhd7 zV1{!iYSW$m1^FFJrRl5N2jMjD;NIT!w)#DGoAoGgHt*C0+Z_hmjVe4^masyb4Osmb D-vEJg diff --git a/src/GamePanel.java b/src/GamePanel.java index a525e47..c43b40d 100644 --- a/src/GamePanel.java +++ b/src/GamePanel.java @@ -9,21 +9,24 @@ Implements Runnable interface to use "threading" - let the game do two things at */ import java.awt.*; import java.awt.event.*; +import java.util.ArrayList; import javax.swing.*; public class GamePanel extends JPanel implements Runnable, KeyListener{ //dimensions of window - public static final int GAME_WIDTH = 1920; - public static final int GAME_HEIGHT = 1080; + public static final int GAME_WIDTH = 1536; + public static final int GAME_HEIGHT = 768; public Thread gameThread; public Image image; public Graphics graphics; public PlayerBall ball; + public static ArrayListmap = new ArrayList(); public GamePanel(){ + map.add(new Tile(1000, 700)); ball = new PlayerBall(GAME_WIDTH/2, GAME_HEIGHT/2); //create a player controlled ball, set start location to middle of screen this.setFocusable(true); //make everything in this class appear on the screen this.addKeyListener(this); //start listening for keyboard input @@ -54,6 +57,9 @@ public class GamePanel extends JPanel implements Runnable, KeyListener{ //call the draw methods in each class to update positions as things move public void draw(Graphics g){ ball.draw(g); + for(Tile i: map){ + i.draw(g); + } } //call the move methods in other classes to update positions @@ -64,14 +70,21 @@ public class GamePanel extends JPanel implements Runnable, KeyListener{ //handles all collision detection and responds accordingly public void checkCollision(){ - + ball.isGrounded = false; + + for(Tile i: map){ + + } //force player to remain on screen if(ball.y<= 0){ ball.y = 0; } if(ball.y >= GAME_HEIGHT - PlayerBall.BALL_DIAMETER){ ball.y = GAME_HEIGHT-PlayerBall.BALL_DIAMETER; + ball.yVelocity = 0; + ball.isGrounded = true; } + if(ball.x <= 0){ ball.x = 0; } diff --git a/src/PlayerBall.java b/src/PlayerBall.java index 176b387..cbd6611 100644 --- a/src/PlayerBall.java +++ b/src/PlayerBall.java @@ -9,11 +9,17 @@ import java.awt.event.*; public class PlayerBall extends Rectangle{ - public int yVelocity; - public int xVelocity; - public final int SPEED = 20; //movement speed of ball + public double yVelocity; + public double xVelocity; + public final double SPEED = 20; //movement speed of ball + public final double speedCap = 7; //Speed cap of ball public static final int BALL_DIAMETER = 20; //size of ball + public boolean rightPressed = false; + public boolean leftPressed = false; + public boolean upPressed= false; + public boolean downPressed = false; + public boolean isGrounded = false; //constructor creates ball at given location with given dimensions public PlayerBall(int x, int y){ super(x, y, BALL_DIAMETER, BALL_DIAMETER); @@ -24,22 +30,19 @@ public class PlayerBall extends Rectangle{ //if the keyboard input isn't any of the options (d, a, w, s), then nothing happens public void keyPressed(KeyEvent e){ if(e.getKeyChar() == 'd'){ - setXDirection(SPEED); + rightPressed = true; move(); } - if(e.getKeyChar() == 'a'){ - setXDirection(SPEED*-1); + leftPressed = true; move(); } - if(e.getKeyChar() == 'w'){ - setYDirection(SPEED*-1); + upPressed = true; move(); } - if(e.getKeyChar() == 's'){ - setYDirection(SPEED); + downPressed = true; move(); } } @@ -48,22 +51,19 @@ public class PlayerBall extends Rectangle{ //Makes the ball stop moving in that direction public void keyReleased(KeyEvent e){ if(e.getKeyChar() == 'd'){ - setXDirection(0); + rightPressed = false; move(); } - if(e.getKeyChar() == 'a'){ - setXDirection(0); + leftPressed = false; move(); } - if(e.getKeyChar() == 'w'){ - setYDirection(0); + upPressed = false; move(); } - if(e.getKeyChar() == 's'){ - setYDirection(0); + downPressed = false; move(); } } @@ -71,27 +71,37 @@ public class PlayerBall extends Rectangle{ //called from GamePanel whenever a mouse click is detected //changes the current location of the ball to be wherever the mouse is located on the screen public void mousePressed(MouseEvent e){ - x = e.getX(); - y = e.getY(); + //x = e.getX(); + // y = e.getY(); } - //called whenever the movement of the ball changes in the y-direction (up/down) - public void setYDirection(int yDirection){ - yVelocity = yDirection; - } - //called whenever the movement of the ball changes in the x-direction (left/right) - public void setXDirection(int xDirection){ - xVelocity = xDirection; - } - - //called frequently from both PlayerBall class and GamePanel class - //updates the current location of the ball public void move(){ - y = y + yVelocity; - x = x + xVelocity; + y = y + (int)yVelocity; + x = x + (int)xVelocity; + if(rightPressed==true){ + xVelocity+=1; + } + if(leftPressed==true){ + xVelocity-=1; + } + if(upPressed&isGrounded){ + yVelocity = -10; + } + xVelocity*=0.9; + yVelocity+=0.3; + capSpeed(); } + public void capSpeed(){ + if(xVelocity>speedCap){ + xVelocity = speedCap; + } else if(xVelocity<-1*speedCap) { + xVelocity = -1*speedCap; + } + } + + //called frequently from the GamePanel class //draws the current location of the ball to the screen public void draw(Graphics g){ diff --git a/src/Tile.java b/src/Tile.java new file mode 100644 index 0000000..06b7153 --- /dev/null +++ b/src/Tile.java @@ -0,0 +1,16 @@ +import java.awt.*; + +public class Tile { + public int x; + public int y; + public static final int length = 30; + public Tile(int x, int y){ + this.x = x; + this.y = y; + } + + public void draw(Graphics g){ + g.setColor(Color.black); + g.fillRect(x, y, length, length); + } +}