From 843d30eb47381f7806696ec4f74ac53897f5e9e5 Mon Sep 17 00:00:00 2001 From: Nilstrieb Date: Fri, 11 Dec 2020 23:04:08 +0100 Subject: [PATCH] start physics --- src/main/java/core/Collidable.java | 5 ++++ src/main/java/core/Master.java | 5 ++++ src/main/java/core/physics/Hitbox.java | 5 ++++ src/main/java/core/physics/RectHitBox.java | 4 +++ src/main/java/objects/GameObject.java | 4 +++ src/main/java/objects/ships/Submarine.java | 12 +++++++-- src/main/java/objects/world/Wall.java | 28 +++++++++++++++++++++ target/classes/core/Master.class | Bin 4043 -> 4214 bytes target/classes/objects/GameObject.class | Bin 1608 -> 1723 bytes 9 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 src/main/java/core/Collidable.java create mode 100644 src/main/java/core/physics/Hitbox.java create mode 100644 src/main/java/core/physics/RectHitBox.java create mode 100644 src/main/java/objects/world/Wall.java diff --git a/src/main/java/core/Collidable.java b/src/main/java/core/Collidable.java new file mode 100644 index 0000000..7b14855 --- /dev/null +++ b/src/main/java/core/Collidable.java @@ -0,0 +1,5 @@ +package core; + +public interface Collidable { + +} diff --git a/src/main/java/core/Master.java b/src/main/java/core/Master.java index 54a8d2c..c4e77e9 100644 --- a/src/main/java/core/Master.java +++ b/src/main/java/core/Master.java @@ -3,8 +3,10 @@ package core; import objects.DebugPos; import objects.ships.BattleShip; import objects.GameObject; +import objects.ships.Submarine; import objects.ships.Turret; import objects.world.Grid; +import objects.world.Wall; import javax.swing.*; import java.awt.*; @@ -44,6 +46,9 @@ public class Master extends JPanel { } objects.add(bs); objects.add(battleShip); + + objects.add(new Submarine(new Vector2D(), new Vector2D(20, 20))); + objects.add(new Wall(20, 80, 50, 2)); } /** diff --git a/src/main/java/core/physics/Hitbox.java b/src/main/java/core/physics/Hitbox.java new file mode 100644 index 0000000..3ea04e1 --- /dev/null +++ b/src/main/java/core/physics/Hitbox.java @@ -0,0 +1,5 @@ +package core.physics; + +public abstract class Hitbox { + +} diff --git a/src/main/java/core/physics/RectHitBox.java b/src/main/java/core/physics/RectHitBox.java new file mode 100644 index 0000000..a5afae6 --- /dev/null +++ b/src/main/java/core/physics/RectHitBox.java @@ -0,0 +1,4 @@ +package core.physics; + +public class RectHitBox extends Hitbox{ +} diff --git a/src/main/java/objects/GameObject.java b/src/main/java/objects/GameObject.java index fe7bb84..6e2ae52 100644 --- a/src/main/java/objects/GameObject.java +++ b/src/main/java/objects/GameObject.java @@ -32,6 +32,10 @@ public abstract class GameObject { public abstract void draw(Graphics2D g2d, int w, Master master); public abstract void update(Master master); + public void moveTo(Vector2D target){ + this.position = target; + } + public double getMapCoords(double value, boolean isX){ if (isX){ diff --git a/src/main/java/objects/ships/Submarine.java b/src/main/java/objects/ships/Submarine.java index a9cdd6e..ff913b0 100644 --- a/src/main/java/objects/ships/Submarine.java +++ b/src/main/java/objects/ships/Submarine.java @@ -1,18 +1,26 @@ package objects.ships; import core.Master; +import core.Vector2D; import objects.GameObject; import java.awt.*; public class Submarine extends GameObject { + + public Submarine(Vector2D position, Vector2D size) { + super(position, size); + } + @Override public void draw(Graphics2D g2d, int w, Master master) { - + g2d.setPaint(Color.BLUE); + g2d.fillOval((int) (position.x - size.x / 2), (int) (position.y - size.y / 2), (int) size.x, (int) size.y); } @Override public void update(Master master) { - + Point mouse = master.getMouseLocation(); + moveTo(new Vector2D(mouse.x, mouse.y)); } } diff --git a/src/main/java/objects/world/Wall.java b/src/main/java/objects/world/Wall.java new file mode 100644 index 0000000..5b2e1a9 --- /dev/null +++ b/src/main/java/objects/world/Wall.java @@ -0,0 +1,28 @@ +package objects.world; + +import core.Master; +import objects.GameObject; + +import java.awt.*; + +public class Wall extends GameObject { + + public Wall(double x, double y, double xSize, double ySize) { + super(x, y, xSize, ySize); + } + + @Override + public void draw(Graphics2D g2d, int w, Master master) { + int xAbs = (int) getWorldCoords(position.x, true); + int yAbs = (int) getWorldCoords(position.y, false); + int sizeXAbs = (int) getWorldCoords(size.x, true); + int sizeYAbs = (int) getWorldCoords(size.y, false); + + g2d.setPaint(Color.BLACK); + g2d.fillRect(xAbs, yAbs, sizeXAbs, sizeYAbs); + } + + @Override + public void update(Master master) { + } +} diff --git a/target/classes/core/Master.class b/target/classes/core/Master.class index cb7b329e53c423ee64f305b44e10d7040ec44c91..271caab6719584ec06627decb0636fdd1761cc89 100644 GIT binary patch delta 1896 zcmX>t|4o7G)W2Q(7#J9=7#?lp%3z9OXK-a?5YJD_N=+^))-TS;EGX6wE=|f!EXvGF zWoK|_WZ+HCFG|%9OHD4xFEVoBVsK+%W^*uM00R)uhlhcc!IzPNRl~(aGmMMDg~1;r z5-?eYMWvpdA&8Md2xfeFeo;<}et2R|4x0m5KLZ07Lm)#KNPRdX1G|Qc3&ac#hDaWU zD28Z829EU9lJLxwk_<)$W(`eGE(Q*USRRHrkQ8TnYKcc`W_m^m7efL=B0ED84?{9T z3L}GHR$^JAeqwov{^UJO+KOq648m{`_oBptjLhU>BNrhC28IkChD?U6$sEi&XJin7`N$x?H6~AB6X5{`2rok|4?`V8{p36rO^HSxh9(9!Mh4d8oYcf3 zAqGZ<7LXfSC$DEQmTl)@=m1Hw7o`>?X6BV}F?2C>vorMYF!VC?P5#f~%sqi&B0Iw* z9)`&bQzrYe+Hg-}n9j~HgNI=z!>q|uSd+NtFwA9Vn8(8~pJBmdMmA%PISh+<7#1@u z*=)m>&ct_?i{Tu@d3J^iJPa2ZE^Xe(!NTZug^@v2!v`EbIf;4c`u^agV67R(&(3fS z;z@Wnr!Jx}f!l1)Y#h}m7%wWLK!(e2^u%5w~;S_@j!%7AQ1}z2_h9CwFhE)u! z8JIy%WLU$nmVtr6l3^0VI)?QOj0^z`)eIXL)-y0MY@9roTeiNGp$OtFh8qkl46FVhQKfsV` z#RBrBmL!YJE{1dlhHVVl2(KwIaDY81$Y9SP#^Au9$l%1F#^B7L$KY1aV9wyd;LhL) zcD@G#JA)hpGs7l^)eKAwVhr32o1q@@fO>?1!GmE7!&U}H1~mpHs5(6cDX2Pg20?~x z4BHu47(kYDFfb|pW#D0CWMBkk6{t7e8JHNDKyj+2y`3SyUQ2r$LorA-6F3(5z`^Fn zz{=pyz{L;%c9j@JJ=_J{P!}*V>|odlH8qHV3#>{?Yd1q#q&6fKXp1mtgHu7pHik-s z9T1h_43Z2H4C$a)gIFL1w?K+v7sGA_kh8gAiH^a9fr){Ufq{Wdi)AYVJGxSo#zFkg2Q`kJft_I=!+x;;4=@~r8mtfIGcd4fZDC+v12zw2 z94JpRFqDIhfq0!2Y78SoGD9^~vlG}=lQ;1Rf!zR!fO-Z_h6b=ki2YnpjiBQG5W`^x zMgb;J5dt;B3Ty-e1Dm$iHip@Vpn^Cc9myOvxH)VLN1^5%V>k{mr=B5zfdyQ8aOi5w zXl-Lyh;Ebz*eFm&W?&d9)-o?7CO znwg$a!o}dj;LFb7$HU;y5HLBJ*_<(G@@!@)wh$hMP=>I{yP1R7B6t`g8KNc&vlz0) z@G!(O#7*{M(F;%DVMt_%V`Sh=$#*GAEYHkKXJ<%eWDv+t%1TWxDb{yMO)5l{$oRgYZB*ehTP!4iv#bgmyW7#SmhH8)` zdr@jZVrE_m7eg&W9Xmrk4?_b(oCc18w~$rD&bCZA+g*%>Y}GN?{I$SKQRtm2cOpIutO&Tx5hKbNif3G&ATi^f2f% z%wb?)&|+X=2x8D+n9DGaff-~r!+eGX3=9mG3?U2)85S`xG6XQ#GAw3T#K6R`gn@xU zjDhJtLl6TC`{WQF!TLmoIEdRAZZNPgure?(cxY{7a1r3l(Avh}As~>kgh3d@vXd3y z%n=aCuwBj|08(HpBOs6?z?osEy^X>907IY^i`Etf0WC=unOzLQ3=G>C!V$hxV&DL~ zN07maL5#tgL6O0hL5;zVL65<)p23{KnZcdG1?&|M26hHH24;q(4D%S67{nO38J0mk zFur3{p^a<_v-iD;ZWXuz)?v!N8>Wmw|_ok%1AE5uo05 zXJBGr0!56L_I8HodM)j34DleRGJzw44;+M^46F=Z3|tJ}U{{Gj)WcoC4Rrw{!)k^# zP*Z~#xWKBUw01KjMQZP6NQo3-&=z6P-p-J=ogs4@Lk_|Yh{_-aNrqsCdQc2PERcd* zAjPnjVI2d=+1#*{!(hU|#K6eFz`&-(vXy}y-LOaoR)#3BV|gH|pk^^LtcRPB0X0Dj z98p^sM7A;Hhu3R?8O30+T?}R5nA2k3%D}F*jiC}@jT8eL0|P?>1E?GkW=LXCU`S?A zWk_MrWJpD_Rts+J28MQM$aq1+n{Nk0%{GQ6A8oB23?14Vz}aRtLp=inB*=3Z*coye zco_1)#z8`a4{97c13SY;hE3oQ+03v7YOp?-&%nT{wS|Fw4b(gauy+|4ionJ|0)rK5 z3?qX-LmpJK6Vz4pT%Z8Z-o_vWPOp$e0EwU~22O@*urUzVa6ye>VBlid%CL=rQGf|l zR6q^1f*Q!Ct+kDz4-s&noX^0Jgk%mI+#EKB9raLyb~5aO8Wh050xlvrbhTx)wlPdW zH_91o6e!a(FmS+);sB?6Py*qA<_eJPZia0P%nZy7d%&TymjP7SfIPFGftleL!wH7d a43ZG$8HUpg=NUjgV`R9%aEajxgCqbLY$2Wi diff --git a/target/classes/objects/GameObject.class b/target/classes/objects/GameObject.class index 533e792a223ce96522df5b4d51d897e597748c09..5a0ef209cd1974ccaa51a483565419e70b8a6c0c 100644 GIT binary patch delta 365 zcmX@XvzwRe)W2Q(7#J9=82mSKIWeiS<>r^AhU7Cc2x<5v=NF~whovT$iG*Z=?k delta 275 zcmdnZdxD4S)W2Q(7#J9=7<@KzIWbKxX4=WfxmlN)jd5~4OOT-|0}F#1gA{`XgCzq4 zg8~CH0|SErgB61{0|*!}I5EgGFoMOL8C)2c8C)kbvHBS5GO#e{F$ggjAn8(o>r#O0 zQebd{>Z)h;;521mVK8G5V6d2cfmK`%X0i+e)MN$*24)6E0R~0}cLtBiacp9frP;)E qZIP_tg{Ngxma