From 4b443ce7fe6ff59a44578030e5f34a625b1a1b0f Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Mon, 12 Dec 2016 01:26:41 +0100 Subject: [PATCH] started scoring --- bin/de/deadlocker8/roadgame/logic/Board.class | Bin 5552 -> 6028 bytes .../roadgame/logic/CenterType.class | Bin 1237 -> 1289 bytes .../deadlocker8/roadgame/logic/EdgeType.class | Bin 1116 -> 1169 bytes .../roadgame/logic/ScorePosition.class | Bin 0 -> 1246 bytes bin/de/deadlocker8/roadgame/logic/Tile.class | Bin 3562 -> 3165 bytes .../deadlocker8/roadgame/logic/TileType.class | Bin 5297 -> 5341 bytes .../roadgame/tilepacks/TilePackOneTile.class | Bin 0 -> 769 bytes .../roadgame/tilepacks/TilePackTest2.class | Bin 843 -> 808 bytes .../deadlocker8/roadgame/ui/Controller.class | Bin 16810 -> 16931 bytes bin/de/deadlocker8/roadgame/ui/Scoring.class | Bin 0 -> 6984 bytes src/de/deadlocker8/roadgame/logic/Board.java | 198 ++++++----- .../roadgame/logic/CenterType.java | 2 +- .../deadlocker8/roadgame/logic/EdgeType.java | 2 +- .../roadgame/logic/ScorePosition.java | 6 + .../deadlocker8/roadgame/logic/Textures.java | 2 +- src/de/deadlocker8/roadgame/logic/Tile.java | 32 +- .../deadlocker8/roadgame/logic/TileType.java | 36 +- .../roadgame/tilepacks/TilePackOneTile.java | 16 + .../roadgame/tilepacks/TilePackTest2.java | 3 +- .../deadlocker8/roadgame/ui/Controller.java | 2 + src/de/deadlocker8/roadgame/ui/Scoring.java | 328 ++++++++++++++++++ 21 files changed, 507 insertions(+), 120 deletions(-) create mode 100644 bin/de/deadlocker8/roadgame/logic/ScorePosition.class create mode 100644 bin/de/deadlocker8/roadgame/tilepacks/TilePackOneTile.class create mode 100644 bin/de/deadlocker8/roadgame/ui/Scoring.class create mode 100644 src/de/deadlocker8/roadgame/logic/ScorePosition.java create mode 100644 src/de/deadlocker8/roadgame/tilepacks/TilePackOneTile.java create mode 100644 src/de/deadlocker8/roadgame/ui/Scoring.java diff --git a/bin/de/deadlocker8/roadgame/logic/Board.class b/bin/de/deadlocker8/roadgame/logic/Board.class index d98dedf6e198e2131c10ee4bbacd6e4483d7784a..d769c1b96a21bf4de46407cb93bfce16230e4b4f 100644 GIT binary patch delta 1529 zcmdm>-J>sX>ff$?3=9k=45!!`m>3z9Co3|`ZPd$P7h+^6;bCxOaN=T6W+>xfC}*gc zJdfRko0Fl6p@yBInvp>bq*Tl`B|SByvLKa*p_ZYJk%7(GF*wA>b+Rn8(&Uru+-X$| z4Ll5u3?_^WY^jB%i8;j}{mncKEg;2Q5XJGXel8$e+ISe+87deVSkhBVf<XeEJPchh z0auVf4-Z2xOdy<*fg>-qq9i0UCv~zP$0mWvJPfG}X<Q7#3{!a+rZG&PEWlZ5JBNp% zpJ4(>a2^lCe1-*#3@pW&RjG^&%o>`WAR`y?Ff3*eU}WGf$}dSQNe#+O&nN+jFXdra zHu)H*AImC626d26g<UdpQ}c>5^YgeERx+&NVc=$1JK2+~j&b|s6I?RVI~f^xo$?cl zQWT;~GILUkZMhh>G3*AZ+B5k-mlVe~hJ8E?`xy>QR^+zkKg7tu7z<Kx1SEEJayGXS z$2NxJJPcbHwr*a^ZOmHF)WyKUz{<eDSfwQ+%aXE<A!8;(7?fFT#iG59p>z{N<u-=; zSquUYPSZAq`k4%hk}TU8S~oF(c(WK(pgf2|G3GTOrC>3zPFChMS~4sNvM|%ZOt9(o z3?0bEcR&n;8s81!L5=T*DTEl`0W!WDVZ1C$0?c?Y6Kp)lg%CG^91nFa)bvu2>GdFw zfn5*xCdBwwknyDm<5^M=t_Lw8#>3qNG9Kz&sPRy*KphYFCB*b@km()U80zb1F|abP zVOhh#z`)EP&A`A=#vseUz);1&%}~Q2%23Ck&(Of&&CtZ)%h1XY!_dwU$I!!&$<W78 z%rJqWmthjaN`@&6s~M&<>|&V7u!mtD!*PZM3>O&|F}!A2!pP3BjFFRJC8GqxYDOuB z4UDP`n;7*OwlI1!Y-3Di*uj|2u)ChIjA1Wh1;arG83qQ1AO;RlN??#>kYiu~v+@`$ z7#P8<7=~B|CNL|GA(nxeL6pIhp^w3WfrX(M&bkO=G3vuu43-QG3|b64e;D-H8I)yz zF$nx&&_l2k5lkqHff1CE7?>D185kIt7$#2sA!y7pX&b|o$@)Svg2xy*7)~(AGn``3 zVmQHI!f<wSjF2MZjLCIE(u^}E&k|B$p2;w4@<Aby`q|qU=FVbp)!xRiP)mCo1B7dY z%9X&v1*hF5+S?eGEN5T`QAm+v#lXkFz;KCyo8bxrKf_f9DTeC|att>ZG#PF&=rY`9 zuwb~$V8d{a!H(gv0D}|569zYiXAGVUFByCp-b_vr)?!}HuwwE=;n~3}Bc)|zMOn5p ztlj{Rc{>Jv1_p+Y3``847+4rSGq5pyVc=x=#-PaXgF%ns7lQ@EUj|o({|x?&ObjuM zEDULk><lH0oDB60-xxX>c_-J4h|8~Ih-F}8U}2cVupS&;Yzz|^Hh`mxlcASk<K(R( z!OWW&Hc#dj)nH>3V&G&Ho@^;9AF+jDD+40~F9QREGXpayz8NHUGi-|#+OeHsm(~^r sv26@{g${0GIJ}MF7|6X$;FQV+QphL)PB=UuHiINI;V?3s0LR@)0C#47-~a#s delta 1100 zcmeCt-=HmU>ff$?3=9k=42Remm>3z9Co3|`ZPd$P=TK%S;bACcD4V>3-9(Lxfsvtt zhryA-iHkv*p^As0nxTx5fh9e)B$$h#mZ6@Vp^lM34WxInEeD4I4?_ck2_pkrYGG+& zPBBPJ6Awc(Op7Z>pp}QA4JHsic^$_lfo>j#RE9Jz24RL?9)>=K{>cTLm9|rO7}^;+ zK!VeF7^XAKU}Rt^&a6shWMJ0N^aPnRi-%!0g8(A~cTs*xVo7RHW_m^mNPI32!@S9A zTz)Kz7#Y+-4ik3C%uUTJ&dkr_VpzzqgolBfVd><RTy>1=Cu?xaNN;3h;C0GREJ{&` zF3HSEEw<%iSjVs#q-x9Lcy1|<bqw2h7`8L)nB2&1&A*G0fiV`OU=K)a@8r|mMjY!H z_VX~TVOYDFmB*O1o{^7%m4StUfuT!FMwTUI8$-rS1}W`r48>4x`8I~iZ45QD7+9It zXvwf7$ih`LLb>JJ7+Mf2WLXm6Dk?!{By3|S-^NgkP{ERdFr%ejO9sp@-^S1gQ^K-_ zfq{XUL7IVq!Hj{Ifq|ilft#U*L4l!;L5ZQ6L6@PG!HJ=r!G)oR!JnazA%$TALmI<W zhC+tv3~dZE89Er|GRQD6Fla%%#URTd#{dFd40#L|42&SJGQ=>%GBANyN(^xfu?)-% zmJAFGYz!<)ii(O1jG&lgU}E58U|?Wk=$w2-*qEhj8$-`zZV?&5MGPDaOBm!CmN95C zEMYKVSUK53M3HgA<R}qo#tD<lL{#c0GE8D%1iSkX0~6R5e=Y5843oDpOr6Exs=bY2 zCW32(%9X&vWnQDbjbRQ5FK1u}QAojK#lXkFz_5;in_&Y3Kf^`_DTd7q>T(QQ7&IBS zG3YXEXRu({$za2<i@}azKZ6s)0R}gQLkyk_M;Uw>PE2+X)ncB{uwZho=<NE1k<v1< zqAc4P7H@!uy&VHT0|UcZ1}27c3@i-i8Q2&uFmN(lVo+qb!l1`+jlqK9CW9-(Z3cga zdkirQ4;a!I9y63MJY}e7xWv%O@Ddycb_{F`3=Gqtalphdg<%;(ECVA03&SLa<={AA zW0=6Of(sl6oD97TD<@AB3ua!$uzK=yF%33`cMO~i?<b3j%iFABSPKnRX9i|)EK2TX wSQja@VLQVntt|{<+ZeVA?cBz&dmF<(kQbQ1$%hTB@XO=^aZ&aI;MhC}07+v0yZ`_I diff --git a/bin/de/deadlocker8/roadgame/logic/CenterType.class b/bin/de/deadlocker8/roadgame/logic/CenterType.class index b31e76b38449f2fe3fb3f95b2ff8225b7d0f2c11..65050bad771b43ca35e05a7554646de24ce2d847 100644 GIT binary patch delta 586 zcmcc0*~!Iq>ff$?3=9k=40aQ_mT+=-h59*%c>4QITocVE%)=nUAUc_sQ7urMhk=!W zje~)mlYx;ziid$6#NhyOWO*1kKpajGM}dcd6U5;Hag=!&xIi3k5J!!Nft!I1#M0nl z;9=mMT+XP?C_H&Fqm!HggAqG}AtQr8R$^JAeokUux_)qFaY<?}4}&p-$z*1x4mJxO z22%#h$rG7YGqO*%W!9*7kOUdWz#t$6GK_(NfrWvCfscWofssLgfq`K@0}BHPRPSbB zj1&@N-p(MjnL!N9kzfIHB*7eMRxn2f%#mXQbL7DsMRqVp3CvO90CQ9Y*!D6oMlx?= zs22;4WZA?Z863&Fi9sefl5G=%d~hWDCI+S8NRCYms==EX)HgCPFfcJ_GB7Z3F)%SO zFt9TCF)%Y|fki<wA`GHX*BUY~GcYqSFtBTB%WP-RMrdSXU}Ru`YT^O2*%@>g*cce< z88{hq8T6p~%@|n0`o%Ues7HD;Ywe4)0lCwcS$YS9zRm`)jUabGjAMkmfs?_M!3=7K h76TL50xls&tsM;J2N)P}>tkZzw*nh#&0qtjZ2>Q(O&$OM delta 534 zcmeC=y2{CQ>ff$?3=9k=3|14lmQ36k$tJ|ZAj}{#S%Oi`MU01mm4S_eft{0qkwKD& zfgQx*0C8k^7&t&2P7p_)hk+Bs;R11#co?`C*gz~59tLg(p2_`;+KfVzcQZQ4=`iTA zGw3oh2xKLeCF<uS=B4WgR~DC~=JGJ;GZ;*kX6j%w;bAajFrB=TX*DC;<WOdfdI2er zAq)%*EDRhBybOE{j12q?3=G{2EDRu!zMFwDQb>S#JA>e622n6aoCVC00CS{R!5nEY zN0trDkppuS*ufk{j=c<wk<6PIM1vz)HZe#9N3w2WkPePy+r%Ij9LZk4i9s=VGlTL* z1_lNu22}<I1}+9B1_lOJ21f>F1~srKNJf}J1nM$F24)6k1_lOpEp3_Y4C)AtYz&MH z3{XuxU^Y901_K)d0|O_6CW97KyBPy3Si9IJ2IWX^<|3_qkv1R~`Z7!JV9?gt0Jah2 u4v2A#a5r!=7%~_^4bfs?0$ac(#Hh7{!T10JBW`_63}#?6%^57fv?T!bSwzwR diff --git a/bin/de/deadlocker8/roadgame/logic/EdgeType.class b/bin/de/deadlocker8/roadgame/logic/EdgeType.class index 9f4e1e0a5de4ad1283c3f0f788cba96bbce0f029..ca53f7a1949f36faf120b94122eb729e723e46fe 100644 GIT binary patch delta 551 zcmcb^F_BZ?)W2Q(7#J8#7|hrim>3z<CMz<jO*D(-=5lrn4)Jk~clC3b*c-_v$ipDS zAUyGnnz<+s11kd?2Ln4N10#b34+A@h!vW$*^DuCLIGiAk91jC00~?5?z{9}Bz&+W9 zQJYb4at5P=oCbpyJA)=8gFsedS)zVUVqUs_aAk2xYAz3hHiOROV~lNV20RS942F|~ zn3mVGI!J;nWMFWR1la|qIT+Z$G$)7_kOG;{z`(%5z`?-7z{|kMz{kMAP{F{$00JSq z85kpl_?fpe2yA8$0dvGyz#MTfN0JrHkpgpM*uWfF_Pq>@k<6PIM1t!hSvE0<2S>7Q zVvq`sWZT3b8@!o8ej@_|0~3QH0|NsW0}}%S11p0G12cmXSQI29#2^fHh9Ltp12Y2y z1G|>C%ytH4ghn<7Mg|6`CLS=Gok0cU9|leaRR%SvcC&g0R<M4tO$_pp-ppG2B5go! z^JSLa!Jw|Q0c<149T4Lf;cnn$&}Gnr8luI(1h#-nh*4_?gZ=>qM%?<C7>vMX8Z(%H HX+~23LzF}Y delta 498 zcmbQpd51&b)W2Q(7#J8#7>w8%m>3z<CO>3Sn`jm}aZWg!01ty8gV4mEYFZ*Z46F=n z91QH742%roJPhn04hM)M#lyhCzy@N;@Gx*Pa7_+l)MgZz+{EZ0r^2Ad&Y;T3Adr<< zmZ+bTn3t{}Tv=R_n#;qW&Y&^*0b?7R4iAGSgYM)Ursef44w4`{7#JKRLB@k=4hA*` z1_3FMxeN>pEDRhB+zdPnj10UC3=F9ZEDRvvxSN47QizXvI|Kh_24OHqlm*NY19K!; z!5m4py$p<z%$pd5gCkisF^C06vTkCK4BpHjy^(=|fr+7BmVtqRi-C!Ofq|7loq?G_ z4lE3k5@Zm9+G)tZ%)rdRz`(AhEwi0L9-<SZk&S_ofdQ%s<Uj@nb_NBI;~6*^6d9DD z+RYeP!P><(F-S*xGi&XOv;jHFmsxrTL#ndQ2C$6?;~3#?;AGHb(1IGG#lQr%j7x}7 YYX^h&0R~3g`j{B>z-H<*7=UR*0MAf7C;$Ke diff --git a/bin/de/deadlocker8/roadgame/logic/ScorePosition.class b/bin/de/deadlocker8/roadgame/logic/ScorePosition.class new file mode 100644 index 0000000000000000000000000000000000000000..1dfdede1104449f8c5cbf5eaa8b4d5eafc142e8a GIT binary patch literal 1246 zcmX^0Z`VEs1_l!bD|QAZMh5MaRQ;6H#FU);<m}WU3;m+}#FX^J+*JLX{PfIZ{ov&M zqSS!=;>?oF{5*CB7DfiXti-ZJ{hY+SbbZ&n(p*LcRzLrs5D!KMT^|yRvSwspadiw1 zVPs$p_74SVX9;%&aoL<*{X$%W7#X--{X%_J!W?}<U4t1J^rA^Lox>(MCo?az#Ey}H zSwl07k%7fIKP8oeft8DakwJ)uL6|{=k%7$yszgk~2jQ*YlA_GKbZbw|Fir+W1~DE6 zRt7c>26hlfl81pE#NhyOWOx`jKpajGN1lg)6U5;Hag=x%xER<#EEOIGZU!Dk27aH+ zyi~u^+@#c^ki?{%R7M6NpZw&+oUp{AOb{O|$i=|SAjHVPQj(Eb%*eo2mY7qTTFl5` zprJ{c@3|Os81&c~bQu{0kbG5HT#}m0!=TS#z{tRvSX7i)nVerx$;hCE?05g9tkmQZ zYfq%$fC+hmLXjQpDE~A@21jIV&>+(!DUv|mHQ`|}WH4o9Fhw@aIVZ8W*c!<RaN`l) z0i``_Mh33n{L-T2RJTlUkfNkkJ&<BX2F~Ej^t{B9(xOyG274qkK?c~6<X$^#2SWx% z24)5Z1~vytP^w^HaF7Hg2r$jTzy_u{p)?nW7LWqPKLY~;3j+rOF9RO~BLhDJ14B0h z3j+wG?`B|(6cS+G&LFs%K@`jpX9060z#J)7Fh?59k!1sO<iH#Sb}&bgV=n_^B=aT) z(cnmyO$-vjk*u2-q=O^bHZjNrN3w5XPz>J8puCZRfq{uZm4ShQi-C!Ofq|95k%5^( z4J-<h5oQp9I?RxP8SFuJEp3_Y4C)AtYz&MH3{XuxU^Y902FQmDoD7-_T2Sp~46I=7 zVw)J0BfXim_C?x&+~><Iy@NqpX9L(mkTW2rF~Xg|$zaG}1T{m8feCCrmk^`Y4hG`` T42-z-F)^5d%`|7Q0MnKL62uj= literal 0 HcmV?d00001 diff --git a/bin/de/deadlocker8/roadgame/logic/Tile.class b/bin/de/deadlocker8/roadgame/logic/Tile.class index 353ec31f90ee61f0bfa879869a966057cf9e4ee5..470d138b908273e7ebc9045cbd0b07ca0aef9c6a 100644 GIT binary patch literal 3165 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 literal 3562 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 RhGGQ;1qMcjdT^=G007vz=j8wZ diff --git a/bin/de/deadlocker8/roadgame/logic/TileType.class b/bin/de/deadlocker8/roadgame/logic/TileType.class index 7c39c14ec9f44df69a4dffa6ebc4cfbda6edc71f..cdf5661d7657148b9499a7465e5323098ab47678 100644 GIT binary patch delta 2504 zcmdm}c~_J7)W2Q(7#J8#7(TNzFipPCqPS7dh?SGWE7Z?9#M9qza~dlvW4!}|4-bPc zg8?H0tE+E7NF*l%BZEH=13Lp72LlI)6U4*70pf6iIH5cYoFEPth!erXzy;!Pb22zE zMDs9cG8lk_V|f_3LBc#BP67`D4~WAH;w1Ah@PaseAWj+&10MrhJqH6nh?mL3zz>oV z;AF61$l+ngWzc41;Bs~h4)Jk~clC1tsmbSI5CEwW1aXRZ7z9BaArPmOhd~I$5e9K8 zco>9191#$wnukFI#1RFVTgSst4>FexVlK$p^^H6Xq7ZjCgIH`F3}PVhHjq-VcRF|& z#6Tv9gN*CuVGsv#BtV=#9tH^zM-s%D$ipBB;z)rwQ+ODpKpbfhXF3mqG>9Vu;>_Y< zkO6UIL7cff4E3@go*c-^1w0Ja5SJ|CVUPm}%Yzgx<zbKqaTGwD6+8?IAdVu4vzmuN z5yVjfan|uLD1kW2AkIb}24xUO1;p9H!=M7<sDe1#c^Fhd95oPU7Y~EJ8i=P3;_c;O zPzP}|K%4_S3>qMgCWvzw6t`?3*3rqi90oooc^KRnPBAiwY4~I%mL=-vB<7{-2bUCO z=A~PEYKDOnp5bB8V$cS$&haqlKv)-e7<3`5OFRsE5Z0B+FF9_=J!N>#&hU(pK>*3P z%HopLTporO3@<0&=WJtp%fs-B;oatJE=ML;@9hjOn;HCeGcZO91+Z>nFb5->O$;`h z7$9<iV7Xv6umoJ%9;`0}EEhKUBadi(IG7#D0agbwz-ALe6j)shST0TgVu%e)2}Cj; zESV_44i+{CTMgHl1eQz@fEWw69-=c9ESWCAxrxEN9;VwIW@!dkHcNnO6GJx4P`I!1 zz>)<5+%QRq5{Q=z!IH%SJYY$P3|wakSh7rj7bXdjuZL(Y2g_Cp@FB@&!-BF3ELkJK zzlot1j3B|(01l%juw;vX08FM9?C4goWII^0Q$P?b3DI1;i2)+n1(K{6>Jbn^lC^=! z_JU-E`UQl+E`kKFIm|^9z><>$L|~E-d5B*ogC(a5h=L^{u?E*U4J<iBKnyHtzNsFX zbRY?1CRld1fH+tdqSa;-14METSaP0#1XvPcqs=CU`Cy+e1WPU!kOWIY0>~UDxdbe^ zOh5`OX$~Vn&aL0fupBJAQa~Cko()S7Alc0ftH6?L1Y}^65P67;)`BJ13&_F(5R%X! z5wig-xk*3{Nz!H$14ME&SaPd?d_7DS;#r97Hn8jt0R^z6Ihce;%ucZ6ZUIHGFhtTE z7HfOJlKTXdz><&%hfD4UOCA(Z2B#267}dkG%pn1ly$p<z%$pcIf+JZrG57^XvTkAs z431>m#1Il3$-appJQ$QsV}c_=88SXN5|s6lf+InhEHyY1l$|nyBSHBlFE|pELkfc< zL3yDhI1-fV%Y!39$-62z5|ogef+Immw!J<$5|lc-f+Io6us1jol;9==M}m^p<lsn9 zBAON)2}&+AgCjxdVoq=*C<QDGjs(T^lHf>CtS%3Z1V!Jf;7CwJtqqO@MahQXNKoK! z4vrL%-^8#jI1&_|JA)%ZA-5+u5)?-Jg9Rf&!Eq>fGsBUM3=9lR496z-32tXRKG{u3 zQT2qD?pB7=T9PbV8O~}+vTkKKuO-R0mEoe6B>Pr|%P{plLdu@U85kJs7}yvX7*rUp zf@u)z8iO_iGg$08gEj*Tn013en}HR~y2+poR;j{pi@|__oq>_zHp89C>xHG1k1;SX zurV+)Ffe#BfK28Avss}gGcw#|xHI{Uuv9%logY?p_ZaRlFfy1jFfiydFhb1G+QM*t z1H_|nOM<a#zK>P&MI_DjU?U^2>VClR5R289k#vJK$70dU$?%BbF;ue|11mTL#Wpb< ziS%aH+81d9N~FHb(mNQQr0Ad<#|So#iGhKEli?M^Yp5Yw3`}6lxP%zBb}+m-z`%%G R9}~lSaOiws_z0#y0RTaOI(q;B delta 2428 zcmcbsxlxn%)W2Q(7#J8#7~ZloFipPCqPS7dh?R}i)i)p{a&smtD`Pz)gAWe_I|CaB z0|zGqBZEH=0|$u13E~9tFmQr6Tp&&;4+9s7!_CRyz!1U1pvhnW5{}|w;06ivfH<){ z3_KtXFNl-C!@vvT@PRnVJPdpw4nK&K#>2o5;s|gu)LSrQ@-SpEXfrafIXec2__%@; z<nS;EfD{OVIQcvbf*_6%h*QMFAOzwFgE*x;48kCe2#8a`!yp3Uh=SZ#&BGuHabGQn z#m2!P1`=)nSp{}>6AyzJNOiq9NN+0-gE)vM0pfJ<Fi3znk|0hu4}&C#BL(90@i0h% zIMN`_L>>ld5Jv{YnZm;$1LDYnY?;o(U=6W+CJ%!wNLUV}W)2U79Ec+i;>_n^kOy(< z6+pa2JPZmTo+5~|l!rkP#8CoqR`4(=fjG(_&T1Y8We`UN#97C~paSBkf;by_7*s(V zH4tYD4}%(rqYmP1=V4F>aWp`jT|5jLAdV)8vlkSHY-}Lr{>d{r4A>6yFt{-snS7o@ zR`VDSgBF7}Na_R+gARmsiibfL!aBplpa)@{n=HzCL+(DqLw1G-j0^%<iDilUIf;4c z`oWdOC8@bQ438KdPv+)oV|&iS@Py&T=ILCHOq%xF8C*6qc<*Llj1=-^-NaxHMmC!m zY&J1K<ov*L0h1YdMe75>>|l1VB8XCRn7R<KTo?yf4q|}KCWdgZ`H^6`XaP2uq&e6E zh-3^{GEM+)Dnv6xG9E0MC;&FL9^pKQY!X;DMSv4*F5E#7$yBgpx&YTEh77QE5OX2E z$_7j33UI?DAxa>Ud0@!`0Uod<L<STd^<d8wf@O;Zcww>-1rV(zV97E8J|xKuSP+$i zB`XE^VUiFRRe_DI0ZY~i2!JJRU?jxOMzCakvw$F2JOf5TWLv<pZ303tVTg+$lI>v0 zP61)CBqZSBk=6y4>=6)wNkZfye(42E_6vxDC2ck_)I&lTB0B*rJ4rwcEDMo=n>!gS zIaNR$ENKId9-B=J)4)ER0hXL4AOV(y*a(-L4VIiMAPJU)1dusYXFbC_u<QZ>DX^?L zjD)yoAy{&;fHYV*18gbWMN7bv%LHU#k`Q@_&gEdql>)LbNr-nK5wi*`xkf;4Q#~jl zLG;;dVt~l51<S4%kcVl7corhL0W7&mKmjZXaV{tv!NIT@EV)%c5lPZ~69XjHwt*#g z2q=LiA@OZq50l*qmfbC&jFhh7nQf1N%3cP>Najrp9>I|;n;5)<BUv{w_ytF@ZDI%v zj%44&5E2~8v56rvI1-d0V}c_=SuZ{~5|qi3f+In>DK$6}ly9<wBSASNFE|pE7Ygfx zBSERYBsdb3zRQCnK`FT=I1-d*8-pW3iL)g*5|j+vgCju+t}8eal(c$-BSDF1LU1G~ zwM-6<1f`1^!I7X8FgrLB6xZ{DBSDe6FgOwveM^EPK@qh)I1&^ktAZm1<Tf#^4c3hW z1@ngBNKk-o4vqu`-L~LJP$2CLjs%6qp5V<4`!+H#FfcJ3n7m7HyZb>f8^m{GaA#m- zFlAt1n8Cozz`?-4prWNMvz_6PmhM)Dqgs+ITN#dPNwRKbIH@Jcww2+umL&UDhO;oU zb_gkZg3PjGU<2u7I1i>77*rT8FlaL{gT*c~Xfv>YS(g~J8Cb!r%M99Jl`0HZ7z`NL z85kL^GF+RSC@idXbOYFF2N)O_*cccY7#KVmKo;<T*{o0t7#XfZl^;h}?uS+R4XE;y z=*ok!D!&O;ei~hQ1Xks@7;aBa6qc$-I64-KI!=Z=40oYnZN|U~4jr*g4ErLznYH#s z+JF+LFSGOxhI=~bwlacEV`5-n;AD8h@Dyr>76TJFP`HE`wRSK(JHVjBh+88Q!%J|u LzG8R{rr!Vn6Rjji diff --git a/bin/de/deadlocker8/roadgame/tilepacks/TilePackOneTile.class b/bin/de/deadlocker8/roadgame/tilepacks/TilePackOneTile.class new file mode 100644 index 0000000000000000000000000000000000000000..3ba3204aaf69ea918c8d3f0f55a53162629f1077 GIT binary patch literal 769 zcmX^0Z`VEs1_l!bZFUAGMh3%_RQ;6H#FU);<m}WU3;m+}#FX^J+*JLN%$(GM#N_N^ z{gBL@)PTg~Z2!De5R;vOg^@vvcx{XfY&MyBnI(3N49psuVT=qc&iN^+91NU{3@jn3 z#U)$}%naN-46F=1j0~b0K3R!niTXK-dFlGWB}JKe>DHQI><oO241!>Z(vr*^eUHTA z4Bx~8E(Tr(0gy&EP6kE>Asz-{1`$RER*=Js85x8jCLwFE=423KkYHyJXJk;r<^G)f z^vq<imqRKGQh6988Kf8)_=Ef%UE(9+y+Zw*Lp=Tc7#TEth%>;Ni$R7#j-5dk<^izJ zJo8FY(^HFh7~~lg7#Y~h5_3vZ{nHp3#56oLA<jltW)1SF5)Xqig9;-9b3thdBZCEU zIQb`Kr6!kHBWZ++Ae#jhVr1a=$;?ajE6q(xEec6Y%1LEp5c0`SPRt2QEXoA&p@J+W z8JWe548}P92?}Pc>BE|lfh#z_v?w{%EfZwC2q@7Yr5`;|L^3EcFfuSRfB+){BLgb~ z8v`Q)I|BnlI0G{SBLf42qLvWHb_Oo3-3+{u+Zp(`G6-sIVG!KJAj-0XL3$g5V)#Y| z1_mYuRR#tIAqEx(1_o{hHU?e>K?Xhs1qOZwH3kL-9*98<>I@nT3=E76nqVDT001n; A-v9sr literal 0 HcmV?d00001 diff --git a/bin/de/deadlocker8/roadgame/tilepacks/TilePackTest2.class b/bin/de/deadlocker8/roadgame/tilepacks/TilePackTest2.class index 0fc0a42fa46fc5c2b515fc7e081a374a02c49833..3d4179dd775e273a740f495f86066a86bd6f3ff5 100644 GIT binary patch delta 145 zcmX@jwt`LI)W2Q(7#J8#81&c~m>3!KCp$7qOfFy&pJ@M;huhgPIK;;_-YwL}XR<Bh zF@AoiKuD0Mqo2FaWL2hloLLOa42%p63<i_WFzMTFWME)mV$fh<U=U+qWnf_7W?*CB mWe{ZGV^Cn=XV7O5V9;b>VBmr1V9;XFW?*1oWY7WY(ggsV_Zb5K delta 167 zcmZ3%cAAar)W2Q(7#J8#7z{UZX)$tg1o=C<#Jl>rOm<*Aro`>+7#!l`8t)eB<HN}y z#-Pc=pv54?$iM|w<s2FmHd&Nu9%n5BGXo<71B3nKJxuxmT3Z+dH!*0i>|l`I#-JF! zk%57Mi9wrzfkBFaje&uIn}LmimqCz$k3oTfpFy8NfWeMIkU@umfq@5N2!k$z9s>gd KBZEFzrvU&ASR2~_ diff --git a/bin/de/deadlocker8/roadgame/ui/Controller.class b/bin/de/deadlocker8/roadgame/ui/Controller.class index 6e265d0979e69ea2319d25d6a4e0a313b0dfb1d6..6ca952b4bd98b496615477761e4006d0ce8d23c6 100644 GIT binary patch delta 1968 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 delta 1814 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 diff --git a/bin/de/deadlocker8/roadgame/ui/Scoring.class b/bin/de/deadlocker8/roadgame/ui/Scoring.class new file mode 100644 index 0000000000000000000000000000000000000000..13872ad5e44dc7305784239d595934a8a23e0647 GIT binary patch literal 6984 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 literal 0 HcmV?d00001 diff --git a/src/de/deadlocker8/roadgame/logic/Board.java b/src/de/deadlocker8/roadgame/logic/Board.java index f95fe9d..92b6647 100644 --- a/src/de/deadlocker8/roadgame/logic/Board.java +++ b/src/de/deadlocker8/roadgame/logic/Board.java @@ -11,24 +11,24 @@ public class Board private ArrayList<Tile> tiles; public Board(TilePack tilePack) - { + { this.tilePack = tilePack; - this.tiles = new ArrayList<>(); + this.tiles = new ArrayList<>(); initBoard(); } - + private void initBoard() - { + { TileType tileType = getRandomTile(); if(tileType != null) - { + { Tile startTile = new Tile(tileType); startTile.setPosition(new Point2D(0, 0)); - - tiles.add(startTile); - } + + tiles.add(startTile); + } } - + public TilePack getTilePack() { return tilePack; @@ -38,7 +38,7 @@ public class Board { return tiles; } - + public Tile getTile(int x, int y) { for(Tile currentTile : tiles) @@ -48,15 +48,15 @@ public class Board return currentTile; } } - + return null; } - + public TileType getRandomTile() { return tilePack.getRandomTile(); } - + public boolean containsTileAtPosition(int x, int y) { for(Tile currentTile : tiles) @@ -66,108 +66,144 @@ public class Board return true; } } - + return false; } - + public ArrayList<Point2D> getFreeEdges(Tile tile, Tile playerTile) { ArrayList<Point2D> freeEdges = new ArrayList<>(); - + int x = (int)tile.getPosition().getX(); int y = (int)tile.getPosition().getY(); - - //North - if(!containsTileAtPosition(x, y-1)) - { - if(isCrossCheckValid(playerTile, x, y-1)) - { - freeEdges.add(new Point2D(x, y-1)); - } + + // North + if(!containsTileAtPosition(x, y - 1)) + { + if(isCrossCheckValid(playerTile, x, y - 1)) + { + freeEdges.add(new Point2D(x, y - 1)); + } } - - //East - if(!containsTileAtPosition(x+1, y)) + + // East + if(!containsTileAtPosition(x + 1, y)) { - if(isCrossCheckValid(playerTile, x+1, y)) + if(isCrossCheckValid(playerTile, x + 1, y)) { - freeEdges.add(new Point2D(x+1, y)); - } + freeEdges.add(new Point2D(x + 1, y)); + } } - - //South - if(!containsTileAtPosition(x, y+1)) - { - if(isCrossCheckValid(playerTile, x, y+1)) - { - freeEdges.add(new Point2D(x, y+1)); - } + + // South + if(!containsTileAtPosition(x, y + 1)) + { + if(isCrossCheckValid(playerTile, x, y + 1)) + { + freeEdges.add(new Point2D(x, y + 1)); + } } - - //West - if(!containsTileAtPosition(x-1, y)) + + // West + if(!containsTileAtPosition(x - 1, y)) { - if(isCrossCheckValid(playerTile, x-1, y)) + if(isCrossCheckValid(playerTile, x - 1, y)) { - freeEdges.add(new Point2D(x-1, y)); - } + freeEdges.add(new Point2D(x - 1, y)); + } } - + return freeEdges; } - + private boolean isCrossCheckValid(Tile tile, int x, int y) { - //North - if(containsTileAtPosition(x, y-1)) - { - if(!tile.getN().equals(getTile(x, y-1).getS())) + // North + if(containsTileAtPosition(x, y - 1)) + { + Tile nextTile = getTile(x, y - 1); + + if(tile.getN().equals(EdgeType.CASTLE) || tile.getN().equals(EdgeType.CASTLE_END)) + { + if(!(nextTile.getS().equals(EdgeType.CASTLE_END) || nextTile.getS().equals(EdgeType.CASTLE))) + { + return false; + } + } + else if(!tile.getN().equals(nextTile.getS())) { return false; - } + } } - - //East - if(containsTileAtPosition(x+1, y)) + + // East + if(containsTileAtPosition(x + 1, y)) { - if(!tile.getE().equals(getTile(x+1, y).getW())) + Tile nextTile = getTile(x + 1, y); + + if(tile.getE().equals(EdgeType.CASTLE) || tile.getE().equals(EdgeType.CASTLE_END)) + { + if(!(nextTile.getW().equals(EdgeType.CASTLE_END) || nextTile.getW().equals(EdgeType.CASTLE))) + { + return false; + } + } + else if(!tile.getE().equals(nextTile.getW())) { return false; - } + } } - - //South - if(containsTileAtPosition(x, y+1)) + + // South + if(containsTileAtPosition(x, y + 1)) { - if(!tile.getS().equals(getTile(x, y+1).getN())) + Tile nextTile = getTile(x, y + 1); + + if(tile.getS().equals(EdgeType.CASTLE) || tile.getS().equals(EdgeType.CASTLE_END)) + { + if(!(nextTile.getN().equals(EdgeType.CASTLE_END) || nextTile.getN().equals(EdgeType.CASTLE))) + { + return false; + } + } + else if(!tile.getS().equals(nextTile.getN())) { return false; - } + } } - - //West - if(containsTileAtPosition(x-1, y)) + + // West + if(containsTileAtPosition(x - 1, y)) { - if(!tile.getW().equals(getTile(x-1, y).getE())) + Tile nextTile = getTile(x - 1, y); + + if(tile.getW().equals(EdgeType.CASTLE) || tile.getW().equals(EdgeType.CASTLE_END)) + { + if(!(nextTile.getE().equals(EdgeType.CASTLE_END) || nextTile.getE().equals(EdgeType.CASTLE))) + { + return false; + } + } + else if(!tile.getW().equals(nextTile.getE())) { return false; - } + } } - + return true; } - + public ArrayList<Point2D> getPossibleLocations(Tile tile) { ArrayList<Point2D> possibleLocations = new ArrayList<>(); - + for(Tile currentTile : tiles) { possibleLocations.addAll(getFreeEdges(currentTile, tile)); - } - + } + return possibleLocations; - } + } public boolean tileCanBePlaced(Tile tile) { @@ -199,40 +235,40 @@ public class Board } return true; } - + public Dimension getDimension() { int minX = 0; int maxX = 0; int minY = 0; int maxY = 0; - + for(Tile currentTile : tiles) { if((int)currentTile.getPosition().getX() < minX) { minX = (int)currentTile.getPosition().getX(); } - + if((int)currentTile.getPosition().getX() > maxX) { maxX = (int)currentTile.getPosition().getX(); } - + if((int)currentTile.getPosition().getY() < minY) { minY = (int)currentTile.getPosition().getY(); } - + if((int)currentTile.getPosition().getY() > maxY) { maxY = (int)currentTile.getPosition().getY(); } - } - - return new Dimension(minX, maxX, minY, maxY); + } + + return new Dimension(minX, maxX, minY, maxY); } - + public void addTile(Tile tile) { tiles.add(tile); diff --git a/src/de/deadlocker8/roadgame/logic/CenterType.java b/src/de/deadlocker8/roadgame/logic/CenterType.java index 68afdd9..502c26a 100644 --- a/src/de/deadlocker8/roadgame/logic/CenterType.java +++ b/src/de/deadlocker8/roadgame/logic/CenterType.java @@ -2,5 +2,5 @@ package de.deadlocker8.roadgame.logic; public enum CenterType { - EMPTY, CASTLE, CASTLE_TRIANGLE, CHURCH, ROAD + EMPTY, CASTLE, CASTLE_TRIANGLE, CHURCH, ROAD, JUNCTION } \ No newline at end of file diff --git a/src/de/deadlocker8/roadgame/logic/EdgeType.java b/src/de/deadlocker8/roadgame/logic/EdgeType.java index 6f049c0..c3e4f85 100644 --- a/src/de/deadlocker8/roadgame/logic/EdgeType.java +++ b/src/de/deadlocker8/roadgame/logic/EdgeType.java @@ -2,5 +2,5 @@ package de.deadlocker8.roadgame.logic; public enum EdgeType { - GRASS, ROAD, CASTLE + GRASS, ROAD, CASTLE, CASTLE_END } \ No newline at end of file diff --git a/src/de/deadlocker8/roadgame/logic/ScorePosition.java b/src/de/deadlocker8/roadgame/logic/ScorePosition.java new file mode 100644 index 0000000..9c6e337 --- /dev/null +++ b/src/de/deadlocker8/roadgame/logic/ScorePosition.java @@ -0,0 +1,6 @@ +package de.deadlocker8.roadgame.logic; + +public enum ScorePosition +{ + NORTH, EAST, SOUTH, WEST, CENTER +} \ No newline at end of file diff --git a/src/de/deadlocker8/roadgame/logic/Textures.java b/src/de/deadlocker8/roadgame/logic/Textures.java index 5674851..c52bf9a 100644 --- a/src/de/deadlocker8/roadgame/logic/Textures.java +++ b/src/de/deadlocker8/roadgame/logic/Textures.java @@ -62,5 +62,5 @@ public class Textures public Image getImageCenterRoad() { return imageCenterRoad; - } + } } \ No newline at end of file diff --git a/src/de/deadlocker8/roadgame/logic/Tile.java b/src/de/deadlocker8/roadgame/logic/Tile.java index a7a52bc..af60820 100644 --- a/src/de/deadlocker8/roadgame/logic/Tile.java +++ b/src/de/deadlocker8/roadgame/logic/Tile.java @@ -4,35 +4,30 @@ import javafx.geometry.Point2D; public class Tile { + private TileType type; private EdgeType N; private EdgeType E; private EdgeType S; private EdgeType W; private CenterType C; private Point2D position; + //TODO use + private boolean marked; - public Tile(EdgeType N, EdgeType E, EdgeType S, EdgeType W, CenterType C, int x, int y) + public Tile(TileType type, int x, int y) { - this.N = N; - this.E = E; - this.S = S; - this.W = W; - this.C = C; + this.type = type; + this.N = type.getN(); + this.E = type.getE(); + this.S = type.getS(); + this.W = type.getW(); + this.C = type.getC(); this.position = new Point2D(x, y); } - public Tile(EdgeType N, EdgeType E, EdgeType S, EdgeType W, CenterType C) - { - this.N = N; - this.E = E; - this.S = S; - this.W = W; - this.C = C; - this.position = null; - } - public Tile(TileType type) { + this.type = type; this.N = type.getN(); this.E = type.getE(); this.S = type.getS(); @@ -65,6 +60,11 @@ public class Tile { return C; } + + public TileType getType() + { + return type; + } public Point2D getPosition() { diff --git a/src/de/deadlocker8/roadgame/logic/TileType.java b/src/de/deadlocker8/roadgame/logic/TileType.java index 3ce5f99..8e42011 100644 --- a/src/de/deadlocker8/roadgame/logic/TileType.java +++ b/src/de/deadlocker8/roadgame/logic/TileType.java @@ -3,11 +3,11 @@ package de.deadlocker8.roadgame.logic; public enum TileType { //only roads - ROAD_END(EdgeType.ROAD, EdgeType.GRASS, EdgeType.GRASS, EdgeType.GRASS, CenterType.EMPTY), + ROAD_END(EdgeType.ROAD, EdgeType.GRASS, EdgeType.GRASS, EdgeType.GRASS, CenterType.JUNCTION), ROAD_STRAIGHT(EdgeType.ROAD, EdgeType.GRASS, EdgeType.ROAD, EdgeType.GRASS, CenterType.EMPTY), ROAD_CURVE(EdgeType.ROAD, EdgeType.ROAD, EdgeType.GRASS, EdgeType.GRASS, CenterType.EMPTY), - ROAD_T_JUNCTION(EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, EdgeType.GRASS, CenterType.EMPTY), - ROAD_X_JUNCTION(EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, CenterType.EMPTY), + ROAD_T_JUNCTION(EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, EdgeType.GRASS, CenterType.JUNCTION), + ROAD_X_JUNCTION(EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, CenterType.JUNCTION), //roads with churches ROAD_END_CHURCH(EdgeType.ROAD, EdgeType.GRASS, EdgeType.GRASS, EdgeType.GRASS, CenterType.CHURCH), @@ -17,11 +17,11 @@ public enum TileType ROAD_X_JUNCTION_CHURCH(EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, CenterType.CHURCH), //single castles - CASTLE_SINGLE(EdgeType.CASTLE, EdgeType.GRASS, EdgeType.GRASS, EdgeType.GRASS,CenterType.EMPTY), - CASTLE_TWO_SINGLE_OPPOSITE(EdgeType.CASTLE, EdgeType.GRASS, EdgeType.CASTLE, EdgeType.GRASS, CenterType.EMPTY), - CASTLE_TWO_SINGLE_NEIGHBOR(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.GRASS, EdgeType.GRASS, CenterType.EMPTY), - CASTLE_THREE_SINGLE(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.GRASS, CenterType.EMPTY), - CASTLE_FOUR_SINGLE(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.CASTLE, CenterType.EMPTY), + CASTLE_SINGLE(EdgeType.CASTLE_END, EdgeType.GRASS, EdgeType.GRASS, EdgeType.GRASS,CenterType.EMPTY), + CASTLE_TWO_SINGLE_OPPOSITE(EdgeType.CASTLE_END, EdgeType.GRASS, EdgeType.CASTLE_END, EdgeType.GRASS, CenterType.EMPTY), + CASTLE_TWO_SINGLE_NEIGHBOR(EdgeType.CASTLE_END, EdgeType.CASTLE_END, EdgeType.GRASS, EdgeType.GRASS, CenterType.EMPTY), + CASTLE_THREE_SINGLE(EdgeType.CASTLE_END, EdgeType.CASTLE_END, EdgeType.CASTLE_END, EdgeType.GRASS, CenterType.EMPTY), + CASTLE_FOUR_SINGLE(EdgeType.CASTLE_END, EdgeType.CASTLE_END, EdgeType.CASTLE_END, EdgeType.CASTLE_END, CenterType.EMPTY), //special castles CASTLE_TRIANGLE(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.GRASS, EdgeType.GRASS, CenterType.CASTLE_TRIANGLE), @@ -30,16 +30,16 @@ public enum TileType CASTLE_U(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.GRASS, CenterType.CASTLE), //single castles with roads - CASTLE_SINGLE_ROAD_STRAIGHT(EdgeType.CASTLE, EdgeType.ROAD, EdgeType.GRASS, EdgeType.ROAD,CenterType.EMPTY), - CASTLE_SINGLE_ROAD_CURVE_RIGHT(EdgeType.CASTLE, EdgeType.ROAD, EdgeType.ROAD, EdgeType.GRASS,CenterType.EMPTY), - CASTLE_SINGLE_ROAD_CURVE_LEFT(EdgeType.CASTLE, EdgeType.GRASS, EdgeType.ROAD, EdgeType.ROAD,CenterType.EMPTY), - CASTLE_SINGLE_ROAD_T_JUNCTION(EdgeType.CASTLE, EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD,CenterType.EMPTY), - CASTLE_SINGLE_ROAD_END_IN_CASTLE(EdgeType.CASTLE, EdgeType.GRASS, EdgeType.ROAD, EdgeType.GRASS, CenterType.ROAD), - CASTLE_SINGLE_ROAD_CURVE_RIGHT_END_IN_CASTLE(EdgeType.CASTLE, EdgeType.ROAD, EdgeType.GRASS, EdgeType.GRASS,CenterType.ROAD), - CASTLE_SINGLE_ROAD_CURVE_LEFT_END_IN_CASTLE(EdgeType.CASTLE, EdgeType.GRASS, EdgeType.GRASS, EdgeType.ROAD,CenterType.ROAD), - CASTLE_TWO_SINGLE_OPPOSITE_ROAD_STRAIGHT(EdgeType.CASTLE, EdgeType.ROAD, EdgeType.CASTLE, EdgeType.ROAD, CenterType.EMPTY), - CASTLE_TWO_SINGLE_NEIGHBOR_ROAD_CURVE(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.ROAD, EdgeType.ROAD, CenterType.EMPTY), - CASTLE_THREE_SINGLE_ROAD_END(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.ROAD, CenterType.EMPTY), + CASTLE_SINGLE_ROAD_STRAIGHT(EdgeType.CASTLE_END, EdgeType.ROAD, EdgeType.GRASS, EdgeType.ROAD, CenterType.EMPTY), + CASTLE_SINGLE_ROAD_CURVE_RIGHT(EdgeType.CASTLE_END, EdgeType.ROAD, EdgeType.ROAD, EdgeType.GRASS, CenterType.EMPTY), + CASTLE_SINGLE_ROAD_CURVE_LEFT(EdgeType.CASTLE_END, EdgeType.GRASS, EdgeType.ROAD, EdgeType.ROAD, CenterType.EMPTY), + CASTLE_SINGLE_ROAD_T_JUNCTION(EdgeType.CASTLE_END, EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, CenterType.JUNCTION), + CASTLE_SINGLE_ROAD_END_IN_CASTLE(EdgeType.CASTLE_END, EdgeType.GRASS, EdgeType.ROAD, EdgeType.GRASS, CenterType.JUNCTION), + CASTLE_SINGLE_ROAD_CURVE_RIGHT_END_IN_CASTLE(EdgeType.CASTLE_END, EdgeType.ROAD, EdgeType.GRASS, EdgeType.GRASS, CenterType.ROAD), + CASTLE_SINGLE_ROAD_CURVE_LEFT_END_IN_CASTLE(EdgeType.CASTLE_END, EdgeType.GRASS, EdgeType.GRASS, EdgeType.ROAD, CenterType.ROAD), + CASTLE_TWO_SINGLE_OPPOSITE_ROAD_STRAIGHT(EdgeType.CASTLE_END, EdgeType.ROAD, EdgeType.CASTLE_END, EdgeType.ROAD, CenterType.EMPTY), + CASTLE_TWO_SINGLE_NEIGHBOR_ROAD_CURVE(EdgeType.CASTLE_END, EdgeType.CASTLE_END, EdgeType.ROAD, EdgeType.ROAD, CenterType.EMPTY), + CASTLE_THREE_SINGLE_ROAD_END(EdgeType.CASTLE_END, EdgeType.CASTLE_END, EdgeType.CASTLE_END, EdgeType.ROAD, CenterType.JUNCTION), //special castles with roads CASTLE_TRIANGLE_ROAD_CURVE(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.ROAD, EdgeType.ROAD, CenterType.CASTLE_TRIANGLE), diff --git a/src/de/deadlocker8/roadgame/tilepacks/TilePackOneTile.java b/src/de/deadlocker8/roadgame/tilepacks/TilePackOneTile.java new file mode 100644 index 0000000..9f3a1ed --- /dev/null +++ b/src/de/deadlocker8/roadgame/tilepacks/TilePackOneTile.java @@ -0,0 +1,16 @@ +package de.deadlocker8.roadgame.tilepacks; + +import java.util.HashMap; + +import de.deadlocker8.roadgame.logic.TileType; + +public class TilePackOneTile extends TilePack +{ + public TilePackOneTile() + { + super("Test"); + + tiles = new HashMap<>(); + tiles.put(TileType.ROAD_X_JUNCTION, 1); + } +} \ No newline at end of file diff --git a/src/de/deadlocker8/roadgame/tilepacks/TilePackTest2.java b/src/de/deadlocker8/roadgame/tilepacks/TilePackTest2.java index f3c6919..32ed8ce 100644 --- a/src/de/deadlocker8/roadgame/tilepacks/TilePackTest2.java +++ b/src/de/deadlocker8/roadgame/tilepacks/TilePackTest2.java @@ -11,8 +11,7 @@ public class TilePackTest2 extends TilePack super("Test 2"); tiles = new HashMap<>(); - tiles.put(TileType.ROAD_END, 1); tiles.put(TileType.CASTLE_FULL, 1); - tiles.put(TileType.ROAD_CURVE, 1); + tiles.put(TileType.CASTLE_TRIANGLE, 1); } } \ No newline at end of file diff --git a/src/de/deadlocker8/roadgame/ui/Controller.java b/src/de/deadlocker8/roadgame/ui/Controller.java index 529a117..4aff970 100644 --- a/src/de/deadlocker8/roadgame/ui/Controller.java +++ b/src/de/deadlocker8/roadgame/ui/Controller.java @@ -248,6 +248,8 @@ public class Controller return new ImageView(textures.getImageRoad()); case CASTLE: return new ImageView(textures.getImageCastle()); + case CASTLE_END: + return new ImageView(textures.getImageCastle()); default: return new ImageView(textures.getImageEmpty()); } diff --git a/src/de/deadlocker8/roadgame/ui/Scoring.java b/src/de/deadlocker8/roadgame/ui/Scoring.java new file mode 100644 index 0000000..6ca2364 --- /dev/null +++ b/src/de/deadlocker8/roadgame/ui/Scoring.java @@ -0,0 +1,328 @@ +package de.deadlocker8.roadgame.ui; + +import de.deadlocker8.roadgame.logic.Board; +import de.deadlocker8.roadgame.logic.CenterType; +import de.deadlocker8.roadgame.logic.EdgeType; +import de.deadlocker8.roadgame.logic.ScorePosition; +import de.deadlocker8.roadgame.logic.Tile; +import de.deadlocker8.roadgame.logic.TileType; +import de.deadlocker8.roadgame.tilepacks.TilePackOneTile; +import javafx.geometry.Point2D; + +public class Scoring +{ + private Tile tileToScore; + private Tile tile; + private Board board; + private int x; + private int y; + private int points; + + public Scoring(Tile tile, Board board) + { + this.tile = tile; + this.board = board; + Point2D position = tile.getPosition(); + this.x = (int)position.getX(); + this.y = (int)position.getY(); + points = 1; + tileToScore = tile; + this.tile = tile; + } + + private void setTile(Tile nextTile) + { + this.tile = nextTile; + this.x = (int)nextTile.getPosition().getX(); + this.y = (int)nextTile.getPosition().getY(); + } + + public int getScoreForTile(ScorePosition scorePosition) + { + switch(scorePosition) + { + case CENTER: + scoreCenter(); + break; + case NORTH: + scoreEdge(tile.getN(), scorePosition); + break; + case EAST: + scoreEdge(tile.getE(), scorePosition); + break; + case SOUTH: + scoreEdge(tile.getS(), scorePosition); + break; + case WEST: + scoreEdge(tile.getW(), scorePosition); + break; + default: + break; + } + + return points; + } + + private void scoreEdge(EdgeType edgeType, ScorePosition scorePosition) + { + switch(edgeType) + { + case CASTLE: + scoreCastle(scorePosition); + break; + case CASTLE_END: + scoreCastle(scorePosition); + break; + // TODO + case GRASS: + break; + case ROAD: + scoreRoad(scorePosition); + break; + default: + break; + } + } + + private void scoreCenter() + { + switch(tile.getC()) + { + case CASTLE: + scoreCastle(null); + break; + case CASTLE_TRIANGLE: + scoreCastle(null); + break; + case CHURCH: + scoreChurch(); + break; + case JUNCTION: + scoreRoad(null); + break; + case ROAD: + scoreRoad(null); + break; + default: + break; + } + } + + private void scoreChurch() + { + // North + points = board.containsTileAtPosition(x, y - 1) ? points += 1 : points; + + // North-East + points = board.containsTileAtPosition(x + 1, y - 1) ? points += 1 : points; + + // East + points = board.containsTileAtPosition(x + 1, y) ? points += 1 : points; + + // South-East + points = board.containsTileAtPosition(x + 1, y + 1) ? points += 1 : points; + + // South + points = board.containsTileAtPosition(x, y + 1) ? points += 1 : points; + + // South-West + points = board.containsTileAtPosition(x - 1, y + 1) ? points += 1 : points; + + // West + points = board.containsTileAtPosition(x - 1, y) ? points += 1 : points; + + // North-West + points = board.containsTileAtPosition(x - 1, y - 1) ? points += 1 : points; + } + + private void scoreRoad(ScorePosition scorePosition) + { + switch(scorePosition) + { + case NORTH: + if(board.containsTileAtPosition(x, y - 1)) + { + Tile nextTile = board.getTile(x, y - 1); + if(nextTile.getS().equals(tile.getN())) + { + if(nextTile.getC().equals(CenterType.EMPTY)) + { + if(nextTile.getN().equals(EdgeType.ROAD)) + { + setTile(nextTile); + scoreRoad(ScorePosition.NORTH); + return; + } + + if(nextTile.getE().equals(EdgeType.ROAD)) + { + setTile(nextTile); + scoreRoad(ScorePosition.EAST); + return; + } + + if(nextTile.getW().equals(EdgeType.ROAD)) + { + setTile(nextTile); + scoreRoad(ScorePosition.WEST); + return; + } + } + else + { + points++; + } + } + else + { + points++; + } + } + break; + case EAST: + if(board.containsTileAtPosition(x + 1, y)) + { + Tile nextTile = board.getTile(x + 1, y); + if(nextTile.getW().equals(tile.getE())) + { + if(nextTile.getC().equals(CenterType.EMPTY)) + { + if(nextTile.getN().equals(EdgeType.ROAD)) + { + setTile(nextTile); + scoreRoad(ScorePosition.NORTH); + return; + } + + if(nextTile.getE().equals(EdgeType.ROAD)) + { + setTile(nextTile); + scoreRoad(ScorePosition.EAST); + return; + } + + if(nextTile.getS().equals(EdgeType.ROAD)) + { + setTile(nextTile); + scoreRoad(ScorePosition.SOUTH); + return; + } + } + else + { + points++; + } + } + else + { + points++; + } + } + break; + case SOUTH: + if(board.containsTileAtPosition(x, y + 1)) + { + Tile nextTile = board.getTile(x, y + 1); + if(nextTile.getN().equals(tile.getS())) + { + if(nextTile.getC().equals(CenterType.EMPTY)) + { + if(nextTile.getE().equals(EdgeType.ROAD)) + { + setTile(nextTile); + scoreRoad(ScorePosition.EAST); + return; + } + + if(nextTile.getS().equals(EdgeType.ROAD)) + { + setTile(nextTile); + scoreRoad(ScorePosition.SOUTH); + return; + } + + if(nextTile.getW().equals(EdgeType.ROAD)) + { + setTile(nextTile); + scoreRoad(ScorePosition.WEST); + return; + } + } + else + { + points++; + } + } + else + { + points++; + } + } + break; + case WEST: + if(board.containsTileAtPosition(x - 1, y)) + { + Tile nextTile = board.getTile(x - 1, y); + if(nextTile.getN().equals(tile.getS())) + { + if(nextTile.getC().equals(CenterType.EMPTY)) + { + if(nextTile.getE().equals(EdgeType.ROAD)) + { + setTile(nextTile); + scoreRoad(ScorePosition.EAST); + return; + } + + if(nextTile.getS().equals(EdgeType.ROAD)) + { + setTile(nextTile); + scoreRoad(ScorePosition.SOUTH); + return; + } + + if(nextTile.getN().equals(EdgeType.ROAD)) + { + setTile(nextTile); + scoreRoad(ScorePosition.NORTH); + return; + } + } + else + { + points++; + } + } + else + { + points++; + } + } + break; + default: + break; + } + } + + private void scoreCastle(ScorePosition scorePosition) + { + + } + + public static void main(String[] args) + { + Board b = new Board(new TilePackOneTile()); + Scoring s = new Scoring(b.getTile(0, 0), b); + + Tile t = new Tile(TileType.ROAD_STRAIGHT); + t.setPosition(new Point2D(0, -1)); + if(!t.getN().equals(EdgeType.ROAD)) + { + t.rotateRight(); + } + + b.addTile(t); + System.out.println(b.getTile(0, 0)); + System.out.println(s.getScoreForTile(ScorePosition.NORTH)); + } +} \ No newline at end of file -- GitLab