From 09caaad7e11b496b4203c4f381440f2bf8f34c00 Mon Sep 17 00:00:00 2001 From: Remco Date: Thu, 21 May 2015 14:23:30 +0200 Subject: [PATCH 1/2] Player added --- control/GameControl.java | 14 +++++++++++++- image/Images.java | 37 +++++++++++++++++++++++++++++++++++++ image/player.png | Bin 0 -> 8294 bytes model/GameModel.java | 11 ++++++++++- model/Player.java | 37 +++++++++++++++++++++++++++++++++++++ view/GameView.java | 14 ++++++++++++++ 6 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 image/Images.java create mode 100644 image/player.png create mode 100644 model/Player.java diff --git a/control/GameControl.java b/control/GameControl.java index 3667e7b..d0b9f11 100644 --- a/control/GameControl.java +++ b/control/GameControl.java @@ -1,5 +1,7 @@ package control; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; @@ -7,18 +9,23 @@ import java.awt.event.MouseListener; import java.awt.event.WindowEvent; import java.awt.event.WindowFocusListener; +import javax.swing.Timer; + import model.GameModel; import view.GameView; -public class GameControl implements MouseListener, KeyListener, WindowFocusListener{ +public class GameControl implements MouseListener, KeyListener, WindowFocusListener, ActionListener{ GameModel model; GameView view; + Timer update; public GameControl(GameModel model, GameView view) { this.model = model; this.view = view; + update = new Timer(1000/10, this); + update.start(); } public void keyPressed(KeyEvent e) {} @@ -45,4 +52,9 @@ public class GameControl implements MouseListener, KeyListener, WindowFocusListe public void windowGainedFocus(WindowEvent e) {} public void windowLostFocus(WindowEvent e) {} + + @Override + public void actionPerformed(ActionEvent e) { + model.update(); + } } diff --git a/image/Images.java b/image/Images.java new file mode 100644 index 0000000..501092e --- /dev/null +++ b/image/Images.java @@ -0,0 +1,37 @@ +package image; + +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.util.ArrayList; + +import javax.imageio.ImageIO; + +import main.Main; + +public class Images{ + + public static ArrayList images = new ArrayList(); + + public Images(){ + + } + + static{ + try{ + images.add(ImageIO.read(Main.class.getResource("/image/player.png"))); + + }catch(IOException e){ + e.printStackTrace(); + } + } + + public static BufferedImage getImage(ImageType img) + { + return images.get(img.ordinal()); + } + + public enum ImageType + { + player + } +} diff --git a/image/player.png b/image/player.png new file mode 100644 index 0000000000000000000000000000000000000000..b00590f48f18eac6abdec05fe9b019c7f0b780c9 GIT binary patch literal 8294 zcmY*fcRUpS|392@WM@U$l#x~0&a8y2tn5*gc@bxyQC9ZHimVDDTxRCUot2F2eU5T6 z&nDw{a(zC(?;kuI@AqrJUhmiI^%SLd{|+_fB}xDQK&^RK-2ea}!v6?>QIO%kFI3l_ z{ej5S;EpPwte0a6{{iTzqN4%;z~iZoY)SE-K^}L_JOKcjwzDsy4)-Dl{4ZI(G)%n= z-5-1T*gks%@UVU2=5^iekr&sE>*CjMK6)Yf2ms(5)l^q`0JU0u14_5lNa<)8)bvTZ zFGmgfT_8TsK*!;ruWY71#9exiRfPlLt{j_Bk)ivDgVgc1hea!?52B*zDpyZrcYb8| z)eDitp>+8o#3aPrA|Q~@NlTjCx8>2r=k z)R4IDz|JWwci4b>Y3C?mEppK@G6t!OjK$oCt51n#(?{#ACeL15Tn~s}-wHkgPs%>1 zu&kNA?42PB_dU2sRVz+9j>$}_xZ}d(&2lF?86}ORMW$d(FtwO?j1>+BeW1Xd8dZqA zmq#(IbnxccN$=ji(rL$O<>i_V?{THyw!tfD$DSODbN!z*ZiwaB%`q2nO^)e+Zkd$| zd()A}%p;#*6mU|IG*cmwj2z}ZN)4Nyipw>Qv1EU*a?p05aFDFzwme7nu)iYRcE6W< z_-@vq(SSohNlb;P)kTj(hnkI_upH@M^+8}y!xfm=KkMnQ4$ z^9xYfwTJdxs^31vwl@Yuzc5b^b>Wp};8*_MLr)$h7BvY3IVO1V{ha3+$q1^du-@&1 zcqr_2bl|eD$prnXj=E;TIa22hN0Whmr*Uz&d61a3ho`(0BfNqbIono zby@J&!FihBk4{sMI9NJ5AkP{(q&rSMRRX;kn(~UrZ`)WYp}vS}tJKWtXb$inB4;ps zki0q#@ij6nXj1F~#xPs-@)_5ODIycLBHEq&pmN4abrTPj8iAib3`M5CTy)sd0rg)S zVQGl+iQXbjcIHcrt=7B}lqzUW6PGz(c;!gDsfcsuUGq@pp$}P_gR}Tw>)RxwZC{T) z@CbY(#p|fGd_VcB*L%TYXHNECwrV8oHG0;+bdGT(Clpt@AOB^=?!q89y0Le0F|vVl z+9BynQh2z;LThSav(iYN{@M8!{#^!NQI&uFW1I=>HH!l^$5RRHpYWuM@Y3I<>5b0f z{!!hndR!#9^L}QC6D+O|Ek=L`L%&YU{Pjfjg7uvqMvF`K94_|uNg*BtxmdS8^^7Dn|8o4D7|K~HfdKC>DeIeq=`6-m3F23k zXg2n2@?zAG)WnHW?7hYHSw~^5ocpLU=A&|i`*KuG(>?ULQSnFX#F#{2W+J9{bfrf} z2BpYSeI$vFY#GCT3Ld>Y{YjQq^M(+Fs}2k$&wuaHI5sEGY3A31Y3)3tiMBVc4wyP!ab-A z`)LI9KV_xighnfa`Re53D%tEOvW}d|gW7`k>4Q&98;#M6HKw;$2;zomCTQC`j$yYP5#=dI1?$Ow&9g!O`+a>Pg*_G@o*l-i4zP$wd@}_ zN$`f}ej=Fa!7!il^5GU=mKHF6P&F4ZW>np$P8|H&9Vc}Xl#Dp#<{6eckE7gTfjM|V zus_bVwQ1d=rjD1<`ieb0H$6}{GU z$&B)eF@M1ybpHg03Wz(6BEgL*gcnKvRRP5(j%7K$3WboR6}E?@Y{PJ| zs|8+Xv2oSKxCmk?Ckn0fYRi?-)T>Q%VT2 zk1h=K_NSJ}QJ`aHz~}PDF(V?3dSj%yRv#(!+-mmlv@%14gM{UFjI13A+}1`BUY35% zPrZ=hRM9&b2DRJ8Qw#1q!y4cdE2H?gmz zjY_mNxs{MnQ2JUD)vFyYSRpLcn?Su>`Rxdr0p7pF*EZIj9}%ceq;o`6)-nr5ug9<> z8E_R)0}+k`t+mGP482RmO%MW`wJa=2U_i?}^B2n7)$oq|Ke8<2+NJ-CbB9 z&i)c*uAqb%o>iW-SHwv_x1V|%mhnx#iC2SO?tJybVnT|%YG1g@5FCi}!##l{Lsik} zMfHL36wDL&gMP{ua~DCZO8Ce4DZca%p*~}{M!!rO16N7WP@N$w;mG+Rx(RyrdeEWD z9V#S>I51CY`{xo}|2032+7_m5ihim3D@N->=W)sUp-c8v`7M?RP?pYew3JC?;g`Pb zw!9Ph4SC4xF-Rkxvg)zVKHFta1JzNi|H8uuItKV>)8?H(hc;tJ448@|g2V*W*Yyp3n$1+zUxffO z$^;_&($e(mzWKg9xb+1;%@4qEI&8*10`8s@)2j?D|_F(L7 z(}QH~7~6OT-ZH( zwG~en~F}FitGGQLBW;eU4Sdp>&^c|VV z*_fNX-CBYc6KZ1E_WDh1*WmbFm?`TR$B&#xY5d0H$ z3#fKoala~@NBI(bB4t3U!23zx?Xz(UDiM4kDkZNQlobH6*e33@x`04x8phgsjCg z>G<;zUJfZk)E*NHs80os7&@86GCSW0Ft_mXMuG04w=#1_RE((b%o`El=&F zz33e=iVn|lI-Lc`gZ)M>+3t}DaJz6ZQ(oamu@NU?JEfSy>KLroaQluD3#pK$c~2F=`I|uHQ>rst z5?Y0x2avUt$439ik~nsF%OuOVBD%Uv#t5%`T(li!zZA9Issd+%Y-f_~Aa+8|_we{DhmzbCo^mj6e1;@-LE|G*u z_9gPR)}RC@4-#27VRu0=mcZ*2_#8}#AR2zT&)|3+#IW}*^dgzI+&CEf-YPl3PmUer zQfM_=pt)?BK)#?R6S_!9CZ`)hLRMFM8NCNdY2dPehj+Sr^s@~k+OnK|Scs=jSKGKR zqyrKAIT0FTzgnh9if)aNO=a+TTV^m>*3aXG&CTJ6`^ zMJl`kt^X?UTButJV09h(RH*kDY-`EOVK;pp&r6}>7D>lLVdu%*SHd)EYmG?&Z-z#7 zVij?vo)SRGndLX0!#xwe!15SdhhdK&ZhDPg*mj;&9>q>p#jOp1ONhE6xckU9&YP7> zvC+|rr15w1Z!W+sQ?UUUK8~T>ht3Kv~5U?me5x?l$Qpq zlHz_Q&iy94c7auneyT9kt)EuzlbifmfAejSdqc4~%9@gG6#Ob! zH#sX3Hp|l34qDwtY;dA%(e!VyFXezU1wes&1FD@gf5=`Aj@sy znwesQ>Lq;PO16TEQ`D<~3*P$$s=VF(wG(Bf)3AHGv*F{_x7S6ondgcxGAFGu@=$-u zIH%Mjo8XQQUZ@kHbcH+(RLIeZ)Bf}%vt_Ap_-`~R2rU}wc)AD=_E%|)`faO18K&(w zr*aeD6AUeP-FP|EfB8@?;wbL=!R0p(dHahx{8rW%hz|OVsS%o?dmnt`a0vaX)T*Kp z5_IzHN2cAAb&1wwlb5B3U+7@yH=Cb{oWvrfAz+2Owh5YIo?&ixpXr*6kT?}|%rUei zngb8S7ecBD75D9j{2PEAhL{(N39NJ!HU%mC9p*2mX(d5uiq=dAPm+EsI(JNv`XBx4 zM0}q0$3N*BG`rAAVvMTMAwj%NGdn_v6yYz6KT+F@U98{~y+zr;>A--{4}HP?R}i^B zf;6tNPv>&t`v!$KDA*#+#`gid`%OvuOZ}NhLfcnFwdD5b*8DO2fNbK@w>?$Y)-M>a zI$$+cu0sdKZ zmHh`xiO|_FQPSFy%+xb(3j0w-K_t2Nh^3W0mcld{`?w`+7+yNVM`L8a1d_x65p*#5 zwoSS-ZzG$=>0nyJ3RTR$vt&pwM=Pr#apQiv-Ovuc-oars1k-3Hmy2i3NP(A!UV1h}+ zE4F#L)=?JG_7o~Om+K24#OBNc6)V#A82Zn^yQ2{}CQ+{YpPWDZ14r{bDlxa8+jeK6 z^=byHVDCz;65|Bcs0yvozj!3^Y4z6GyiJv@zVMX-+5oME$~B4bKOYx%3MhLoHbhSX zwYXgsy*3^8WNZ(8qJPUR{v^x&hS&C3{S83D@)Zg8GCol@Vbb*L0%VFsgdVp@+9&}s zoJpGO=@p2j!9_{!Z)c^v^4YU`ICblZ2}rf&MkJr1r4u0Xx4&O7UJ{8NKk4IH{>~T` zF%a&&mh?Q3Z9f%boMjTpc*k_((&$D!RmZNCmBnneE?h_&;7Uq;LLDuS+w)3f^>S0Q z2n*m6t6?J90-T3uNQO{N6xztfV(;B>Ww-zRODu6&xIxUXu80MK_?>Jf4fU*dM94eI zH$#uc_};zB{4-X=J{VXW&g*L_kl1`-oJ|LBNuypEGT)_J9#KzRB>wXldCdLe!xYhb zR9zASLOcsSl2IPIV*Km8dkZInm3?CYrm13yQ}T(@M}5q3@3Re~Q=S5{e~lHH&cL(d z##nR^Hka<7jt`@NdO0i>+`QHWgdw@Ob2l{YnfO-MLc}5rWLsz! z&%D0W^lk*8Fbuba=iA5qOU3s+CeUIX6@6-LX{pUsV}&+=H=XwlxzQV0JM5%s3Z}q0 zqX1Q?+36;xf~`deAEXA(z)c66YP=f0W*zOQIjJDCn3lpA5Ym|Plfkacc~mMhneo*L z_mymfx5;?m-kDtNTUZM=SI%P5ooF5_SC|i`-F!qCD{`Zc9x5;h8O!ainHyN#`cZ^Q z?EUCf)$AlWJeSxj8gu&k**i>7ZAnBDq8?^Vh|%KCrqIO#U#2%6-kCc#xEw>U;gr;q z$q7~oYfzB@zHOYDJoto3j^1;tyyCH=$IzMPf4&kTHVV(YY>Gu2d3_nr3w{C_dQ}oV zDcDpjkfd<&{G!BCN;Py{d>LXw%O4Wp`~7@&b1E`j8Y>9afS2@=wJiCm>2URVmzKQU z)%fR$Wu!2!sd;&)8p`OSOZzBaDc)|Lxd2gO`T-kUmOj~1T<6t28FNS8D#3)r_#);o z9ix>MB@OY}(c}5Gb@dj0d(ar2lBlbFY_Uos!5md#!zT?KhRHDKVh$rT8?N@|JfF9| z{r^t#KDIEokoX~5t-&M0+*M0qLUIXUe&qQc-SNH1j^D{zp}IRu9xGY| zR4%GjYpC=vFJ4i;$rXo8uFD?YYJHg1w4auEs1O}%o=#kD_vpvl!Dizl$oJlx1FYFa zk{?w9Iii-kqRUzKJ{jcPfkUVa(MF}EjjruCQK;#Tq10DO<8Xb~@gl)eZD-}9NM2l{ zI)uO3YU=B~z$>VBQSA^D_@__)vw^4&hJCE2bpNbVJGn-3;(Pi+9mOVQYq7OQ@BcNF z*?3K`FGPDi{%IwuWE9v__U(#4ru!du%#ncC7v?RZPi@V^K!TRKnBBA%Π4G$ zSeMaLFGzn+=2Pc(*|5@Q$dqef{H^K9&pMC_jHX2sH0|Q%576I0o=fadxPUBiTCzzQ zE33RB)Vr?KT-W01=6aOAPU|EZ$pYaGTJ&it_ii(B-N|8GPf~53`tg^eNlb()>LGD2 zv-^5e{w@~FR1I+mGSCxN*<_T)+~F`^S)pC{I!vfsLeJ{aq9r|~RY*NpB`U7+iWu|r z96g1hgWBqGhx%k+OXbhpN+l7l-CU?u3sk&JP5*e#5tl9$(!2C8g(9>oLIHQ0Di-Yz1xKZJ=Nz1*i0#5~_wIEbEo?`ENO;XoxjK`i3m!tpY+wnDOu zZLjw973mrq`1u4Is_l*WaIes3ay_?5S_qF-p^m&I&c7$tIf@(HnM{Rz`Iob#Mx&7h zcU_~3bRqwBs_)Mi^72@`#aM@$wvlNWroSSd%q|C+h`Nam?UeV$2$LR2qRtbGLX2!& zbt5}yrnZ+gqJwj5N%rjnkF8GJV2gEwNT=na8s$z#+sAfXSA;K~ZOGzsPMVDCmkO0Q zJ83r^V!9hyk=iK}8UdCYSbP6F%39k%tI^uJTX{(NAM|Wg+M5YB82EKCj_W$DkP`Aq zPIJSQOe)>B?v(`E1=0h!^IbOSKX?N|n`xQepJIem&#Yd-+bDO4ny4?{@$x~nB{@x_ z8erfDnT=iRDKZ2~muBsCS#M>)$DJ)_Z#Hsi`WY+=+e}G1=9irSY z!l9J&6q)-K?YRL?B3*&RclNA|8iY2qI}Y*IBrYXaR!H9g*Y9-?FCTwZ+`Y4Si#zUQ zo!OcRFW3N^LHoBq_(74hkRTScBEn2L^YSpgBJHIgjWGFf->?##82)`EOX76yd7qBQBb*)=uN2rd+e~@J zqTfgE#k|k2+9GMx!^{sVS&L*>h1F-5SPRo+-<5hIp5xiU3E{fJA2dLY?~JjR0^fRW z<2(P;$K3oc3FD=B)`v|?ySOovEWTc53$i)OP#+3o^^`ag$C-e|{58h3qUFzC8XZ|F zm%@|;ZOfisd@2Ac!Ebe~ub<{j27Y0{%%MK;<=St*D(j=ia^SZFWeJpJgnqM9SG&N|>YHeTSd+nE#ymzVrIy@bOU`R8J&LJjadhsQ|U^ygM#oe@)b~eC8z- z3K0VR>2J1Ud+`$;Z3ddKH`g;trYnp#iHG!^`BV_p@e`6@Ho9>rk0MHHFRrQ*w7nTiG><@8Eq_pea;7b0yWKsH!1sR#NS5TQ4ZyaLV^l4E zVQ6m>p2Z$AV5@{j0U(Jo%IH~Ju{TCte~}Q$D8_n}66OLV)8>M+-A@;Ra~xve42Rev z4#te4mv#y8Pp+ko-SopO9+@zSm(}o6ki|?Fur#D}k1?n%coO*kz>TL2Ykcq!Xl9+J zcoZsq7nE2|cY!Pz&2ki$v%!KtoE)k(+51<3TTwpG=x{0+e~i9ua@c2jQ|h3ioRv0R za;l?SvUQ(C2}*SuJ5!`LPUr@hP4U-hM{dw7Ix6@UujZbCLH(;8V*3%AL*3T%oKXZ9 zj2maFE9$IVz0YXz-A}oqDy1DJQNbV9XlzzG@b(PYnkPRBvEJybLVv1}KCkIqlQzi+ zf238Ymbtc9B84^#{ynymr^~i8OjI{8@Ej1EypEfT4-uSmFn2w#a4I#e0(os-@Qi)( z*7USW9?e#^?@90OQNwP!4aNHzoB>?YEc^ETZQ`HsGvN1^Xi`SYa%L(dsU4h4-z6yl zE&=|UEK1(-4QEIjRABY@jweQ1;;&R21wb28+Z^bdeU{b?oUsZETd4%P^a=QD<@+{< z>7SDO8S{noxk^JZhx&bH`L4#>A3y#z!fm&E(N^%}{YV?T6&hSZMVG3QD?=>bTX{u& zHPT(@Hs+w8b-&`1=YQ@8b1MlInYb4{t)V9*af0hY0Z^juvr}N}&W04JmYt?#Thc0S zqf$X}4UcVF&t7HY5KG&h;VZhc+8l@nGznwPr`Q?QPZg0)mhhA@eDM!Zu@Hpv#OV|y zdTe^FCc8;%etsbSvml@p57lwq-sHkx?^a5$Qmqhkn|flAGO0nlEw zRlv>%^3Q&{jFyE!8ADdAJ2QTIL577s>MX6Tg~)Z4;!$YVsovRxE3=EI`@uDByJOcU z9na{laYI?}HNVV35MtJ4-u|AdTiUeVipbBH7op}!zD`ScSUfcR=Lfkxs>h2=c@u&y vhW}CWEV5~EX^~%%G`GXsh(@F1l!RAY1sk^G1jPRv06 Date: Fri, 22 May 2015 12:15:16 +0200 Subject: [PATCH 2/2] Timer changed from control to model --- control/GameControl.java | 16 +++------- control/GameStateManager.java | 32 ++++++++++++++++++++ main/Window.java | 5 ++++ model/GameModel.java | 16 ++++++++-- model/Player.java | 3 +- model/gameState/GameState.java | 22 ++++++++++++++ model/gameState/MenuState.java | 45 ++++++++++++++++++++++++++++ model/gameState/PlayState.java | 54 ++++++++++++++++++++++++++++++++++ model/objects/InfoPanel.java | 17 +++++++++++ model/objects/Lines.java | 42 ++++++++++++++++++++++++++ 10 files changed, 236 insertions(+), 16 deletions(-) create mode 100644 control/GameStateManager.java create mode 100644 model/gameState/GameState.java create mode 100644 model/gameState/MenuState.java create mode 100644 model/gameState/PlayState.java create mode 100644 model/objects/InfoPanel.java create mode 100644 model/objects/Lines.java diff --git a/control/GameControl.java b/control/GameControl.java index d0b9f11..f84ab47 100644 --- a/control/GameControl.java +++ b/control/GameControl.java @@ -1,7 +1,5 @@ package control; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; @@ -9,23 +7,20 @@ import java.awt.event.MouseListener; import java.awt.event.WindowEvent; import java.awt.event.WindowFocusListener; -import javax.swing.Timer; - import model.GameModel; import view.GameView; -public class GameControl implements MouseListener, KeyListener, WindowFocusListener, ActionListener{ +public class GameControl implements MouseListener, KeyListener, WindowFocusListener{ GameModel model; GameView view; - Timer update; + public GameControl(GameModel model, GameView view) { this.model = model; this.view = view; - update = new Timer(1000/10, this); - update.start(); + } public void keyPressed(KeyEvent e) {} @@ -53,8 +48,5 @@ public class GameControl implements MouseListener, KeyListener, WindowFocusListe public void windowLostFocus(WindowEvent e) {} - @Override - public void actionPerformed(ActionEvent e) { - model.update(); - } + } diff --git a/control/GameStateManager.java b/control/GameStateManager.java new file mode 100644 index 0000000..2fba925 --- /dev/null +++ b/control/GameStateManager.java @@ -0,0 +1,32 @@ +package control; + +import java.util.ArrayList; +import java.util.List; + +import model.gameState.GameState; +import model.gameState.MenuState; +import model.gameState.PlayState; + +public class GameStateManager { + + private List gamestates; + public GameState currentState; + private int index = 0; + + public GameStateManager(){ + gamestates = new ArrayList(); + gamestates.add(new MenuState(this)); + gamestates.add(new PlayState(this)); + currentState = gamestates.get(0); + } + + public void next() { + index++; + index %= gamestates.size(); + } + + public void update(){ + currentState = gamestates.get(index); + currentState.update(); + } +} diff --git a/main/Window.java b/main/Window.java index 97c6fea..01af042 100644 --- a/main/Window.java +++ b/main/Window.java @@ -10,6 +10,11 @@ import view.GameView; import control.GameControl; public class Window extends JFrame { + /** + * + */ + private static final long serialVersionUID = 1L; + public Window() { //Create window diff --git a/model/GameModel.java b/model/GameModel.java index 4b7a75a..2ba007e 100644 --- a/model/GameModel.java +++ b/model/GameModel.java @@ -1,10 +1,16 @@ package model; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.Timer; + import view.GameView; -public class GameModel{ +public class GameModel implements ActionListener{ GameView view; + Timer update; Player player; @@ -12,11 +18,17 @@ public class GameModel{ { this.view = view; player = new Player(1920/2, 1080/2); - + update = new Timer(1000/10, this); + update.start(); } public void update(){ player.update(); view.setPlayer(player); } + + @Override + public void actionPerformed(ActionEvent e) { + update(); + } } diff --git a/model/Player.java b/model/Player.java index 656e473..896c7ae 100644 --- a/model/Player.java +++ b/model/Player.java @@ -6,7 +6,6 @@ import java.awt.Color; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; -import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; public class Player { @@ -32,6 +31,6 @@ public class Player { public void update(){ transform = new AffineTransform(); transform.rotate(Math.toRadians(index*45),middlePoint.getX(),middlePoint.getY()); - transform.translate(middlePoint.getX() - width/2, middlePoint.getY() - height*2); + transform.translate(middlePoint.getX() - width/2, middlePoint.getY() - height*2); } } diff --git a/model/gameState/GameState.java b/model/gameState/GameState.java new file mode 100644 index 0000000..bb78b3e --- /dev/null +++ b/model/gameState/GameState.java @@ -0,0 +1,22 @@ +package model.gameState; + +import java.awt.Graphics2D; +import java.awt.event.KeyEvent; + +import control.GameStateManager; + +public abstract class GameState { + + protected GameStateManager gsm; + + public GameState(GameStateManager gsm) { + super(); + this.gsm = gsm; + } + + public abstract void init(); + public abstract void update(); + public abstract void draw(Graphics2D g2); + public abstract void keyPressed(KeyEvent e); + public abstract void keyReleased(KeyEvent e); +} diff --git a/model/gameState/MenuState.java b/model/gameState/MenuState.java new file mode 100644 index 0000000..ba19fba --- /dev/null +++ b/model/gameState/MenuState.java @@ -0,0 +1,45 @@ +package model.gameState; + +import java.awt.Graphics2D; +import java.awt.event.KeyEvent; + +import control.GameStateManager; + +public class MenuState extends GameState { + + public MenuState(GameStateManager gsm) { + super(gsm); + } + @Override + public void init() { + // TODO Auto-generated method stub + + } + + @Override + public void update() { + // TODO Auto-generated method stub + + } + + @Override + public void draw(Graphics2D g2) { + g2.fillRect(10, 10, 100, 10); + + } + + @Override + public void keyPressed(KeyEvent e) { + if(e.getKeyCode() == KeyEvent.VK_Q){ + gsm.next(); + } + + } + + @Override + public void keyReleased(KeyEvent e) { + // TODO Auto-generated method stub + + } + +} diff --git a/model/gameState/PlayState.java b/model/gameState/PlayState.java new file mode 100644 index 0000000..b5cf5c9 --- /dev/null +++ b/model/gameState/PlayState.java @@ -0,0 +1,54 @@ +package model.gameState; + +import java.awt.Graphics2D; +import java.awt.event.KeyEvent; +import java.awt.geom.Rectangle2D; + +import model.objects.InfoPanel; +import model.objects.Lines; +import control.GameStateManager; + +public class PlayState extends GameState{ + + public static final Rectangle2D borderRect = new Rectangle2D.Double(256, 0, 1024, 1024); + private Lines lines; + private InfoPanel hsb; + public PlayState(GameStateManager gsm) { + super(gsm); + lines = new Lines((int) borderRect.getX(),100); + hsb = new InfoPanel(0, 0); + } + + @Override + public void init() { + // TODO Auto-generated method stub + + } + + @Override + public void update() { + // TODO Auto-generated method stub + + } + + @Override + public void draw(Graphics2D g2) { + hsb.draw(g2); + g2.setClip(borderRect); + lines.draw(g2); + + } + + @Override + public void keyPressed(KeyEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void keyReleased(KeyEvent e) { + // TODO Auto-generated method stub + + } + +} diff --git a/model/objects/InfoPanel.java b/model/objects/InfoPanel.java new file mode 100644 index 0000000..30b0c4b --- /dev/null +++ b/model/objects/InfoPanel.java @@ -0,0 +1,17 @@ +package model.objects; + +import java.awt.Graphics2D; + +public class InfoPanel { + + private int x, y; + + public InfoPanel(int x, int y){ + this.x = x; + this.y = y; + } + + public void draw(Graphics2D g2){ + g2.drawRect(x, y, 256, 1024); + } +} diff --git a/model/objects/Lines.java b/model/objects/Lines.java new file mode 100644 index 0000000..e8e5335 --- /dev/null +++ b/model/objects/Lines.java @@ -0,0 +1,42 @@ +package model.objects; + +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.Shape; +import java.awt.geom.AffineTransform; +import java.awt.geom.Line2D; +import java.util.ArrayList; +import java.util.List; + +public class Lines { + + private List lines; + private Polygon octagon; + + + public Lines(int xToRight, int sizeOctagon) { + super(); + lines = new ArrayList(); + int middlePointX = 512+xToRight; + int middlePointY = 512; + int amountOfAngles = 8; + octagon = new Polygon(); + for(int i = 0; i < amountOfAngles; i++){ + octagon.addPoint((int)(middlePointX+sizeOctagon*Math.cos(i*Math.PI/(amountOfAngles/2))), + (int)(middlePointY+sizeOctagon*Math.sin(i*Math.PI/(amountOfAngles/2)))); + } + AffineTransform t = new AffineTransform(); + for(int i = 0; i < 8; i++){ + t.rotate(Math.toRadians(45), middlePointX, 512); + lines.add(t.createTransformedShape(new Line2D.Double(middlePointX, -213, middlePointX, 512))); + + } + } + + public void draw(Graphics2D g2){ + for(Shape s : lines){ + g2.draw(s); + } + g2.draw(octagon); + } +}