From 301c4993a7acb9e26772905ed782c332da90bfbd Mon Sep 17 00:00:00 2001 From: agreiner Date: Mon, 7 Jun 2021 16:23:33 +0200 Subject: [PATCH] Aufgaben 10 --- .../graphics/base/MovementPatterns.java | 48 ++++++++++++++++++ .../graphics/moveable/RandomBall.java | 25 +++++++-- .../Programmieren_2_jar/Programmieren 2.jar | Bin 720921 -> 722351 bytes .../graphics/base/MovementPatterns.class | Bin 0 -> 2281 bytes .../graphics/moveable/RandomBall.class | Bin 1980 -> 2568 bytes 5 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.java create mode 100644 out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.class diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.java new file mode 100644 index 0000000..9aab45f --- /dev/null +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.java @@ -0,0 +1,48 @@ +package de.thdeg.greiner.superpangworld.graphics.base; + +import java.util.*; + +/** + * Offers different movement patterns for moveable game objects. + */ +public class MovementPatterns { + + + private HashMap> patterns; + private Random random; + + /** + * Create the MovementPatterns object providing access to different movement patterns. + */ + public MovementPatterns(){ + patterns = new HashMap<>(); + random = new Random(); + + ArrayList square = new ArrayList<>((Arrays.asList(new Position(30,30),new Position(930,30), + new Position(930,510),new Position(30,510)))); + ArrayList zigZag = new ArrayList<>((Arrays.asList( new Position(300,200),new Position(400,340),new Position(500,200), + new Position(600,340),new Position(700,200),new Position(800,340)))); + + patterns.put("square",square); + patterns.put("zigzag",zigZag); + } + + /** + * Get a movement pattern by its name. + * @param pattern the pattern name + * @return the movement pattern + */ + public ArrayList getPattern(String pattern){ + return patterns.get(pattern); + } + + /** + * get a random movement pattern. + * @return the movement pattern + */ + public ArrayList getRandomPattern(){ + int index = random.nextInt(patterns.values().size()); + return new ArrayList>(patterns.values()).get(index); + } + +} diff --git a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RandomBall.java b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RandomBall.java index ef7c73b..a5bbe2e 100644 --- a/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RandomBall.java +++ b/SuperPangWorld/src/de/thdeg/greiner/superpangworld/graphics/moveable/RandomBall.java @@ -2,16 +2,22 @@ package de.thdeg.greiner.superpangworld.graphics.moveable; import de.thdeg.greiner.superpangworld.gameview.GameView; import de.thdeg.greiner.superpangworld.graphics.base.GameObject; +import de.thdeg.greiner.superpangworld.graphics.base.MovementPatterns; import de.thdeg.greiner.superpangworld.graphics.base.MovingGameObject; import de.thdeg.greiner.superpangworld.graphics.base.Position; import java.awt.*; -import java.util.Random; +import java.util.*; +import java.util.List; /** Ball with random movement. */ public class RandomBall extends GameObject implements MovingGameObject { - private final Position targetPosition; private final Random random; + private ArrayList movementPattern; + private int movementPatternIndex; + private Position targetPosition; + private MovementPatterns movementPatterns; + /** * Creates the GameObject with the GameView to be displayed on. @@ -20,10 +26,15 @@ public class RandomBall extends GameObject implements MovingGameObject { */ public RandomBall(GameView gameView) { super(gameView); - this.targetPosition = new Position(800, 200); this.random = new Random(); this.size = 50; this.speedInPixel = 4; + + movementPatterns = new MovementPatterns(); + + movementPattern = movementPatterns.getRandomPattern(); + movementPatternIndex = 0; + targetPosition = movementPattern.get(0); } @Override @@ -33,7 +44,13 @@ public class RandomBall extends GameObject implements MovingGameObject { position.right((targetPosition.x - position.x) / distance * speedInPixel); position.down((targetPosition.y - position.y) / distance * speedInPixel); } else { - setRandomTargetPosition(); + if(movementPatternIndex < movementPattern.size()-1){ + movementPatternIndex++; + }else{ + movementPattern = movementPatterns.getRandomPattern(); + movementPatternIndex = 0; + } + targetPosition = movementPattern.get(movementPatternIndex); } } diff --git a/out/artifacts/Programmieren_2_jar/Programmieren 2.jar b/out/artifacts/Programmieren_2_jar/Programmieren 2.jar index e70bcc43ad54489d7504dfbf39cf87bd0b2adaed..ad67651e26d5246a91963988681db0f14bfaac44 100644 GIT binary patch delta 3290 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 xR0>SxL9=fj1e#QrP=@h delta 2106 zcmZWq3piBi8$ajF4C6a9?qy=CY26Ysf7eL!G}e+!HEvy=mQ5@{eBU|G`R%0Wscg+frmHapa^@|LozHtEelZKZ$N(JFn|oSznTE9tXdy0okp zkR)}zC$*%^JR4Z50Q!|9Q?W{g-$VsNoDkJYw<2ylJwxj!Pa}s7KY*FIMSu}n;HP`57m6arKZnLC6&K6f;SkYo0 zfBd4JH+b}Z)cpL*pYxEX`I=(2cqS_0I5F@mo(@;9lo*&+TYH8YKRJD_>eK5bqq`1^ z{EW*lj_D4>Rv3&}z7mZ7db(X}=V6vpsyK9=2V=6l$Fv~*la6#nSOWH$_jr=n<567s zY|ge`A)|#+C=x5aXm<(L5{uF3i+u5JGwDg48SaTdW@&`;xI^Q^TC1_0n@!yPvU@a( z!p3@a6A`omuwbJkDmgyy(5!bv zdbZkMOWfBJD)U{PJEr~(J1ny9w2F9R?=;`C%yaef;R8YJh{A!Xa~ZLnJ=Usw{Y;AN z!%R}v${kOo+`P+nyO}Pq8)sl|HW%|eCmB!bg-bp zV@^A{_M;AAT0iCXXxzT)U&iw-@u5y0s(0O$9r| zdBvs2>rHEWT+TQc#&~Cf{-8(pJkf`Vfr6nK7a!lr&I)eMg;uV6{nq>a9RVrb(Z^cL z3)*R^#dl^?#1^cqwcFZlibKz4-izUs9UT6XecV1WAbd3Q+uZFk*XUxurShaQ=F~G4 zO6w1NE^NK;7W{Fuwnpd0;p=C56i@^GiQ4sHuobE;c`9c%kNx>+8&==ALtW9`D#klQt=|1N9u2kRRP^T{ZMWHG`(R z7y&WO0#XH?Bi#O@8FyPh{hI$j9!RR2YD zPQzks8$8}5$U;AWI29cp%qcfMBK;$8FQikKB1)=l!{hh7hsb#`~X zIOupz-}tlHTLOcej*X91Zupn%$yeU=f|Y#e`)dj{frm0(7|y=kN;IoFX~f8KD8x~7 z8PNv*#L1SC<%p6U>&tpaln{&%3L#WNXoM&cqD%;#5EWUyBMAGBOfnw?&Ll<+0t*rw zC^#E741#5(a(57HAW?S+c#;@01iVPRIs{}S_DuseOdkfNgd*dQ00H`smn|!O0`4$g zYp`e<*po3t!ZHkU#{d-y6+joV6u<^vQxH|$CSds!pieY5RcJB0Sl)dWurcQJYX==B z&`|($XTcgQ;NRByS>S-p%)AqeL*X1z_xJhttwenassZ6EpbnMhfi5;mf#Vo%N|sm# zcT52W+>PN>c$oC5D8KOm*gOx|oPUoG%eO`ef(QT^Z*3;02pK=uU#OHZ^ZnYi}WyIn+D2&n??bHL(&CqKiU;eLy&14 zL7d;AGf{t&L=Fco29_=w{;Nx{{Qq=XD6WfrrMKv_;Gj$35fop8p`1m_c>|R3-XY%n zfyxNt^iEYBx5PTRpHRNNN3YzH?}ac9ciIU3BM;v2Cs8tf!-kO5gV+<{8z t00_*Z;>PfE8m?-9-vx+oU}W&VLu-X$!2%DO5=rVwJoFU^qUa;5{15r=JM{nn diff --git a/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.class b/out/production/SuperPangWorld/de/thdeg/greiner/superpangworld/graphics/base/MovementPatterns.class new file mode 100644 index 0000000000000000000000000000000000000000..b0cfa0aa3c62b9ddec73fab8aefdccc378e09224 GIT binary patch literal 2281 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 literal 1980 zcma)6ZBrXn6n<_JvL(GhidagiRw_smv@VK=kc1k@kk z_zV2t5Acg$>@;DfopJo^Z*m;Z-3>{|Fq7`g?!9|npYxn^??3;&_zS>2lp+Wqs3F8L zfG|VSkh*(l$dX=iq-jY8>y=#WwmzA-}pQkG%kS+N9!n4VTEbujje^J9gD{P1_2mf1z^d38zhe6M=?dRn!Q> zKrEAq=Lc~GqZ(f07{luf%ded2$gWFqP?q|xunha?z9^R&hF#&5qUbj>@o%IP&<=*0W8`BJ- zs`;a2V3}|_+R?^1;!4Y_6)BCZwPT*hvT~c_cvn$$snViXk$Ia#$2sSi=Jb&5|c>*787Q<5|VgI!6|t5*;OS zR1?f_r~d@>CZTru{lFl$u&rT-<1_5iczKN#$F9C=mu-i7zQ4Ayv0b1^@q6A@r6TwQ zIgZbfXBZKNv0WGCoV_Znx~MWt(CpLmxYtWf)E2(r*jMQW3hUY2nuaeKR{An^uBDrH z-Ly*G_dsaXHfT6THt71;svR9jC#O!2npV3g%6Z|K>c1rnxrZjfTQXZjBONCZ;+pMfU8PQ$5H&Tp$WV2b)30K;SY zj;h;(dN!(#BCP`?r<;?$U(w$Q4QPPY`NZ5QSmGtL{V@!V;qobl8ii#LNH87bN z!_5Y!XqjnX_D}K&;A{F`r&yrT8^AbyuTky^#7L@R65n_lFFwA-cl1Y@)EH8B20>On zia*FZNV-DeITG|nn|N=1mNv7${)Y6K@HrOLmX^}2t&~rjc)z1e`pRTSnfe`CqKOp+ zHrNIBCOFvXtPVPfv?NMb?yh$M7ih44X~twQQn3&9rpe1fQWmHoZWW2*h2i QBiRKc+Xf=3z5u@eAGfa5UH||9